Unity:Sprite渲染器第二次无法工作

时间:2014-06-13 23:41:01

标签: c# unity3d sprite renderer

好的,继续我的游戏,我能够实例化敌人并在启动时为他们分配个人精灵。当我摧毁敌人时,一旦被击中它们全部被摧毁,我再次称之为同样的功能。检查员显示游戏对象在那里,但精灵渲染器组件是空白的。不显示任何错误消息。 这是我的代码简化。这是我的实例化和渲染方法所在的位置:

public class EnemySpawner : MonoBehaviour {

public Sprite[] HiraganaSprites;


public void setEnemies()
{
   int counter=0;
   while (counter<5)
   {

    Instantiate (EnemyPrefab, enemyPos, player.transform.rotation); 
        //label the enemy
        EnemyPrefab.tag = "Enemy" + counter;
        counter++;

   }

    //render diff sprites for each
    counter=0;
    while (counter<5)
    {
       string en_name="Enemy"+counter;
       labelEnemy = GameObject.FindGameObjectWithTag (en_name); 
       SpriteRenderer renderer=labelEnemy.GetComponent<SpriteRenderer>();
       renderer.sprite=Sprites[counter];
       counter ++; 

    }
    void Awake()
   {
        Sprites = Resources.LoadAll<Sprite> ("kana");
    }
}
}

我从另一个剧本拨打电话。

public EnemySpawner enemyspawner;
void function()
{
   enemyspawner=gameObject.AddComponent<EnemySpawner>();
   enemyspawner.setEnemies();
}

第一次,一切正常! See image

第二次,没有nothing

奇怪的是,预制件在那里,设置在位置,只是没有渲染。也没有错误消息。 这就是我如何在有所帮助的情况下摧毁敌人。

while (i<=numenemies)
{
    string tag="Enemy"+i;
    destroyenemy=GameObject.FindGameObjectWithTag(tag);
    Destroy(destroyenemy.gameObject);
    i++;
}

1 个答案:

答案 0 :(得分:0)

您应该将EnemySpawner脚本附加到gameObject,然后更新您调用setEnemies函数的脚本,如下所示 -

public EnemySpawner enemyspawner;
void function()
{
   enemyspawner=gameObject.GetComponent<EnemySpawner>();
   enemyspawner.setEnemies();
}