Unity 初学笔记

以下是学习 Unity 过程中整理的一些常用 API 和使用技巧,方便日后查阅。

变换与位置

  • transform.Translate() 用于指定变换位置(相对位移)。
  • transform.position = Vec3 .... 用于直接指定位置(绝对坐标)。

定时调用

定时执行可以使用 InvokeInvokeRepeating 函数。

数据持久化与场景切换

  • 轻量级数据持久化可以使用 PlayerPrefs 类。
  • 场景切换使用 Application.LoadLevel

UI 事件处理

当一个界面存在多个按钮时,可以用一个 GameObject 挂载通用的处理脚本,然后让每个 button 都绑定这个 object 上的事件。这样脚本只需要实例化一次,便于集中管理。

音频组件

AudioSource 组件可以挂载多个 AudioClip,需要播放音效时通过 PlayOneShot 触发即可。

从场景中查找对象

可以通过 GameObject.Find 按名称查找对象,再获取其组件:

GameObject.Find("btn_exit").GetComponent<UnityEngine.UI.Button>();

碰撞检测

触发器使用 OnTriggerEnter 回调,在函数内部可以通过比较 tag 判断具体是哪个对象发生了碰撞:

if (other.gameObject.tag.CompareTo("Item") == 0)
{
    // 处理与 Item 的碰撞
}

自定义脚本类

自定义的脚本类在编辑器中是可见的,可以保留一个 instance 引用来方便访问。

MonoBehaviour 生命周期

下图展示了 MonoBehaviour 的生命周期流程:

类型判断与转换

  • is T 可以判断一个对象是否为指定类型。
  • as T 可以返回转换为目标类型后的对象,如果转换失败则返回 null