没有合适的资源?快使用搜索试试~ 我知道了~
Unity_脚本参考(中文版)
5星 · 超过95%的资源 需积分: 17 305 下载量 22 浏览量
2009-07-10
14:08:43
上传
评论 1
收藏 157KB PDF 举报
温馨提示
试读
17页
Unity中的脚本(Script)由附加到游戏对象(GameObject)的自定义脚本对象(Custom Script Object)组成,它们又被称为行为。脚本对象中各种函数被称为必然事件(Certain Event)。常用的必然事件有如下三个...
资源推荐
资源详情
资源评论
Unity_脚本参考
第一章 概述
Unity 中的脚本(Script)由附加到游戏对象(GameObject)的自定义脚本对象(Custom
Script Object)组成,它们又被称为行为。脚本对象中各种函数被称为必然事件(Certain
Event)。常用的必然事件有如下三个:
1、Update:该函数在渲染帧之前被调用,大部分的游戏行为代码都在这里执行,除了
物理代码。
2、FixedUpdate:该函数在每进行一次物理时间步调时被调用,它用来执行基于物理的
游戏行为。
3、Code outside any function:这类函数在对象加载时被调用,它们用来执行脚本状态
的初始化工作。
你可以自定义事件处理器(Event Handler),它们都以“On”前缀进行命名,例如:
OnCollisionEnter。
第二章 常用操作
大部分游戏对象的操作都是通过它们的 Transform和 Rigidbody 实例来实现的,我们可
以在脚本中直接通过成员变量 transform和 rigidbody 来访问这两个实例。例如:要实现游戏
对象每帧以 Y 轴旋转 5 度的效果,可以进行如下编码:
function Update()
{
transform.Rotate(0, 5, 0);
}
让游戏对象向你移动,可进行如下编码:
function Update()
{
transform.Translate(0, 0, 2);
}
第三章 时间
Time类包含了一个重要的类变量 deltaTime,它 表示距上一次调用 Update或 FixedUpdate
所用的时间。
因此通过它可以让游戏对象按照一个常速进行旋转,而不是依赖于它的帧频:
function Update()
{
tranform.Rotate(0, 5 * Time.deltaTime, 0);
}
同样地移动效果:
function Update()
{
transform.Translate(0, 0, 2 * Time.deltaTime);
}
如果想要一个值根据每帧的变化而变化(增加或减少),你应该使用 Time.deltaTime 来
乘以这个值。这 样才能使得变化的效果依赖于单位时间,而不是帧频。这 不仅使得游戏的运
行独立于帧频,也使得运动的效果符合现实。
同理,要让灯光的照射范围在每秒使半径增加 2 个单位,可进行如下编码:
function Update()
{
light.range += 2.0 * Time.deltaTime;
}
但是在通过 force 来处理 rigidbody 时,一 般情况下不要乘以 Time.deltaTime,因为 Unity
引擎已经为你进行了处理。
第四章 访问组件
组件被用来附加到游戏对象。当附加一个渲染器组件(Renderer)时,将使得游戏对象
被渲染到屏幕上;当附加一个摄像机组件(Camera)时,将使得游戏对象变为摄像机对象。
所有的脚本都是组件,因此它们可以被附加到游戏对象中。
常用的组件都可以通过一个简单的成员变量来进行访问:
组件 用于访问相应组件的成员变量
Transform transform
Rigidbody rigidbody
Renderer renderer
Camera
camera(只能用于摄像机对象)
Light
light(只能用于灯光对象)
Animation animation
Collider collider
如果游戏对象没有你想要获取的组件类型,上面的变量将被设置为 null。
另外,也可以通过 GetComponent 函数来获取被附加到游戏对象中的任意内置组件或脚
本。例如:
transfrom.Translate(0, 1, 0);
//等同于
GetComponent(Transfrom).Translate(0, 1, 0);
两者之间不同在于前者(transform等)是一个变量,而后者(Transform等)是一个类
或脚本名。
现在我们进行一个练习,以便更加深入地掌握 GetComponent 函数。这个游戏对象附加
了两个脚本,我们在其中一个脚本中通过 GetComponent 函数来获取另一个脚本(叫做
OtherScript), 并 访问它的 DoSomething 函数:
function Update()
{
//在当前游戏对象中查找名为 OtherScript 的脚本,并调用它的 DoSomething函数。
otherScript = GetComponent(OtherScript);
otherScript.DoSomething();
}
第五章 访问游戏对象
大多数高级的游戏代码都不只是操作单个游戏对象。Unity 脚本接口拥有多种方式来查
找和访问其他游戏对象或其中的组件。假设有一个名为 OtherScript 的脚本被附加到游戏对
象中,该脚本包含了如下的代码片段:
var foo = 5;
function DoSomething(param : String)
{
print(param + " with foo: " + foo);
}
1
、通过检查器进行访问
你可以通过检查器来为任意对象类型的变量分配值:
//需要将 Translate拖拽到 target 变量上
var target : Transform;
function Update()
{
target.Translate(0, 1, 0);
}
你也可以把指向其他对象的引用暴露在检查器中。例如:你可以拖拽一个附加了
OtherScript 脚本的游戏对象到检查器中的 target 变量中:
//可以在检查器中通过 target 变量来设置 foo 变量
var target : OtherScript;
function Update()
{
//设置 foo 变量
target.foo = 2;
//调用 DoSomething函数
target.DoSomething("Hello");
}
2
、通过对象层次进行访问
你可以通过一个游戏对象中的 Transform组件来查找该对象的子对象和父对象:
//查找游戏对象中名为“Hand”的子对象
//我们将该脚本附加到当前游戏对象中
transform.Find("Hand").Translate(0, 1, 0);
一旦找到了层次中的 transform 对象,你就可以通过使用 GetComponent 函数来获取其
他脚本:
//查找名为“Hand”的子对象,获取其中附加的 OtherScript 脚本,并设置 foo 变量为 2。
transform.Find("Hand").GetComponent(OtherScript).foo=2;
//查找名为“Hand”的子对象,获取其中附加的 OtherScript 脚本,并调用 DoSomething 函数
transform.Find("Hand").GetComponent(OtherScript).DoSomething("Hello");
//查找名为“Hand”的子对象,获取其中附加的 rigidbody 对象,并申请一个 force。
transform.Find("Hand").rigidbody.AddForce(0, 10, 0);
剩余16页未读,继续阅读
NSString
- 粉丝: 1
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页