Unity3D脚本中文教程

上传人:汽*** 文档编号:506428978 上传时间:2022-07-27 格式:DOC 页数:15 大小:32.50KB
返回 下载 相关 举报
Unity3D脚本中文教程_第1页
第1页 / 共15页
Unity3D脚本中文教程_第2页
第2页 / 共15页
Unity3D脚本中文教程_第3页
第3页 / 共15页
Unity3D脚本中文教程_第4页
第4页 / 共15页
Unity3D脚本中文教程_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《Unity3D脚本中文教程》由会员分享,可在线阅读,更多相关《Unity3D脚本中文教程(15页珍藏版)》请在金锄头文库上搜索。

1、Unity3D脚本中文教程Part1 一、 脚本概览 这是一个关于Unity内部脚本如何工作的简单概览。 Unity内部的脚本是通过附加自定义脚本对象到游戏物体组成的。在脚本对象内部不同志的函数被特定的事件调用.最常用的列在下面 Update 这个函数在渲染一帧之前被调用这里是大部分游戏行为代码被执行的地方除了物理代码。 FixedUpdate 这个函数在每个物理时间步被调用一次这是处理基于物理游戏的地方. 在任何函数之外的代码 在任何函数之外的代码在物体被加载的时候运行这个可以用来初始化脚本状态. 注意文档的这个部份假设你是用Javascript参考用C编写获取如何使用C和Boo编写脚本的信

2、息。 你也能定义事件句柄它们的名称都以On开始例如OnCollisionEnter为了查看完整的预定义事件的列表参考MonoBehaviour 文档。 概览常用操作 大多数游戏物体的操作是通过游戏物体的Transform或Rigidbody来做的在行为脚本内部它们可以分别通过transform和rigidbody访问因此如果你想绕着Y轴每帧旋转5度你可以如下写 function Update transform.Rotate050 如果你想向前移动一个物体你应该如下写 function Update transform.Translate002 概览跟踪时间 Time类包含了一个非常重要的类变

3、量称为deltaTime这个变量包含从上一次调用Update或FixedUpdate根据你是在Update函数还是在FixedUpdate函数中到现在的时间量. 所以对于上面的例子修改它使这个物体以一个恒定的速度旋转而不依赖于帧率 function Update transform。Rotate05Time。deltaTime0 移动物体 function Update transform. Translate 0 02Time.deltaTime 如果你加或是减一个每帧改变的值你应该将它与Time。deltaTime相乘。当你乘以Time.deltaTime时你实际的表达我想以10米/秒移动

4、这个物体不是10米/帧.这不仅仅是因为你的游戏将独立于帧而运行同时也是因为运动的单位容易理解。 米/秒 另一个例子如果你想随着时间增加光照的范围.下面的表达式以2单位/秒改变半 径. function Update light。range 2。0 Time.deltaTime 当通过力处理刚体的时候你通常不必用Time.deltaTime因为引擎已经为你考虑到了这一点。 概览访问其他组件 组件被附加到游戏物体附加Renderer到游戏物体使它在场景中渲染附加一个Camera使它变为相机物体所有的脚本都是组件因为它们能被附加到游戏物体。 最常用的组件可以作为简单成员变量访问 Component

5、可如下访问 Transform transform Rigidbody rigidbody Renderer renderer Camera camera only on camera objects Light light only on light objects Animation animation Collider collider 等等。 对于完整的预定义成员变量的列表.查看ComponentBehaviour和MonnoBehaviour类文档.如果游戏物体没有你想取的相同类型的组件上面的变量将被设置为null。 任何附加到一个游戏物体的组件或脚本都可以通过GetComponen

6、t访问。 transform.Translate030 /等同于 GetComponentTransform.Translate0 1 0 注意transfom和Transform之间大小写的区别前者是变量小写后者是类或脚本名称大写.大小写不同使你能够从类和脚本名中区分变量. 应用我们所学你可以使用GetComponent找到任何附加在同一游戏物体上的脚本和组件请注意要使用下面的例子能够工作你需要有一个名为OtherScript的脚本其中包含一个DoSomething函数。OtherScript脚本必须与下面的脚本附加到相同的物体上。 /这个在同一游戏物体桑找到名为OtherScript的脚本

7、 /并调用它上加的DoSomething function Update otherScript GetComponentOtherScript otherScript.DoSomething 概览访问其它游戏物体 大多数高级的代码不仅需要操作一个物体Unity脚本接口有各种方法来找到并访问其他游戏物体和组件。在下面我们假定有个一名为OtherScriptjs的脚本附加到场景的游戏物体上。 var foo 5 function DoSomething param : String printparam quot with foo: quot foo 1。通过检视面板赋值引用 你可以通过检视面板

