全部博文(372)
2012年(372)
分类: 虚拟化
2012-03-05 14:24:45
1. 脚本的基础知识
脚本中的对象是本地对象(内存中实际分配的c++对象)的映射。在游戏的生命周期的某个时刻,会调用脚本中对应的方法。比如在游戏的主循环的Updata中,会遍历所有的GameObject。执行绑定在游戏对象上的脚本组件的对应的Update方法。同时脚本中也索引了需要的内存中实际对象的引用。可以双向访问。优点:1.不用编译。2.安全。3写起来简单。缺点:1.性能慢2.调试不方便。
2. 脚本的架构
1. (此处有一个图,按模块整理了所有的对象和他们之间的关系待以后都看完了以后补上)
3. 主要的几个基类解释:
Object :
1. inspector面板中引用类型的属性的值均继承自Object类。通过拖动可以设置一个Instance到对应的属性当中。
2.Object有Destroy方法可以删除游戏对象,组件,资源等一系列继承自Object的子类。
3. Instantiate方法可以返回一个Object的clone.
4. FindObjectsOfType 可以查找某一种类型的对象。FindObjectOfType获取某类型的第一个对象。(官方推荐用单例代替)
5. hideFlags 是否隐藏。
GameObject :
1. active标识物体是否处于活动状态,如果为非活动状态,对象系统将不会在“流程中处理该对象”比如渲染以及其他组件的逻辑。
2. 7.对象有Tag标签,可以根据标签查找对象。FindWithTag。也可以根据名字查找find.名字在Object积累中被定义。
3. 通过菜单选择或者脚本中调用AddComponent 可以给游戏对象增加一个组件。
4. 游戏中物体的容器。可以添加组件到游戏物体中给物体添加功能。
5. GameObject中保存了关联在该GameObject上的常用组件的引用(如果没有则返回null)。
6. GetComponent 相关3个方法可以获得这个GameObject以及祖先和子孙上的组件。
7. SendMessage可以调用该物体绑定的所有脚本的某方法。
Conponent :
1. 组件是游戏功能的零件,可以关联到游戏对象上为对象添加该组件的功能。(AddComponent)。
2. 组件有相应的属性。(引用属性和值属性)。可以很方便的通过inspector修改。
3. gameObject属性保存了该组件所关联的游戏对象。tag是关联的游戏对象的标签。
4. GetComponent(type) 获关联的游戏物体的其他类型的组件组件。
5. SendMessage 调用游戏对象关联的脚本组件中的方法。
MonoBehaviour :
1. 脚本是组件的一种,所有C#脚本继承自MonoBehaviour。脚本可以看成是自定义的一个组件。可以将共有属性暴露给inspector做修改。
2. Invoke定时调用方法,InvokeRepeating定时循环调用某方法取消某个计时。
3. 在游戏的生命周期中的对应的时刻会调用脚本中相应的方法。比如Update. OnMouseDown,OnPreRender。
4. 在学习完常用组件的使用以后。可以学习这些“事件函数”和对应组件的使用。
4. 总结:
本篇笔记主要记录了脚本的主要的几个基类的用法和相互的关系。弄清楚他们的详细用法可以更好的学习其他的内容。后续的笔记中会继续学习资源和Prefabs、物理系统、粒子系统、渲染、动画、gui、地形、以及他们所对应的组件。