【转】Unity脚本机制分析
来源:互联网 发布:mac合盖不休眠 编辑:程序博客网 时间:2024/05/01 23:34
有需要此软件的,可以留言给我。
目前我了解到使用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 initialization
void Start () {
}
// Update is called once per frame
void 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
- 【转】Unity脚本机制分析
- C#脚本实践(二): Unity脚本机制分析
- C#脚本实践(二): Unity脚本机制分析
- Unity脚本
- unity 脚本
- Unity-脚本
- Unity使用 UnityVS+VS2013 调试脚本(转)
- Unity脚本编绎
- Unity脚本周期关系
- unity脚本小总结
- unity脚本生命周期
- Unity脚本的属性
- unity 脚本生命周期
- unity脚本技术框架
- unity C#脚本规则
- Unity 脚本生命周期流程图
- Unity脚本执行顺序
- unity 脚本优化
- 把js转换为c#, 测试过可用
- 【转】iphone游戏策划经验谈
- 【转】Unity3D播放器插件研究
- 【读书笔记】理财类书籍(2013.8.24周末两天)
- JoshChen_php新手进阶高手不可或缺的规范介绍
- 【转】Unity脚本机制分析
- 【转】角色距离驱动动画脚本的改进
- 【转】物体变形代码
- 【转】Unity3d动画脚本 Animation Scripting(深入了解游戏引擎中的动画处理原理)
- Java中的简单排序:冒泡排序,选择排序,插入排序
- 【转】如何动态加载模型
- 【转】Unity3D结合XML载入和保存数据
- 【转】MessageBox脚本-U吧
- 【转】敌人跟随效果制作