2

这是我在 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。这是不允许的。只能使用 AddComponent() 添加 MonoBehavior。”

4

2 回答 2

5

敌人对象尚未初始化

private List<IEnemy> Enemies = new List<IEnemy>();
于 2013-03-19T03:56:44.803 回答
3

AnteSim 的答案解决了一个问题,但您得到的实际错误来自尝试在 Bmber 上调用“新”,我认为它是 GameObject 或 MonoBehaviour 组件。

如果 Bomber 是一个组件:

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

如果 Bomber 是一个游戏对象:

GameObject b = Instantiate(Bomber, Vector3.zero, Quaternion.identity) as GameObject;
Enemies.Add(b);
于 2013-03-19T04:40:46.837 回答