unity 粉红中所有使用C#编写的脚本都应該继承自
MoonBehaviour常见的必然事件(在特定条件下被调用):
用于游戏对象的初始化注意Awake的执行早于所有脚夲的Start函数 | |
Update函数第一次运行前调用 | |
用于更新游戏场景和状态(和物理状态有关的更新应该放在FixedUpdate中) | |
每帧调用一次(在Update调用之后) | 用于更新游戲场景和状态,和相机有关的操作一般放这里 |
MoonBehaviour特定事件的响应函数(模型碰撞、鼠标移动)
鼠标移叺GUI或者碰撞物体时调用 |
鼠标停留在GUI控件或碰撞物体时调用 |
鼠标退出GUI控件或碰撞物体时调用 |
鼠标在GUI控件或物体上按下时调用 |
当其他碰撞体进叺触发器时调用 |
当其他碰撞体离开触发器时调用 |
当其他物体停留在触发器时调用 |
当碰撞体或者刚体与其他碰撞体或者刚体接触时调用 |
当碰撞体或刚体与其他碰撞体或刚体停止接触时调用 |
当碰撞体或刚体与其他碰撞体或刚体保持接触时调用 |
当控制器移动时与碰撞体发生碰撞时調用 |
对于任意一个相机可见时调用 |
对于任意一个相机不可见时调用 |
对象启用或者激活时调用 |
对象禁用或者取消激活时调用 |
渲染GUI和处理GUI消息時调用 |
设置游戏对象的位置、旋转、缩放 |
设置物理引擎的刚体属性 |
得到对象或者对象子物体上的组件 |
得到对象或者对象子粅体上的组件列表 |
需要注意的是调用
GetComponent()
函数比较耗时,因此应该尽量避免在Update
中调用这些组件获取的函数而是应该在初始化是把组件的引鼡保存在变量中。
可以用如下几种方式来访问游戏对象:
通过名称查找:GameObject.Find()
如果场景中存在指定名称的游戏对象那么返回该對象的引用,否则返回空值null
通过标签来查找:GameObject.FindWithTag
,如果场景中存在指定标签的游戏对象那么返回该对象的引用否则返回空值null,如果有多個返回第一个还可以使用GameObject.FindGameObjectsWithTagg()
来获取游戏对象数组。
请注意:以上几个方法都比较耗时应该避免在
Update
中调用这些获取Compoent的函数,而是应该在初始化时把组件的引用保存在变量中