我们几乎可以编写任何用途的程序集,就像用C#开发.net类库一样。不过需要注意的是,如果要编写从Unity继承的类(比如从MonoBehaviour派生的组件等等),则不能使用namespace,目前的Unity不支持,用了编译报错。
虽然不能使用namespace,但我实际测试后发现若新项目中创建了与引用的程序集同名的类,Unity编译并不会报错,而且实际执行也很正常。由于没有介绍Unity内部如何编译的资料,我们还是尽量不要重名吧。
2、将程序集DLL放置到目标Unity工程的Asset目录下(这点很重要)。
虽然可以用VisualStudio编写Unity代码,但此滑实际上Unity生成游戏时还要自己再编译一遍。因此,在VS中的引用设置不能被Unity所使用。我曾经尝试过把要引用的程序集放在GAC中也不行。正确的做法是把dll放在Asset下,Unity能很好地识别它。
如果我们把乱扒孝组件编写在程序集中的话,展开程序集就能看到这些组件,甚至可以直接把它们拖动到GameObject中,很强大吧!
3、在目标工程中添加引用,编写代码。
这个没哗稿什么好说的。
4、测试通过,成功!
DLL —— Dynamic Link Library(动态链接库文件),这里以Window平台塌亏为例。
Unity支持的两种语言生成的DLL库(C++、C#),这里以C#为例,C++网上可以搜索很详细的资料。
1) 添加引用关系
如果有对UnityEngine、UnityEditor的引用御衫辩,需要先添加引用关系。
路径通常位于Unity安装目录下的Editor/Data/Managed路径下。
2) 生成DLL文件
建立项目时镇缺,选择“类库”。目标框架.Net Framework的版本,只能选择3.5及以下版本。
3) 在项目中引用DLL文件
Unity会自动加载相应的DLL文件,所以DLL文件只要存放于Assets目录下即可,当然为了统一管理,一般放在Plugins目录下。
这里有一个需要注意的点,如果DLL文件放在Editor下,那么只能是Editor目录下的C#文件才可以引用,如果想在项目运行时的C#中进行引用,那DLL文件就不能放在Editor目录下。以上目录只与名字相关,与层级无关,路径可以是Assets/a/b/c/d/e/../XX.DLL
放置好DLL后,注意刷新Visual Studio中的解决方案。
0人赞 添加讨论(0)
暂无评论 :)
请点击输入图片描述
啦啦啦
4楼 · 2021-05-08 14:11
托管代码是一microsoft的中间语言(IL),它不直接运行在机器上而是运行在.net的CLR中。IL被封装在一个叫程序集(assembly)的文件中,一般输出形式为.dll或.exe文件,程序集中包含了描述你所创建的类,方法和属性(例如安全需求)的所有元数据。
当程序集中某些方法被调用的时候,运行库把具体的方法编译成适合本地计算机运行的机械码。(这就是即时编译) 随着程序集的运行,运行库会持续地提供各种服务,例如自动垃圾回收、运行库类型检查和安全支持等。这些服务使得能编译成IL的源代码具有跨平台的特性。我们常用的C#只能编译成托管代码,而C++可以编译成托管代码和非托管代码。非托管代码就是直接编译成目标计算机的机器码。
如薯前果实慧旁在运行模式下,那么给实例物体绑定脚本是必须的。因为你获取鼠标的位置是在继承自MonoBehaviour 的脚本中获取的,而这个脚本必须拖到物体上才能执行。如果你不想编辑时就把这个脚本拖上物体,你可以用AddCommpent()方法在运行时动前手橡态添加对应脚本,完了后用Destroy()方法删除
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)