目前我了解到使用Mono做脚本的只有Unity和SecondLife, SpringEngine也有个扩展实现.
当然, 最成熟的还是Unity
于是下载了一个看看它的脚本是怎么应用的
它的编辑器界面很简洁, 实际操作了一下才发现所有的功能其本上都是由inspector面板完成
所有的GameObject都是由Component所组成, 如Mesh/Physics/Audio/Script等等
脚本都是从MonoBehaviour派生的一个实现, 在其中实现上层定义的各种接口, 如Start/Update等
脚本中定义的变量会直接反映到Inspector面板上, 如

这得益于.Net语言反射机制的强大, 也是我为什么使用.net开发编辑器的原因之一
之前还一直在想Unity是怎么动态载入脚本的, 因为mono里我只找到一个mono_domain_assembly_open的函数
在看了下测试工程的文件夹结构, 发一个文件: New Unity Project/Library/ScriptAssemblies/Assembly-CSharp.dll
看来这

本文探讨了Unity如何利用Mono进行脚本实现,重点在于MonoBehaviour派生类与Unity引擎的交互。通过.NET反射机制,脚本中的变量能在Inspector面板显示。Unity的脚本流程包括C++引擎底层、Mono接口声明、脚本基类继承及后台编译更新。揭示了Unity动态载入脚本的关键在于Library/ScriptAssemblies/Assembly-CSharp.dll。
最低0.47元/天 解锁文章
1242





