Untiy 导入C# DLL、C\C++ DLL、OSX BUNDLE、iOS Android 等插件。 网上已经有很多类似的了。这里作为自己的笔记,记录如何做一个简单DLL(Dynamic Link Library)动态链接库。 C# DLL1. 创建类库文件,注意选择.NET最好不要大于3.5版本,因为Unity使用的mono版本为2.0,支持最多到.NET 3.5版本。2. 如下图,创建一个MyRandomClass,包含一个公有方法GetRandom(),获取C#自带随机数获取函数。3.编译生成.dll文件,地址看输出信息。4.生成两个文件。5.将其中.dll后缀文件直接拖入Unity项目中Assets\plugins目录,若无,自行创建。6.随便给个GameObject添加如下C#代码文件,用于测试是否成功调用C#DLL。7.运行三次,成功666。C++ DLL1.要注意一开始创建不是选DLL(通用Windows 8.1),那是用于Win 8.1和Windows Phone 8.1的。同样选择不大于.NET3.5的版本。2.创建向导注意选DLL和空项目(如果需要其他也可以不选)。3.代码如下,创建在源文件下。关于 __declspec(export)更多知识可以参考这里。这个功能是调用< algorithm>库里面std::max函数来返回两个整形最大值。4.同样编译生成一堆文件。5.同样只需要后缀为.dll的文件拖入项目。6.同样在Assets\Plugins目录下。7.测试脚本,需要声明DLL并带特性[DLLImport]。8.测试两个值。9.成功输出最大值。.BUNDLE 等其他外部库当需要适应多个平台,而且已经做好外部库,可以用下面的方法来根据平台而选中合适的外部库。可以直接在Unity的File->Build Settings选择平台来测试。选中的平台代码可以直接体现,在#if \ #enif语句正常显示的(非灰色的)。
遇到的错误在使用C++的DLL时,出现了一个错误:“Failed to load ‘Assets/Plugins/MyMaxNumberDLL.dll’, expected x64 architecture, but was x86 architecture. You must recompile your plugin for x64 architecture.”在stackoverflow有人回答说需要多导入除了.dll文件的另外4个文件,但无果,又设置了Unity中Build Settings中windows平台的Architecture,但也无果。最后发现原来是C++ DLL编译生成时选择了x86,改成x64重新编译导入就好了。 需要选择x64架构。 |
|
来自: 勤奋不止 > 《游戏引擎unity》