
我们目前正在测试Unity中声音繁重的游戏项目的构想。 我非常喜欢PureData进行音频开发,因此我认为让LibPD在Unity中工作是值得的。 原来这是“咳嗽”的乐趣 。 但是…它现在正在起作用,我的痛苦可能是您的收获。 这是编辑的重点。
将PD放入Unity libPD4Unity,uPD和Kalimba的主要方法有3种。
我从uPD开始-主要是因为留言板聊天表明这是上手的最简单方法。 而且,uPD比libPD4Unity具有更全面的功能-在后者之上构建。 那么,明确的赢家? 不幸的是,并非如此-这些完整的功能并没有太多的文档记录方式,而且由于uPD旨在完全替代Unity(豪华记录的)声音系统,因此感觉倒退了一步。 另外,我不确定我是否需要所有这些功能。 看看这些例子,我很快就觉得从更轻量的东西开始会更快乐。 建立我需要的元素,正确理解所有元素。

最重要的是,uPD在我的系统上似乎有些崩溃。 特别是它的“序列”功能很容易崩溃。 我不能完全确定序列是否是我会经常使用的功能-我没有进行足够长时间的研究来判断-可能可以在调试器中花费一些时间来跟踪问题。 无论如何,这种不稳定性使我意识到我将要构建的抽象的漏洞。 所以我回到了libPD4Unity的基础知识。
为了使此功能适用于64位,我需要编译相关的64位dll,因为该软件包是开箱即用的32位。 这里有一个执行此操作的指南-以uPD为中心,如果您坚持使用libPD4Unity,则只需执行一些步骤。 即编译.dll并将其粘贴到项目中的步骤。 我再次略微偏离了他们的过程。 我在Windows上,使用MSYS2和MINGW终端。 因此,我的过程(从准备就绪的MSYS2环境开始)如下所示:
- 从git中拉出LibPD和LibPD4Unity
- 在LibPD文件夹中,切换到当前分支:
$git checkout 0.10.0
- 更新子模块:
$git submodule init
然后$git submodule update
- 编译dll。 我在打开UTIL,MULTI和EXTRA选项的情况下构建了csharplib。 开箱即用的libPD非常轻巧,我知道我会想要PD的大量额外对象的子集,并且我们可能想运行多个实例-为避免日后混乱,我将在适当的地方进行开发。 如果以后感觉太重了,或者我们制作了手机版本,我们将重新编译。 因此:
$make UTIL=true MULTI=true EXTRA=true csharplib
- 将所需的.dll文件(即
libpd/libs/libpdcsharp.dll
和libpd/libs/mingw64/libwinpthread-1.dll
)复制并粘贴到Assets \ Plugins文件夹中。 - 从理论上讲,我已经完成了—加载libPD4Unity项目,查看示例,开始在PD中构建游戏反应性合成器!
- 不行 在这一点上,我遇到了另一个障碍。 演示场景第一次运行良好,但是如果我停止运行场景并重新启动,它将崩溃。 幸运的是,我在这里找到了一种解决方法,我不喜欢这种解决方法-我丢失了来自PD的消息-但它使我得以工作。
那里有它。 从那里开始,如果您不熟悉PD和Unity,那么本教程可能会有助于您找到解决方案的方法
在Twitter上分享在Facebook上分享在Google+上分享
最初发布于 danbennettdev.github.io 。