unity3D游戏开发之解析script物件模型

unity3D游戏开发之解析script物件模型

ID:38785993

大小:28.50 KB

页数:5页

时间:2019-06-19

unity3D游戏开发之解析script物件模型_第1页
unity3D游戏开发之解析script物件模型_第2页
unity3D游戏开发之解析script物件模型_第3页
unity3D游戏开发之解析script物件模型_第4页
unity3D游戏开发之解析script物件模型_第5页
资源描述:

《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物

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。