您的位置:首页 > 移动开发 > Unity3D

Unity3D - MonoBehaviour & GameObject

2017-08-27 13:44 459 查看
Unity中所有使用C#编写的脚本都应该继承自MonoBehaviour

MoonBehaviour常见的必然事件(在特定条件下被调用):

名称触发条件用途
Awake脚本实例被创建时调用用于游戏对象的初始化,注意Awake的执行早于所有脚本的Start函数
StartUpdate函数第一次运行前调用用于游戏对象的初始化
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 常用组件及变量

变量列表:

组件名称变量名组件作用
Transformtransform设置游戏对象的位置、旋转、缩放
Rigidbodyrigidbody设置物理引擎的刚体属性
Rendererrenderer渲染物体模型
Lightlight设置灯光属性
Cameracamera设置相机属性
Collidercollider设置碰撞体属性
Animationanimation设置动画属性
Audioaudio设置声音属性
函数列表

函数名作用
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的函数,而是应该在初始化时把组件的引用保存在变量中。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: