好的,继续我的游戏,我能够实例化敌人并在启动时为他们分配个人精灵。当我摧毁敌人时,一旦被击中它们全部被摧毁,我再次称之为同样的功能。检查员显示游戏对象在那里,但精灵渲染器组件是空白的。不显示任何错误消息。 这是我的代码简化。这是我的实例化和渲染方法所在的位置:
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();
}
第一次,一切正常!
第二次,没有。
奇怪的是,预制件在那里,设置在位置,只是没有渲染。也没有错误消息。 这就是我如何在有所帮助的情况下摧毁敌人。
while (i<=numenemies)
{
string tag="Enemy"+i;
destroyenemy=GameObject.FindGameObjectWithTag(tag);
Destroy(destroyenemy.gameObject);
i++;
}
答案 0 :(得分:0)
您应该将EnemySpawner
脚本附加到gameObject,然后更新您调用setEnemies
函数的脚本,如下所示 -
public EnemySpawner enemyspawner;
void function()
{
enemyspawner=gameObject.GetComponent<EnemySpawner>();
enemyspawner.setEnemies();
}