在Unity3d 4.X中捕获 GameObject 相关事件很容易,例如初始化,更改活动状态,销毁等。自定义的 MonoBehaviour 用于调试附加到GameObject将实现目标。但是如何捕获预定义(我的意思是,我无法修改源代码来添加调试代码)组件相关事件?
我真的想知道哪些脚本修改了GameObject的预定义组件(例如MeshRenderer)。
答案 0 :(得分:2)
启用/禁用可以跟随:
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); }
}