Unity3D - MonoBehaviour & GameObject
2017-08-27 13:44
459 查看
Unity中所有使用C#编写的脚本都应该继承自MonoBehaviour
函数列表:
需要注意的是,调用
通过名称查找:
通过标签来查找:
请注意:以上几个方法都比较耗时,应该避免在
MoonBehaviour常见的必然事件(在特定条件下被调用):
名称 | 触发条件 | 用途 |
---|---|---|
Awake | 脚本实例被创建时调用 | 用于游戏对象的初始化,注意Awake的执行早于所有脚本的Start函数 |
Start | Update函数第一次运行前调用 | 用于游戏对象的初始化 |
Update | 每帧调用一次 | 用于更新游戏场景和状态(和物理状态有关的更新应该放在FixedUpdate中) |
FixedUpdate | 每个固定物理时间间隔(Physics Time Step)调用一次 | 用于物理状态更新 |
LateUpdate | 每帧调用一次(在Update调用之后) | 用于更新游戏场景和状态,和相机有关的操作一般放这里 |
MoonBehaviour特定事件的响应函数(模型碰撞、鼠标移动)
事件响应函数 | 说明 |
---|---|
OnMouseEnter | 鼠标移入GUI或者碰撞物体时调用 |
OnMouseOver | 鼠标停留在GUI控件或碰撞物体时调用 |
OnMouseExit | 鼠标退出GUI控件或碰撞物体时调用 |
OnMouseDown | 鼠标在GUI控件或物体上按下时调用 |
OnMouseUp | 鼠标按键释放时调用 |
OnTriggerEnter | 当其他碰撞体进入触发器时调用 |
OnTriggerExit | 当其他碰撞体离开触发器时调用 |
OnTriggerStay | 当其他物体停留在触发器时调用 |
OnCollisionEnter | 当碰撞体或者刚体与其他碰撞体或者刚体接触时调用 |
OnCollisionExit | 当碰撞体或刚体与其他碰撞体或刚体停止接触时调用 |
OnCollisionStay | 当碰撞体或刚体与其他碰撞体或刚体保持接触时调用 |
OnControllerColliderHit | 当控制器移动时与碰撞体发生碰撞时调用 |
OnBecameVisible | 对于任意一个相机可见时调用 |
OnBecameInvisble | 对于任意一个相机不可见时调用 |
OnEnable | 对象启用或者激活时调用 |
OnDisable | 对象禁用或者取消激活时调用 |
OnDestroy | 脚本销毁时调用 |
OnGUI | 渲染GUI和处理GUI消息时调用 |
MoonBehaviour 常用组件及变量
变量列表:组件名称 | 变量名 | 组件作用 |
---|---|---|
Transform | transform | 设置游戏对象的位置、旋转、缩放 |
Rigidbody | rigidbody | 设置物理引擎的刚体属性 |
Renderer | renderer | 渲染物体模型 |
Light | light | 设置灯光属性 |
Camera | camera | 设置相机属性 |
Collider | collider | 设置碰撞体属性 |
Animation | animation | 设置动画属性 |
Audio | audio | 设置声音属性 |
函数名 | 作用 |
---|---|
GetComponent | 得到组件 |
GetComponents | 得到组件列表 |
GetComponentInChildren | 得到对象或者对象子物体上的组件 |
GetComponentsInChindren | 得到对象或者对象子物体上的组件列表 |
GetComponent()函数比较耗时,因此应该尽量避免在
Update中调用这些组件获取的函数,而是应该在初始化是把组件的引用保存在变量中。
GameObject访问游戏对象
可以用如下几种方式来访问游戏对象:通过名称查找:
GameObject.Find()如果场景中存在指定名称的游戏对象,那么返回该对象的引用,否则返回空值null。
GameObject player; void Start() { player = GameObject.Find("MainHero"); }
通过标签来查找:
GameObject.FindWithTag,如果场景中存在指定标签的游戏对象,那么返回该对象的引用否则返回空值null,如果有多个返回第一个。还可以使用
GameObject.FindGameObjectsWithTagg()来获取游戏对象数组。
GameObject player; GameObject[] enemies; void Start() { player = GameObject.FindWithTag("player"); enemies = GameObject.FindGameObjectsWithTag("enemy"); }
请注意:以上几个方法都比较耗时,应该避免在
Update中调用这些获取Compoent的函数,而是应该在初始化时把组件的引用保存在变量中。
相关文章推荐
- Unity3d之MonoBehaviour的可重写函数整理
- unity3d中脚本生命周期(MonoBehaviour lifecycle)
- Unity3D脚本(MonoBehaviour)生命周期分析
- Unity3D脚本(MonoBehaviour)生命周期
- Unity3d MonoBehaviour的可重写函数 及部分执行先后顺序
- Unity3D之MonoBehaviour的可重写函数整理
- Unity3d之MonoBehaviour的可重写函数整理
- unity3d中脚本生命周期(MonoBehaviour lifecycle)
- Unity 脚本基类 MonoBehaviour 与 GameObject 的关系
- Unity3D的MonoBehaviour可重写函数
- Unity3d之MonoBehaviour的可重写函数整理
- Unity3D基础知识(一) MonoBehaviour脚本内置函数执行顺序测试
- Unity3d中默认函数调用顺序(MonoBehaviour)
- Unity3d 学习笔记(-) Monobehaviour
- Unity3d之MonoBehaviour的可重写函数整理
- Unity3d之MonoBehaviour的可重写函数整理
- Unity3d之MonoBehaviour的可重写函数
- [Unity3d] 之MonoBehaviour的可重写函数整理
- Unity3D脚本(MonoBehaviour)生命周期
- Unity3D MonoBehaviour的生命周期(lifecycle)