尝试在接口上使用foreach时出现NullReferenceException

时间:2013-03-19 03:55:17

标签: c# foreach unity3d

以下是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()添加。”

2 个答案:

答案 0 :(得分:5)

敌人对象尚未初始化

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

答案 1 :(得分:3)

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);