2016-09-30 85 views
0

C#活動我有連接到兩個不同的遊戲對象兩個腳本,並在其中的一個我有一個Action這樣的:在Unity

public class EnemeyController : MonoBehavior 
{ 
    internal Action EnemyWaveKilled; 

    private void OnTriggerEnter2D(Collider2D other) 
    { 
     // If hit by a bullet, kill and raise the event 
     EnemyWaveKilled?.Invoke(); 
    } 
} 

在我的其他腳本的Start方法,我嘗試訂閱此事件以這種方式:

public class GameController : MonoBehavior 
{ 
    internal int PlayerLevel; 

    private void Start() 
    { 
     _enemyController = GameObject.FindWithTag("Enemy").GetComponent<EnemyController>(); 
     _enemyController.EnemyWaveKilled +=() => PlayerLevel++; 
    } 
} 

我有3個遊戲對象都在場景中標記Enemy

現在,似乎我的GameController以某種方式隨機訂閱該事件。

更準確,如果我在EnemyController類的Update()方法打印EnemyWaveKilled.Target,它會顯示一條線說這是GameController和兩行說這是null

任何幫助深表感謝

+0

只是一個FYI,團結[它自己的事件包裝](https://docs.unity3d.com/ScriptReference/Events.UnityEvent。 html)在序列化方面更好,你可能想看看它們。另外,您的編輯應該是答案,而不是編輯。除非你還有問題嗎? –

+0

謝謝。我會檢查你的鏈接,並且我會更新這個問題 – Farzad

回答

0

我想我知道發生了什麼事。我有3個標籤相同的對象,但我只訂閱其中的一個;這就是爲什麼我看到兩個null的值(和單個非null值)