ฉันกำลังสร้างสิ่งที่เป็นพื้นฐานของระบบ prefab ของฉันเอง วัตถุของเกมถูกกำหนดโดยไฟล์ข้อมูลที่มนุษย์สามารถอ่านได้ ฉันต้องการสร้าง GameObject ที่ว่างเปล่าโหลดด้วยส่วนประกอบที่กำหนดในไฟล์ข้อมูลและเตรียมให้พร้อมและรอการInstantiate()
โทร อย่างไรก็ตามเมื่อใดก็ตามที่ฉันใช้GameObject go = new GameObject()
วัตถุเกมใหม่จะถูกเพิ่มเข้าไปในที่เกิดเหตุ
การใช้ Unity ที่สร้างในรูปแบบสำเร็จรูปฉันสามารถโหลดรูปแบบสำเร็จรูปเป็น GameObject และมันไม่ได้เพิ่มเข้าไปในฉาก (ดูตัวอย่างด้านล่าง)
เหตุผลที่อยู่เบื้องหลังนี้คือฉันต้องการมีหนึ่งรายการที่มี GameObjects บางรายการสร้างขึ้นโดยการโหลด Unity prefab และอื่น ๆ ที่สร้างขึ้นโดยระบบ prefab ที่กำหนดเองของฉัน สิ่งนี้ต้องเกิดขึ้นในเวลาทำงานและไม่สามารถมีส่วนร่วมกับ Unity Editor (เนื่องจากผู้ใช้ปลายทางจะสามารถกำหนดไฟล์ข้อมูลของตัวเองได้)
ฉันจะสร้าง GameObject ใหม่โดยไม่มีความเป็นเอกภาพในการสร้างอินสแตนซ์ให้ฉันอัตโนมัติได้อย่างไร
ตัวอย่างเช่นฉันสามารถโทรออกเช่นนี้
Resources.LoadAll("PrefabsDirectory", typeof(GameObject))
และฉันจะได้รับรายชื่อ GameObjects ซึ่งจะไม่มีการเพิ่มเข้าไปในที่เกิดเหตุเมื่อมีการโทรออก โดยพื้นฐานแล้วฉันกำลังสร้างLoadAll
วิธีการสำหรับ prefab ของตัวเองและในทำนองเดียวกันฉันไม่ต้องการยกตัวอย่าง GameObjects เมื่อมีการโทร
Destroy
GameObject ซึ่งจะลบมันออกจากฉากและปล่อยออกมาทำให้มันใช้ไม่ได้
go.SetActive(false)
เป็นวิธีที่ดีที่สุดในการสร้างบางสิ่งบางอย่างเช่นกลุ่มวัตถุ มันไม่ใช่สิ่งที่คุณต้องการอย่างแน่นอน แต่บางทีคุณอาจมีกลุ่มวัตถุที่ไม่ใช้งานกลุ่มเล็ก ๆ ที่ถูกโคลนหลังจากการสร้างอินสแตนซ์ของคุณเอง