8、赋值变量到任何物体 /变换拖动到target的物体 var target : Transform function Update target.Translate0 1 0 你也可以在检视面板中公开到其他物体的引用下面你可以拖动一个包含的游戏物体到检视面板中的target槽. /设置在检视面板中赋值的target变量上的foo调用DoSomething var target : OtherScript function Update /设置target物体的foo变量 target.foo 2 / 调用target上的DoSomething target。DoSomethingquotHell

9、oquot 2。通过物体层次定位 对于一个已经存在的物体可以通过游戏物体的Transform组件来找到子和父物体 /找到脚本所附加的 /游戏物体的子Hand transform.FindquotHandquot。Translate0 1 0 一旦在层次视图中找到这个变换你可以使用GetComponent来获取其他脚本 /找到名为Hand的子 /在附加到它上面的OtherScript中设置foo为2 transform。FindquotHandquot.Translate0 1 0 /找到名为Hand的子 /然后应用一个力到附加在hand上的刚体 transform。FindquotHandqu

10、ot.GetComponentOtherScript.DoSomethingquotHelloquot / 找到名为Hand的了 / 然后应用一个力到附加在hand上的刚体 transform.FindquotHandquot。rigidbody.AddForce0 10 0 你可以循环所有的子 /变换的所有子向上移动10个单位 for var child : Transform in transform child。Translate0 1 0 参考Transform类文档获取更多信息. Part 2 3.根据名称或标签定位。 你可以使用GameObject.FindWithTag和Game

11、Object.FindGameObjectsWithTag搜索具有特定标签的游戏物体使用GameObject。Find根据名称查找物体。 function Start / 按照名称 var go GameObject。FindquotSomeGuyquot go.transform。Translate0 1 0 / 按照标签 var player GameObject。FindWithTagquotPlayerquot player.transform。Translate0 1 0 你可以在结果上使用GetComponent在找到的游戏物体上得到任何脚本或组件. function Start

12、/ 按名称 var go GameObject.FindquotSomeGuyquot go。GetComponentOtherScript。DoSomething / 按标签 var player GameObject。FindWithTagquotPlayerquot player.GetComponentOtherScript.DoSomething 一些特殊的物体有快捷方式如主相机使用Camera。main。 4。作为参数传递 一些事件消息在事件包含详细信息。例如触发器事件传递碰撞物体的Collider组件到处理函数. OnTriggerStay给我们一个到碰撞器的引用。从这个碰撞器我

13、们可以获取附加到其上的刚体. function OnTriggerStay other : Collider / 如果另一个碰撞器也有一个刚体 / 应用一个力到它上面 if other。rigidbody other.rigidbody。AddForce0 2 0 或者我们可以通过碰撞器获取附加在同一个物体上的任何组件。 function OnTriggerStay other : Collider / 如果另一个碰撞器附加了OtherScript / 调用它上面的DoSomething / 大多数时候碰撞器不会附加脚本 / 所以我们需要首先检查以避免null引用异常 if other.Get

14、ComponentOtherScript other。GetComponentOtherScript.DoSomething 注意通过上述例子中的other变量你可以访问碰撞物体中的任何组件。 5。一种类型的所有脚本 使用Object。FindObjectsOfType找到所有具有相同类或脚本名称的物体或者使用Object。FindObjectOfType.找到这个类型的第一个物体。 function Start / 找到场景中附加了OtherScript的任意一个游戏物体 var other : OtherScript FindObjectOfTypeOtherScript other。Do

15、Something 概览向量 Unity使用Vector3类同一表示全体3D向量3D向量的不同组件可以通过想xy和z成员变量访问。 var aPosition : Vector3 aPosition.x 1 aPosition.y 1 aPosition。z 1 你也能够使用Vector3构造函数来同时初始化所有组件。 var aPosition Vector31 1 1 Vector3也定义了一些常用的变量值。 var direction Vector3。up / 与 Vector30 1 0相同 单个向量上的操作可以使用下面的方式访问 someVector。Normalize 使用多个向量

16、的操作可以使用Vector3类的数 theDistance Vector3。DistanceoneVector otherVector 注意你必须在函数名之前写Vector3来告诉JavaScript在哪里找到这个函数这适用于所有类函数 你也可以使用普通数学操作来操纵向量。 combined vector1 vector2 查看Vector3类文档获取完整操纵和可用属性的列表。 概览成员变量 amp 全局变量变量 定义在任何函数之外的变量是一个成员变量.在Unity中这个变量可以通过检视面板来访问任何保存在成员变量中的值也可以自动随工程保存。 var memberVariable 0.0 上面的变量将在检视面板中显示为名为quotMember Variablequot的数值属性。 如果你设置变量的类型为一个组件类型例如Transform Rigidbody Collider任何脚本名称等等然后你可以在检视面板中通过拖动一个游戏物体来设置它们。 var enemy : Transform function Upd

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号