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