我有一个非常简单的插件,来自这个例子的代码(https://docs.unity3d.com/Manual/NativePlugins.html)。我使用插件中的值更新UI文本字段。这在编辑器中按预期工作,但在构建独立应用程序时不起作用。我正在运行Ubuntu 15.10。
如何构建库:
gcc -shared PluginName.c -o PluginName.so
这是我迄今为止所做的尝试:
似乎很少有关于为Linux构建Unity插件的信息。端到端的例子很有用。任何有关此问题的帮助将不胜感激。
答案 0 :(得分:0)
正如预期的那样,最终解决起来有点模糊。我找到了遇到同样问题的人,他们能够帮助我。 Unity在Linux上加载库的方式有些奇怪,这就是解决方案。
将你的externs放在他们自己的静态C#类中,并有条件处理Unity库名称
using System;
using System.Runtime.InteropServices;
public static class Native
{
// The name of the external library containing the native functions
#if UNITY_EDITOR
private const string LIBRARY_NAME = "libSimplePlugin";
#else
private const string LIBRARY_NAME = "SimplePlugin";
#endif
[DllImport(LIBRARY_NAME)] public static extern float FooPluginFunction ();
}
调用您的函数
Native.FooPluginFunction ();
经验证可在Unity 5.3.6