การแท็กวัตถุที่สร้างอินสแตนซ์

ฉันได้รับ "NullReferenceException: การอ้างอิงวัตถุไม่ได้ตั้งค่าเป็นอินสแตนซ์ของวัตถุ" เมื่อฉันพยายามแท็กวัตถุทันทีที่ฉันสร้างอินสแตนซ์ วัตถุศัตรูสัตว์ถูกสร้างขึ้น (เป็นรูปแบบสำเร็จรูปที่ดูดีในฉาก) แต่ฉันต้องอ้างอิงมันไม่ถูกต้อง และฉันไม่สามารถหาวิธีที่จะทำให้สิ่งนี้ใช้งานได้หรือแท็กวัตถุในขณะที่ฉันยกตัวอย่างมัน

public void placeAnimal()
    {
        GameObject enemy = Instantiate (enemyAnimal, new Vector3 (7, 0, 0), Quaternion.Euler(0, 180, 0)) as GameObject;

        enemy.tag = "EnemyAnimal";
    }

person greyspace    schedule 09.05.2015    source แหล่งที่มา
comment
ตรวจสอบว่าศัตรูเป็นโมฆะหรือไม่โดยทำ if(enemy ==null){ Debug.Log(Enemy is null); } รายงานกลับมาให้ฉันทราบ   -  person Programmer    schedule 10.05.2015
comment
@Programmer มันเป็นโมฆะ (ฉันเพิ่งตรวจสอบตามที่คุณถาม) แต่ฉันไม่เข้าใจว่ามันเป็นไปได้อย่างไรเนื่องจากฉันมองเห็นศัตรูสัตว์ตัวอย่างในฉากได้อย่างชัดเจนและนี่คือบรรทัดถัดไปของโค้ดหลังจากวางศัตรูสัตว์นั้นแล้ว .   -  person greyspace    schedule 10.05.2015
comment
นั่นคือปัญหา คุณสามารถโพสต์รหัสเกี่ยวกับวิธีการกำหนดของศัตรูสัตว์ได้หรือไม่   -  person Programmer    schedule 10.05.2015


คำตอบ (1)


ฉันคิดว่า enemy ไม่ใช่วัตถุของเกม และเมื่อคุณพยายามโยนมันลงไป แน่นอนว่าคุณจะได้รับค่าว่าง มันเป็นพฤติกรรมมโนหรือเปล่า? ส่งให้เป็นประเภทที่แท้จริง (เหมือนกับ enemyAnimal ที่กำหนดด้วย) และใช้คุณสมบัติ gameObject:

public void placeAnimal()
{
    var enemy = Instantiate (enemyAnimal, new Vector3 (7, 0, 0), Quaternion.Euler(0, 180, 0)) as MonoBehaviour;
    enemy.gameObject.tag = "EnemyAnimal";
}
person Max Yankov    schedule 09.05.2015
comment
ฉันคิดว่าทุกอย่างเป็น GameObject (ซึ่งทุกอย่างสืบทอดมาจาก GameObject) เพราะกี่ครั้งแล้วที่ฉันตั้งค่าตัวแปรเป็น GameObject และมันทำให้ฉันใส่อะไรก็ได้ลงไปได้ แต่คุณก็พูดถูกจริงๆ เมื่อฉันแต่งใหม่เป็นประเภทสัตว์ มันก็ใช้ได้ ขอบคุณมาก! - person greyspace; 10.05.2015
comment
ทุกสิ่งไม่ใช่วัตถุในเกม เอนทิตี C# ทุกอันมาจากคลาส System.Object และสิ่งต่าง ๆ ของ Unity ทั้งหมดนั้นมาจากคลาส UnityEngine.Object (ซึ่งเป็นลูกของ System.Object เช่นกัน อย่างไรก็ตาม MonoBehaviour ไม่ใช่ วัตถุของเกม ฉันคิดว่านี่อาจช่วยให้คุณเข้าใจได้ ความสัมพันธ์ระหว่างพฤติกรรมโมโนและส่วนประกอบดีขึ้น: gameprogrammingpatterns.com/component.html - person Max Yankov; 10.05.2015
comment
โดดเด่น. ขอบคุณมาก. ฉันไม่มีชื่อเสียงพอที่จะทำอะไรมากไปกว่าทำเครื่องหมายว่าตอบแล้ว แต่ฉันซาบซึ้งจริงๆ สำหรับความช่วยเหลือและลิงก์ ฉันกำลังดำดิ่งลงไปในมันตอนนี้ - person greyspace; 10.05.2015
comment
ฉันจะทำสิ่งนั้นเพื่อคุณ +1 - person Programmer; 10.05.2015