Unity 初学笔记
以下是学习 Unity 过程中整理的一些常用 API 和使用技巧,方便日后查阅。
变换与位置
transform.Translate()用于指定变换位置(相对位移)。transform.position = Vec3 ....用于直接指定位置(绝对坐标)。
定时调用
定时执行可以使用 Invoke 与 InvokeRepeating 函数。
数据持久化与场景切换
- 轻量级数据持久化可以使用
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。