ฉันควรรวม GameObject หลัก Canvas ไว้ใน UI รูปแบบสำเร็จรูปใน Unity หรือไม่

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

ดังนั้นคำถามของฉัน: ฉันควรรวม Canvas เป็น GameObject หลักในรูปแบบสำเร็จรูปหรือฉันควรทำให้ลูกคนแรกเป็นรูปแบบสำเร็จรูป (ดูภาพ) ฉันเห็นสองมุมมอง:

  1. ในแง่หนึ่ง การสแกนรายการองค์ประกอบในรากของฉากและมองเห็นวัตถุสีน้ำเงินถือเป็นเรื่องดี และรู้ว่าองค์ประกอบเหล่านั้นจะถูกจำลองข้ามฉากโดยอัตโนมัติ นอกจากนี้ ยิ่งมีออบเจ็กต์ที่เก็บไว้ในรูปแบบสำเร็จรูปมากเท่าไร ก็จะทำให้ไฟล์ YAML ของฉันเสียหายน้อยลง
  2. ในทางกลับกัน ด้วยสคริปต์ Canvas Scalar บนพาเรนต์ ขนาดภายในรูปแบบสำเร็จรูปจะได้รับการอัปเดตทุกครั้งที่ฉันเปลี่ยนความละเอียด / แพลตฟอร์ม และฉันได้อ่านแล้วว่าไม่ดีเสมอไปในการอัปเดตนอกโหมดรูปแบบสำเร็จรูป ปัญหาอีกประการหนึ่งคือความจริงที่ว่าองค์ประกอบ UI มักจะมีการอ้างอิงภายนอกจำนวนมากเพื่ออัปเดตข้อความและอื่นๆ

ลำดับชั้น


person ow3n    schedule 31.10.2020    source แหล่งที่มา


คำตอบ (1)


หลังจากการค้นคว้าเพิ่มเติมมากมาย ฉันได้ข้อสรุปเกี่ยวกับคำตอบ:

  1. ตามที่ระบุไว้ใน การพูดคุยครั้งนี้ที่ Unite 2017 โดยแยกเกาะองค์ประกอบ UI ตามข้อกังวลและความถี่ การอัปเดตจะทำให้ UI ไม่ส่งผลกระทบต่อประสิทธิภาพการทำงาน วิดีโอยังระบุด้วยว่าการใช้ Canvas หลายอัน ภายใน Canvas อื่นๆ เพื่อให้บรรลุเป้าหมายนี้เป็นเรื่องปกติ
  2. หากคุณเพิ่มรูปแบบสำเร็จรูปที่มีค่าที่ได้รับการอัปเดตจากภายนอกรูปแบบสำเร็จรูป ค่าเหล่านั้นจะปรากฏเป็นการแทนที่รูปแบบสำเร็จรูปนั้น ซึ่งรวมถึงหากคุณเชื่อมโยงไปยังองค์ประกอบภายนอกรูปแบบสำเร็จรูปจากภายในและในทางกลับกัน (ดูภาพ) ที่สำคัญ มันเป็นไปไม่ได้ที่จะใช้การแทนที่เหล่านี้กับรูปแบบสำเร็จรูป และนั่นคือประเด็นสำคัญ Unity ยอมรับว่าการเปลี่ยนแปลงเหล่านี้จะเกิดขึ้น และนี่คือวิธีจัดการกับการเปลี่ยนแปลงโดยไม่ทำลายรูปแบบสำเร็จรูปหรือฉาก

ดังนั้นคำตอบคือใช่ การรวมพาเรนต์ Canvas ไว้ในรูปแบบสำเร็จรูปนั้นไม่มีปัญหา และคุณยังสามารถจัดระเบียบมันไว้ใน Canvas อื่นได้ เพื่อให้พวกมันทั้งหมดสืบทอดการตั้งค่าเดียวกัน นอกจากนี้ เนื่องจากโค้ดที่เก็บไว้ในรูปแบบสำเร็จรูปมากขึ้นจะลดโค้ดพิเศษที่เหมือนกัน (ไม่มีการจัดระเบียบ) ในไฟล์ .unity YAML (ในกรณีของฉันจาก 17,000 บรรทัดเหลือเพียงน้อยกว่า 5,000 บรรทัด!) ดังนั้นนี่จึงเป็นวิธีที่แนะนำ

แทนที่

การอ้างอิงภายนอก

person ow3n    schedule 31.10.2020