[英]Respawning enemies on player death
我有一個班級,我的敵人在游戲開始時產生。 當我的玩家死亡時,我想再次調用 spawn 類讓敵人再次生成。 但是當我這樣做時,什么都沒有發生。
public class EnemySpawn : MonoBehaviour
{
public GameObject [] Enemies;
public GameObject [] SpawnClone;
public Transform [] locations;
public void Start()
{
SpawnClone[0] = Instantiate(Enemies[0], locations[0].transform.position, Quaternion.Euler(0,0,0)) as GameObject;
SpawnClone[1] = Instantiate(Enemies[1], locations[1].transform.position, Quaternion.Euler(0,0,0)) as GameObject;
SpawnClone[2] = Instantiate(Enemies[2], locations[2].transform.position, Quaternion.Euler(0,0,0)) as GameObject;
}
}
//other class where I wanna call the Start method again to spawn enemies everytime I die
private EnemySpawn enemyspawn;
private void Die()
{
m_character.NotifyDied();
if (m_canRespawn)
{
SetVulnerable();
RemovePoison();
m_hazards.Clear();
gameObject.transform.position = m_spawnPosition;
SetHealth(m_maxHealth);
enemyspawn.Start();
}
else {
Destroy(gameObject);
}
}
Start
方法是保留的,並在啟用腳本時在框架上調用。 您應該使用另一個方法名稱。
https://docs.unity3d.com/ScriptReference/MonoBehaviour.Start.html
你可以這樣做,在Start
上調用Spawn
並在Die
方法上調用
public class EnemySpawn : MonoBehaviour
{
public GameObject [] Enemies;
public GameObject [] SpawnClone;
public Transform [] locations;
public void Start()
{
Spawn();
}
public void Spawn()
{
SpawnClone[0] = Instantiate(Enemies[0], locations[0].transform.position, Quaternion.Euler(0,0,0)) as GameObject;
SpawnClone[1] = Instantiate(Enemies[1], locations[1].transform.position, Quaternion.Euler(0,0,0)) as GameObject;
SpawnClone[2] = Instantiate(Enemies[2], locations[2].transform.position, Quaternion.Euler(0,0,0)) as GameObject;
}
}
public class EnemySpawnCaller : MonoBehaviour
{
public EnemySpawn enemyspawn;
private void Die()
{
enemyspawn.Spawn();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.