一、脚本概览这是一个关于 Unity 内部脚本如何工作的简单概览。 Unity 内部的脚本,是通过附加自定义脚本对象到游戏物体组成的。在脚本对象内部不同志的函数被特定的事件调用。最常用的列在下面: Update : 这个函数在渲染一帧之前被调用,这里是大部分游戏行为代码被执行的地方,除了物理代码。 FixedUpdate : 这个函数在每个物理时间步被调用一次,这是处理基于物理游戏的地方。在任何函数之外的代码: 在任何函数之外的代码在物体被加载的时候运行,这个可以用来初始化脚本状态。注意:文档的这个部份假设你是用 Javascript ,参考用 C#编写获取如何使用 C# 和 Boo 编写脚本的信息。你也能定义事件句柄,它们的名称都以 On 开始,(例如 OnCollisionEnter ),为了查看完整的预定义事件的列表,参考 MonoBehaviour 文档。概览:常用操作大多数游戏物体的操作是通过游戏物体的 Transform 或 Rigidbody 来做的,在行为脚本内部它们可以分别通过 transform 和 rigidbody 访问,因此如果你想绕着 Y轴每帧旋转 5 度, 你可以如下写: function Update () { (0,5,0); } 如果你想向前移动一个物体,你应该如下写: function Update () { (0,0,2); } 概览:跟踪时间 Time 类包含了一个非常重要的类变量,称为 deltaTime ,这个变量包含从上一次调用 Update 或 FixedUpdate (根据你是在 Update 函数还是在 FixedUpdate 函数中)到现在的时间量。所以对于上面的例子,修改它使这个物体以一个恒定的速度旋转而不依赖于帧率: function Update () { (0,5*,0); } 移动物体: function Update () { transform. Translate (0, ,0,2*); } 如果你加或是减一个每帧改变的值,你应该将它与 相乘。当你乘以 时,你实际的表达:我想以 10 米/秒移动这个物体不是 10 米/帧。这不仅仅是因为你的游戏将独立于帧而运行,同时也是因为运动的单位容易理解。( 米/ 秒) 另一个例子,如果你想随着时间增加光照的范围。下面的表达式,以 2 单位/秒改变半径。 function Update (){ += *; } 当通过力处理刚体的时候,你通常不必用 ,因为引擎已经为你考虑到了这一点。概览:访问其他组件组件被附加到游戏物体,附加 Renderer 到游戏物体使它在场景中渲染, 附加一个 Camera 使它变为相机物体,所有的脚本都是组件,因为它们能被附加到游戏物体。最常用的组件可以作为简单成员变量访问: Component 可如下访问 Transform transform Rigidbody rigidbody Renderer renderer Camera camera (only on camera objects) Light light (only on light objects) Animation animation Collider collider …等等。对于完整的预定义成员变量的列表。ponent ,Behaviour 和 MonnoBehaviour 类文档。如果游戏物体没有你想取的相同类型的组件,上面的变量将被设置为 null 。任何附加到一个游戏物体的组件或脚本都可以通过 ponent 访问。 ( 0,3,0 ) ; // 等同于 Ge tComponent(Transform).Translate(0, 1, 0); 注意 transfom 和 Transform 之间大小写的区别,前者是变量(小写),后者是类或脚本名称(大写)。大小写不同使你能够从类和脚本名中区分变量。应用我们所学, 你可以使用 ponent 找到任何附加在同一游戏物体上的脚本和组件,请注意要使用下面的例子能够工作,你需要有一个名为 OtherScript 的脚本,其中包含一个 DoSomething 函数。 OtherScript 脚本必须与下面的脚本附加到相同的物体上。//这个在同一游戏物体桑找到名为 OtherScript 的脚本//并调用它上加的 DoSomething
Unity3D中文脚本使用手册 来自淘豆网m.daumloan.com转载请标明出处.