簡體   English   中英

嘗試在接口上使用foreach時出現NullReferenceException

[英]NullReferenceException when trying to use a foreach on an Interface

這是我在Unity 3D中的C#代碼:

private List<IEnemy> Enemies;

void Start () {
    soldier = OT.AnimatingSprite("PlayerAnimatingSprite");

    Bomber bomber = new Bomber(soldier);
    Enemies.Add(bomber as IEnemy);
}

void Update () {        
    ProcessEnemies();       
}

void ProcessEnemies()
{
    foreach(IEnemy enemy in Enemies)
    {
        enemy.Move();
    }
}

當我在上面的代碼中實例化Bomber時,我也收到以下警告:“您正在嘗試使用'new'關鍵字創建MonoBehavior。這是不允許的.MonoBehaviors只能使用AddComponent()添加。”

敵人對象尚未初始化

private List<IEnemy> Enemies = new List<IEnemy>();

AnteSim的答案解決了一個問題,但你得到的實際錯誤來自於試圖在Bmber上調用'new',我認為它是GameObject或MonoBehaviour組件。

如果轟炸機是一個組成部分:

Bomber b = gameObject.AddComponent<Bomber>();
Enemies.Add(b);

如果Bomber是GameObject:

GameObject b = Instantiate(Bomber, Vector3.zero, Quaternion.identity) as GameObject;
Enemies.Add(b);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM