6. 调试是发现和修正你的代码中人为错误的技巧,Unity中提供了Debug类,我们现在看看Debug.Log()函
数.
Log
Log()函数允许用户发送信息到Unity的控制台.这样做的原因可能包括:
1. 在运行时要验证某部分代码是否达成.
2. 报告变量的状态.
我们现在使用Log()函数,当用户点击开火按钮时发送一个消息到Unity控制台.
- 打开创建的脚本并在” Instantiate’”代码内”if”处添加如下代码:
Debug.Log("Cube created");
- 运行游戏和点击开火按钮,你能看到Unity界面下方显示” Cube created”,你可以点击这个提示详细查
看Unity控制台.
Watch
另外一个有用的功能是用于调试私有变量.这使得当Debug模式被选中时检视视图中的变量,但它不
能被编辑.为了证明这一点,我们将暴露一个私有变量作为Cube实例的计数.
- 再次打开创建的脚本并添加两行:
(1) 添加私有变量引用cubeCount
(2) 当一个cube实例创建后增加这个变量
完整代码如下(Create.js):
var newObject : Transform;
private var cubeCount = 0;
function Update () {
if (Input.GetButtonDown("Fire1")) {
Instantiate(newObject, transform.position, transform.rotation);
Debug.Log("Cube created");
cubeCount++;
}
}
- 运行游戏并点击开火按钮创建一些Cube,注意每当一个新的Cube实例创建后cubeCount变量的递
增.同样这个数值是灰色的,意味着变量是只读的(不能编辑).
9. 常见脚本类型
每当一个新Javascript被创建,默认情况下将包含Update()函数.这一届将讲述其他常见的函数,简单的
从下面列表中替换Update()函数名字.
FixedUpdate()
置于这个函数中的代码每隔一定间隔执行(固定的帧率).它通常被用来Rigibody中用力的时候.
// Apply a upwards force to the rigid body every frame
function FixedUpdate () {
rigidbody.AddForce (Vector3.up);
}
Awake()
这里的代码将被用作初始化.
Start()
这个函数将在Update()之前,但在Awake()之后执行. Start () 函数和Awake()函数的不同点在于Start()
函数仅在脚本启用时候执行(检视视图如果它的复选框被选中).
7. OnCollisionEnter()
当游戏对象的碰撞脚本与另外的游戏对象碰撞时执行这个函数内的代码.
OnMouseDown()
当鼠标在一个载有GUI元素(GUIElement)或碰撞器(Collider)的游戏对象里按下时执行该函数内的代
码.
// Loads the level named "SomeLevel" as a response
// to the user clicking on the object
function OnMouseDown () {
Application.LoadLevel ("SomeLevel");
}
OnMouseOver()
当鼠标在一个载有GUI元素(GUIElement)或碰撞器(Collider)的游戏对象里的按下动作抬起后执行该
函数内的代码.
// Fades the red component of the material to zero
// while the mouse is over the mesh
function OnMouseOver () {
renderer.material.color.r -= 0.1 * Time.deltaTime;
}
查看Unity API 获得这些函数的更多信息.
此教程介绍了Unity脚本的基本概念.你现在应该看看其他Unity教程或自己试试吧!