欢迎来到天天文库
浏览记录
ID:38785993
大小:28.50 KB
页数:5页
时间:2019-06-19
《unity3D游戏开发之解析script物件模型》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、Unity是一个以Mono为基础的游戏开发环境,能同时支持三种脚本语言,包括C#、Javascript和Boo(类似Python)。由于Unity的开发工具暂时只有Mac的版本,所以暂时未能测试。但是它有很详细的文档,看上来很易用,所以就从文字上学习它的Script使用方式。根据一些Tutorial及参考手册,我用Graphviz画了一个(我认为)最核心的UML类别图:从这个类别图我们可以理解它的结构,及如何把一些常用功能映射至这系统里,以下分节讨论。--来自狗刨学习网GameObject和Component Unity的执行环境里,会有一个场境(Scene
2、)。这个场境包含一个GameObject物件的层阶(Hierarchy)。这个GameObject类别只是一个包容器,本身没有其他功能。使用者需要为GameObject加入各种Component物件来定义它的行为,而不是透过继承(inherit)GameObject来加入行为。一个物件可拥有多个Component物件,但有一些Component类别只可以在一个GameObject中有一个实体(instance)。MonoBehavior 我最感兴趣的,是使用者如何自行定义行为来做出不同的Gameplay。在Unity中,程式员编写的Script,其实也是Co
3、mponent的一种,所有的Script都会继承自MonoBehavior类别。以下是一个简单例子:varspeed=5.0;functionUpdate(){varx=Input.GetAxis("Horizontal")*Time.deltaTime*speed;varz=Input.GetAxis("Vertical")*Time.deltaTime*speed;transform.Translate(x,0,z);} 把这个Script加进一个GameObject的话(成为该GameObject的一个Component),Runtime会在每帧呼叫U
4、pdate(),玩家就可以用上下左右键控制那个GameObject在水平方向移动。。Transform每个能在三维空间里的GameObject都会有TransformComponent(未有详细看是否有一些GameObject可以省郄Transform,例如一个用来定义一个游戏任务的GameObject)。Transform包括位置、旋转及缩放。之前的例子已用了transformcomponent,不过它其实是Object类别的一个shortcut(快捷办法),这shortcut(快捷办法)其实等同:GetComponent(Transform).Translat
5、e(x,0,z)Component的连结在ScriptTutorial里的例子是写一个Follow的行为,拥有这个Component的GameObject会自动追踪(面对着)一个目标物件:vartarget:Transform;functionUpdate(){transform.LookAt(target);} 这个Script暴露了一个target变数(应当作成员变数吧),使用者可以把其他物件的变数assign至这个变数。这assignment(任务)有两种方法实现,其一是利用Unity的GUI工具把一个Component实体的变数(如Transform
6、)drag-and-drop至这个Component实体的target变数,而另一个方法是写代码:varnewTarget=GameObject.Find("Cube").transform;GetComponent(Follow).target=newTarget; 用代码就可以这样动态改变这些Component之间的联结方式。或者另一个说法是,GUI工具是可以设定起始的联结,而Script可以在执行期改变这些联结。渲染一个可被渲染的GameObject需要有以几个Components,以Mesh为例:1.MeshFilter:用来找出现时的Mesh物件2
7、.MeshRenderer:用来渲染Mesh的Component,会参考一个material物件要注要Mesh和Material物件并非Component,它们是继承自Object的。但是你仍然可以去动态改变它们。但由于它们不是Component,所以可以被分享,例如多个GameObject的MeshRenderer都参考到同一个Material。一个Component实体只属于一个GameObject(所以在UML中我用黑色钻石表示Composition)。而Light和Camera则是Component,这意未着可以简单的设定联结。分析 Unity的Sc
8、ript物
此文档下载收益归作者所有