【转】Unity脚本机制分析
2013-08-26 11:31
141 查看
有需要此软件的,可以留言给我。目前我了解到使用Mono做脚本的只有Unity和SecondLife, SpringEngine也有个扩展实现.当然, 最成熟的还是Unity于是下载了一个看看它的脚本是怎么应用的它的编辑器界面很简洁, 实际操作了一下才发现所有的功能其本上都是由inspector面板完成所有的GameObject都是由Component所组成, 如Mesh/Physics/Audio/Script等等脚本都是从MonoBehaviour派生的一个实现, 在其中实现上层定义的各种接口, 如Start/Update等 脚本中定义的变量会直接反映到Inspector面板上, 如using UnityEngine;using System.Collections;public class RotateBehaviourScript : MonoBehaviour {public float speed = 5.0f;// Use this for initializationvoid Start () {}// Update is called once per framevoid Update () {transform.Rotate(0, speed * Time.deltaTime, 0);}}
这得益于.Net语言反射机制的强大, 也是我为什么使用.net开发编辑器的原因之一 之前还一直在想Unity是怎么动态载入脚本的, 因为mono里我只找到一个mono_domain_assembly_open的函数 在看了下测试工程的文件夹结构, 发一个文件: New Unity Project\Library\ScriptAssemblies\Assembly-CSharp.dll 看来这个就是脚本编译后的东西. 用Reflector查看了一下, 果然我写的两个测试脚本都在其中:
另外, UnityEngine.dll里的类全是InternalCall的声明, 这正好印证了上一篇C++导出到Mono的调用猜想 知道了这个, Unity的脚本机制也就差不多了: 1. C++实现引擎底层 2. Mono这边把需要暴露给脚本的类/方法/变量都再声明一次(自动生成应该也是可行的) 3. 定义脚本基类, 所有脚本对象都从它派生 4. 编辑器中发现有脚本更改就在后台重新编译assembly dll, 编译完了用Mono API重新载入 嗯, 中间那一层还是有不少需要实现的东西~ 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/xoyojank/archive/2010/11/28/6041310.aspx
这得益于.Net语言反射机制的强大, 也是我为什么使用.net开发编辑器的原因之一 之前还一直在想Unity是怎么动态载入脚本的, 因为mono里我只找到一个mono_domain_assembly_open的函数 在看了下测试工程的文件夹结构, 发一个文件: New Unity Project\Library\ScriptAssemblies\Assembly-CSharp.dll 看来这个就是脚本编译后的东西. 用Reflector查看了一下, 果然我写的两个测试脚本都在其中:
另外, UnityEngine.dll里的类全是InternalCall的声明, 这正好印证了上一篇C++导出到Mono的调用猜想 知道了这个, Unity的脚本机制也就差不多了: 1. C++实现引擎底层 2. Mono这边把需要暴露给脚本的类/方法/变量都再声明一次(自动生成应该也是可行的) 3. 定义脚本基类, 所有脚本对象都从它派生 4. 编辑器中发现有脚本更改就在后台重新编译assembly dll, 编译完了用Mono API重新载入 嗯, 中间那一层还是有不少需要实现的东西~ 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/xoyojank/archive/2010/11/28/6041310.aspx
相关文章推荐
- C#脚本实践(二): Unity脚本机制分析
- C#脚本实践(二): Unity脚本机制分析
- iOS平台Unity引擎的IL2CPP机制分析及安全性评估
- Unity SteamVR插件详解一:SteamVR_Controller脚本分析+Vive控制器功能开发
- 分析用Python脚本关闭文件操作的机制
- Unity Mono运行机制分析及内存优化
- Unity属性——AddComponentMenu 字面理解:添加 组件选项菜单 分析:可能是添加一个脚本或者组件到一个物体上 验证: 新建一个脚本:AttributeTest 提示:添
- hive自定义mapred脚本运行机制分析
- 分析用Python脚本关闭文件操作的机制
- unity 基于Assetbundle的更新机制的设计
- Java IO工作机制分析
- Oracle logmnr工具分析日志脚本
- Unity 3D学习---脚本属性封装、继承、方法隐藏
- Linux中Workqueue机制分析
- Map集合的存储机制,源码分析以及冲突解决
- P2Psim分析笔记(7)-RPC机制
- android的消息处理机制(图+源码分析)——Looper,Handler,Message
- 从键盘驱动分析wince中断机制
- OGRE分析之消息机制
- Linux 线程实现机制分析