ฉันกำลังเขียนเกม (เกมแพลตฟอร์ม 2 มิติ) และฉันกำลังพยายามให้ศัตรูเกิดใหม่เมื่อผู้เล่นเกิดใหม่ ฉันไม่สามารถโหลดระดับใหม่ได้เนื่องจากมีวัตถุบางอย่างที่โหลดเมื่อระดับโหลด ดังนั้นอาจทำให้เกิดปัญหาบางอย่างได้ เพื่อที่จะเกิดใหม่ให้กับผู้เล่น ฉันจะต้องส่งมันกลับไปยังตำแหน่งเริ่มต้น (และฉันจะจัดการกับชีวิตที่หายไปและรายละเอียดอื่น ๆ )
ผู้เล่นทำลายศัตรูด้วยการตีศัตรูที่หัว ดังต่อไปนี้ (ใน OnTriggerEnter บนผู้เล่น):
if(otherObject.CompareTag("Minion")) //hit by minion
{
if(hitFromTop(otherObject.gameObject)) //if player jumped on enemy
{
otherObject.GetComponent<Minion>().setMoving(false); //stop moving
playSound(KillEnemySound); //play killing enemy sound
jump();
Destroy(otherObject.gameObject); //kill minion
}
//else hurt player
}
อย่างที่คุณเห็น ฉันทำลายวัตถุของศัตรูโดยสิ้นเชิง เพื่อที่จะคงไว้ซึ่งศัตรูอยู่ที่ไหน ฉันจึงเพิ่มพวกเขาลงในรายการ (จัดเก็บไว้ใน GameObject ที่แยกต่างหาก) ในการสร้าง รายชื่อจะถูกสร้างขึ้นในวัตถุการเกิดใหม่ของศัตรูที่แยกออกมา ดังต่อไปนี้:
void Start ()
{
enemyList = GameObject.FindGameObjectsWithTag("Minion");
Debug.Log ("Adding all minions to list");
}
ฉันกำลังพยายามเรียกใช้ฟังก์ชันที่สร้างมินเนี่ยนทั้งหมดในรายการที่ตำแหน่งเดิมโดยดูจากรายการ ฟังก์ชั่นมีดังนี้:
public void RespawnAll()
{
foreach(GameObject minion in enemyList)
{
Destroy(minion); //make sure to respawn ALL minions
}
Debug.Log ("Respawning all");
foreach(GameObject minion in enemyList)
{
Debug.Log ("instantiating minions from list");
Instantiate (minion, minion.GetComponent<Minion>().origPosition, Quaternion.identity);
}
}
ฉันรู้ว่านี่ไม่ใช่วิธีที่เหมาะสมกับเวลามากที่สุดในการลบศัตรูทั้งหมดและเกิดใหม่ทั้งหมด และหากตรรกะนี้ผิดหรือถ้าคุณรู้วิธีที่ดีกว่า ฉันก็เปิดรับแนวคิดใหม่ๆ
ปัญหาของแนวคิดนี้คือ ฉันได้รับข้อผิดพลาด:
MissingReferenceException: The object of type 'GameObject' has been destroyed but you are still trying to access it.
Your script should either check if it is null or you should not destroy the object.
ดูเหมือนว่าฉันกำลังเพิ่มการอ้างอิงถึงมินเนี่ยนที่มีอยู่ในรายการ แทนที่จะเป็นการคัดลอก ฉันจะเกิดใหม่ของศัตรูในตำแหน่งเดิมได้อย่างไร?
enemylist
คุณสามารถมีenemyposition
หรือรายการที่คล้ายกันซึ่งจัดเก็บบางอย่างเช่น Vector3 หรือคลาสแบบกำหนดเองที่มีข้อมูลศัตรูที่เกี่ยวข้อง เช่น ชีวิตเริ่มต้น ตำแหน่ง ทิศทาง ฯลฯ - person Jerdak   schedule 21.04.2013