Unity3d-在Unity项目中使用Mono DLL(动态链接库)

最近研究了下Unity对Dll的调用。查了一些资料,总结如下。

为什么要用DLL?

答:

   1:你选择用来开发的编程语言并不被Unity支持(如 F#),这个时候你就可以考虑把这样的代码编译成DLL文件。

   2:你并不想让代码公开,只是想提供调用接口,那么DLL是一个很好的选择。

怎么做?

答:回答这个问题,首先要解决“怎么创建Unity3d 支持的DLL”和“Unity3D要怎么使用DLL.”

   1. 创建Unity3d支持的DLL

      (1)选择合适的编译器(因为Unity并不能确保支持所有编译器编译的.Net代码)。

            如:MonoDevelop  Visual Studio

      (2)确定代码是否基于Unity的API。

           如果DLL文件不包含基于Unity的API的代码,你仍然可以使用合适的编译选项把它编译成DLL文件。

    如果你想使用Unity的API,则你需要在编译器中引用Unity的DLL,有两个分别是UnityEngine.dll和UnityEditor.dll。  

           Mac系统上Unity的DLLS路径一般是:

                      /Applications/Unity/Unity.app/Contents/Frameworks/Managed/

           Windows系统中,DLLS能在Unity应用的安装文件夹中找到。路径一般是: 

                     C:\Program Files(x86)\Unity\Editor\Data\Managed

       最后,准确的编译DLL将取决于编译器的使用。

       例:Mono C#编译器的命令行,在Mac系统上mcs可能像下面这样

       mcs -r:/Applications/Unity/Unity.app/Contents/Frameworks/Managed/UnityEngine.dll -target:library ClassesForDLL.cs

 这里,-r指定了发布时被包含的库的路径,在这个例子中是UnityEngine的库。-target指定了发布时需要的文件;"library"被用于选着的发布一个DLL。最后,ClassForDLL.cs就是将要被编译的文件。 (假定这个文件是在当前工作目录,如果必要的话你可以指定文件使用的完整路径)。如果一切顺利,生成的DLL文件不久就会出现在源文件的同一文件夹下。

   2. Unity3d使用DLL文件

一旦编译好,DLL文件就可以像其他资源一样被拖进Unity的工程里面。DLL资源上有个小三角形,用来揭示库里面单独的一些类。继承自MonoBehaviour类可以像普通的脚本拖到游戏对象上。Non-MonoBehaviour类可以以平时的方式直接在其他脚本中使用。

    

    参考文献:http://docs.unity3d.com/Documentation/Manual/UsingDLL.html

 附上一个 Demo,点击下载 

1、本课程是一个干货课程,主要讲解如何封装服务器底层,使用Tcp/ip长连接,IDE使用vs2019 c++开发以及使用c++11的一些标准,跨平台windows和linux,服务器性能高效,单服务器压力测试上万无压力,服务器框架是经历过上线产品的验证,框架简单明了,不熟悉底层封装的人,半个小时就能完全掌握服务器框架上手写业务逻辑。2、本课程是一个底层服务器框架教程,主要是教会学员在windows或linux下如何封装一个高效的,避免踩坑的商业级框架,服务器底层使用初始化即开辟内存的技术,使用内存池,服务器运行期间内存不会溢出,非常稳定,同时服务器使用自定义哈希hashContainer,在处理新的连接,新的数据,新的封包,以及解包,发包,粘包的过程,哈希容器性能非常高效,增、删、查、改永远不会随着连接人数的上升而降低性能,增、删、查、改的复杂度永远都是恒定的O(1)。3、服务器底层封装没有使用任何第三方网络库以及任何第三方插件,自由度非常的高,出了任何BUG,你都有办法去修改,查找问题也非常方便,在windows下使用iocp,linux下使用epoll.4、讲解c++纯客户端,主要用于服务器之间通信,也就是说你想搭建多层结构的服务器,服务器与服务器之间使用socket通信。还可以使用c++客户端做压力测试,开辟多线程连接服务器,教程提供了压力测试,学员可以自己做压力测试服务器性能。5、赠送ue4和unity3d通信底层框架以及多人交互demo,登录,注册,玩家离开,同步主要是教会学员服务器与客户端如何交互。6、赠送c++连接mysql数据库框架demo,登录,注册,玩家离开数据持久化.7、服务器教程使用自定义通信协议,同时也支持protobuf,选择权在开发者自己手里,想用什么协议都可以,自由度高。8、服务器教程使用手动敲代码逐句讲解的方式开展教学课程。非喜勿喷,谢谢大家。9、服务器教程提供源码,大家可以在平台提供的地址下载或者联系我,服务器使用c++11部分标准,std::thread,条件变量,线程锁,智能指针等,需要学员具备一定c++知识,购买前请慎重考虑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值