0
我正面临这个问题:我有三个脚本。基类(A
),具有泛型的派生类(A<T> : A
)和另一派生类B : A<T>
。所以B -> A<T> -> A
。OnMouseDown内空引用
A
有两个代表。一个在协程完成时调用。另一个是我们点击GameObject时调用的。
A
如下:
public class A : MonoBehaviour {
[…]
p ublic delegate int delegate_OnTimeElapsed();
public delegate_OnTimeElapsed onTimeElapsed;
public delegate void delegate_OnMouseDown(A o);
public delegate_OnMouseDown onMouseDown;
[...]
public void OnMouseDown() {
if(onMouseDown != null) onMouseDown(this);
}
[…]
protected IEnumerator LifeTime(){
[...]
if(onTimeElapsed != null) onTimeElapsed();
}
[…]
}
现在我有一个预制附有一个B
脚本,我在一个脚本实例(假设C
)侦听到返回按键。
C
如下:
[…]
public B prefab_Script; //Set in editor
public void Update(){
if(Return) {
C inst = Instantiate(prefab_Script);
inst.onTimeElapsed += Func_A;
inst.onMouseDown += Func_B;
}
}
public int Func_A(){
Debug.Log(“Time Elapsed”);
return 0;
}
public void Func_B(A o){
Debug.Log(“Mouse Down”);
}
的事情是,里面LifeTime
我得到一个正确的参考onTimeElapsed
但里面OnMouseDown
我看到onMouseDown
为null
。
任何想法?谢谢!!
当您执行检查时为null,或当您尝试调用时为null? – Gui
MonoBehaviour中已经定义了'onMouseDown'吗? –
也许你应该替换: ---- if(onMouseDown!= null)onMouseDown(); ------ ------- if(onMouseDown!= null)onMouseDown(this); - ------- – ORParga