Unity3d中如何捕捉组件相关事件?
How to capture component related events in Unity3d?
在Unity3d中很容易捕捉到GameObject相关事件4.X,比如初始化,改变激活状态,销毁等自定义的MonoBehaviour 附加到 GameObject 的调试将实现目标。但是如何捕获预定义(我的意思是,我不能修改源代码来添加调试代码)组件相关事件?
- 预定义组件是 enabled/disabled。
- 预定义组件是 removed/added。
我真的很想知道哪些脚本修改了 GameObject 的预定义组件(例如 MeshRenderer)。
Enabled/disabled 后面可以跟:
void OnEnable(){ Debug.Log("Being enabled"); }
void OnDisable(){ Debug.Log("Being disabled"); }
关于删除,我猜这是破坏:
void OnDestroy(){ Debug.log("Is destroyed"); }
如果您打算四处移动组件,那么更多的是关于抓取它并移动它的方法。
至于哪个脚本影响,你可以使用事件模式:
public EventHandler <EventArg> RaiseEvent;
protected void OnRaiseEvent(EventArg args){
if(RaiseEvent != null{ RaiseEvent(this, args); }
}
另一个脚本正在侦听:
void Start(){
controller.RaiseEvent += HandleEvent;
}
void HandleEvent(object sender, EventArg args){
MonoBehaviour mb = sender as MonoBehaviour;
if(mb != null) { Debug.Log("Was modified by " + mb.name); }
}
在Unity3d中很容易捕捉到GameObject相关事件4.X,比如初始化,改变激活状态,销毁等自定义的MonoBehaviour 附加到 GameObject 的调试将实现目标。但是如何捕获预定义(我的意思是,我不能修改源代码来添加调试代码)组件相关事件?
- 预定义组件是 enabled/disabled。
- 预定义组件是 removed/added。
我真的很想知道哪些脚本修改了 GameObject 的预定义组件(例如 MeshRenderer)。
Enabled/disabled 后面可以跟:
void OnEnable(){ Debug.Log("Being enabled"); }
void OnDisable(){ Debug.Log("Being disabled"); }
关于删除,我猜这是破坏:
void OnDestroy(){ Debug.log("Is destroyed"); }
如果您打算四处移动组件,那么更多的是关于抓取它并移动它的方法。
至于哪个脚本影响,你可以使用事件模式:
public EventHandler <EventArg> RaiseEvent;
protected void OnRaiseEvent(EventArg args){
if(RaiseEvent != null{ RaiseEvent(this, args); }
}
另一个脚本正在侦听:
void Start(){
controller.RaiseEvent += HandleEvent;
}
void HandleEvent(object sender, EventArg args){
MonoBehaviour mb = sender as MonoBehaviour;
if(mb != null) { Debug.Log("Was modified by " + mb.name); }
}