[Unity3D][NGUI][ParticleSystem] ใช้ ParticleSystem ร่วมกับ NGUI ใน Unity3D by

30
May
0

เมื่อเราใช้ ParticleSystem ร่วมกับ NGUI ใน Unity3D แล้วก็จะเจอปัญหา Particle ที่เรา Instantiate ขึ้้นมา มันตันไปอยู่ข้างหลัง UI หรือของต่างๆที่เป็น NGUI นะสิ จะปรับ z ก็ไม่ได้ เพราะว่า NGUI นั้นไม่สน z จะปรับ depth ก็ไม่ได้เพราะ Particle ไม่มี depth เอ้า แล้วจะทำยังไงละทีนี้ วิธีแก้ก็มีหลายอย่างมากมาย แต่วันนี้จะมานำเสนอ 2 วิธีนะครับ

วิธีแรกคือ ปรับ Sorting Order ของ Panel ที่เป็น Parent ของ Particle เป็น -1 ครับ ตามรูปเลย
11
พอเราปรับเป็น -1 แล้ว Particle ที่เคยอยู่ข้างหลังสุด ก็กลับมาอยู่หน้าสุดทันทีเลย 55 แต่ๆๆๆๆ วิธีนี้มีข้อเสียใหญ่หลวงๆๆอยู่ด้วยนั่นก็คือ มันจะกลับข้างหลัง-หน้า ทุกอย่างที่อยู่ใน Panel นั้นๆ หมดเลย เหอะๆ (กำ แล้วมาแนะนำทำไมฟะ) ถ้าของใน Panel นั้นไม่มีการเรียงลำดับ depth ซับซ้อนก็ให้ลองวิธีนี้ดูก่อนไงครับ มันปรับนิดเดียวเอง ถ้าปรับแล้ว มันมั่วมากๆๆๆ ก็ค่อยไปลองวิธีถุัดไปละกันเนอะ

วิธีที่สองคือ ให้เพิ่ม Layer เข้าไปอีกชั้นนึงตามรูป
12
พอกดแล้วจะขึ้นตามนี้ ก็พิมชื่อ Layer เข้าไป เช่น “Particle” ตามรูป
13
ต่อไปก็ให้ไปเปลี่ยน Layer ของ Particle ของเราให้เป็น Layer ใหม่ที่เราพึ่งตั้งเมือกี้ ตามรูป
14
ถ้ากดเปลี่ยน Layer แล้ว Unity มันถามว่าจะให้เปลี่ยนลูกๆเป็น Layer เดียวกันด้วยไหมก็ให้ตอบไปว่า “ใช่เสะ” ครับ

และถ้าเรา Instantiate Particle ที่มี Layer สูงกว่า Layer UI ของ NGUI แล้ว Particle นั้นก็จะถูก Render มาอยู่ข้างบนครับบบบบ