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を作成しようとしています。これは許可されていません。MonoBehaviorsはAddComponent()を使用してのみ追加できます。」

4

2 に答える 2

5

敵オブジェクトは初期化されていません

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

AnteSimの答えは1つの問題に対処しますが、実際に発生するエラーは、GameObjectまたはMonoBehaviourコンポーネントのいずれかであると想定しているBmberで「new」を呼び出そうとした場合に発生します。

爆撃機がコンポーネントの場合:

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

BomberがGameObjectの場合:

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