C# 在Unity中创建dll对象的多个实例 我正在创建一个统一的插件,它将在一个开源C++音乐合成引擎()中链接。我通过一个dll访问它,它处理所有的音频处理工作。由于dll是一个音频引擎,它有许多复杂的部分,包括许多全局变量。为了能够在场景中的许多不同设置和不同空间点上进行合成,我希望能够创建多个对象,每个对象都有自己独立的音频引擎实例。特别是,能够访问多个最终声音输出将允许通过乘以采样值来使用Unity的空间化

C# 在Unity中创建dll对象的多个实例 我正在创建一个统一的插件,它将在一个开源C++音乐合成引擎()中链接。我通过一个dll访问它,它处理所有的音频处理工作。由于dll是一个音频引擎,它有许多复杂的部分,包括许多全局变量。为了能够在场景中的许多不同设置和不同空间点上进行合成,我希望能够创建多个对象,每个对象都有自己独立的音频引擎实例。特别是,能够访问多个最终声音输出将允许通过乘以采样值来使用Unity的空间化,c#,c++,audio,dll,multiple-instances,C#,C++,Audio,Dll,Multiple Instances,然而,目前这并不容易,默认情况下,C#和Unity不允许一个dll的多个实例(即使是从单独的文件加载)。即使我有两个不同的游戏对象加载dll,如果其中一个更改全局变量的值,它也会影响另一个 据我所知,DLL并不打算以这种方式使用,特别是在存在全局变量的情况下。不管怎样,我都可以用DLL实现这一点。我可以访问源代码,有没有其他我可能不知道的方法让它在Unity中工作 提前感谢任何帮助或建议。不应该有任何问题通过某种工厂函数创建一些C++对象的多个实例。但如果您使用全局变量,那么根据定义,它们是全局

然而,目前这并不容易,默认情况下,C#和Unity不允许一个dll的多个实例(即使是从单独的文件加载)。即使我有两个不同的游戏对象加载dll,如果其中一个更改全局变量的值,它也会影响另一个

据我所知,DLL并不打算以这种方式使用,特别是在存在全局变量的情况下。不管怎样,我都可以用DLL实现这一点。我可以访问源代码,有没有其他我可能不知道的方法让它在Unity中工作


提前感谢任何帮助或建议。

不应该有任何问题通过某种工厂函数创建一些C++对象的多个实例。但如果您使用全局变量,那么根据定义,它们是全局的,并且影响所有实例。如果这不是你想要的,那么需要删除全局变量。遗憾的是,删除全局变量将是一项艰巨的工作(即使这样也会非常困难),从那一点上,我感觉可能有更有效的方法来利用这段时间。也许是一个甚至不涉及DLL的解决方案。感谢您确认全局变量是问题所在。