对象交互事件
OnEnable:物体被启用时调用,物体默认为被启用状态,所有游戏一开始即会被调用
void OnEnable() { print("script was enabled"); }
OnDisable:物体被禁用时调用,游戏结束时,物体会被禁用,该函数会被执行
void OnDisable() { print("script was removed"); }
OnDestroy:物体被销毁时调用,游戏结束时,物体会被销毁,该函数会被执行
void OnDestroy() { print("Script was destroyed"); }
理交互事件
OnTriggerEnter:当碰撞体(collider)进入触发器(trigger)时调用。
void OnTriggerEnter(Collider other) { Destroy(other.gameObject); }
OnTriggerStay:当碰撞体接触触发器时,每一帧被调用
void OnTriggerStay(Collider other) { if (other.attachedRigidbody) other.attachedRigidbody.AddForce(Vector3.up * 10); }
OnTriggerExit:当碰撞体停止触发触发器时调用
void OnTriggerExit(Collider other) { Destroy(other.gameObject); }
OnCollisionEnter:当此Collider/Rigidbody触发另一个Collider/Rigidbody时调用
public class ExampleClass : MonoBehaviour { AudioSource audio; void Start() { audio = GetComponent<AudioSource>(); } void OnCollisionEnter(Collision collision) { foreach (ContactPoint contact in collision.contacts) { Debug.DrawRay(contact.point, contact.normal, Color.white); } if (collision.relativeVelocity.magnitude > 2) audio.Play(); } }
OnCollisionStay:当此Collider/Rigidbody触发另一个Collider/Rigidbody时,每一帧被调用
void OnCollisionStay(Collision collisionInfo) { foreach (ContactPoint contact in collisionInfo.contacts) { Debug.DrawRay(contact.point, contact.normal, Color.white); } }
OnCollisionExit:当此Collider/Rigidbody停止触发另一个Collider/Rigidbody时调用
void OnCollisionExit(Collision collisionInfo) { print("No longer in contact with " + collisionInfo.transform.name); }
输入 Input
OnMouseEnter:当鼠标进入GUI元素或Collider时被触发,每次进入只会出发一次。
OnMouseOver:当鼠标悬浮在GUI元素或Collider时被触发,若没离开则每一帧被触发一次。
OnMouseExit:当鼠标离开GUI元素或Collider时被触发。
OnMouseDown:当鼠标在GUI元素或Collider上点击时触发。
OnMouseUp:当释放鼠标时调用。
OnMouseDrag:当鼠标拖拽GUI元素或Collider时触发
OnMouseUpAsButton:当鼠标在同一个GUI元素或Collider上点击并释放时触发。
void OnMouseDown() { Debug.Log("On Mouse Down"); } void OnMouseEnter() { Debug.Log("On Mouse Enter"); } void OnMouseExit() { Debug.Log("On Mouse Exit"); } void OnMouseUp() { Debug.Log("On Mouse Up"); } void OnMouseDrag() { Debug.Log("On Mouse Drag"); } void OnMouseOver() { Debug.Log("On Mouse Over"); }