ทำ Object Pooling ง่ายๆ ด้วย Ez Pooling

schedule

09/04/2018

สวัสดีครับ กลับมาพบกับเทคนิคดีๆในการเขียนเกมด้วย Unity กันอีกครั้งนะครับ โดยวันนี้ผมก็มี Asset เจ๋งๆมาฝากเพื่อนๆกันเช่นเคยครับ แต่ Asset วันนี้นอกจากจะฟรีแล้ว ยังเหมาะสมกับเพื่อนๆทุกคนเลยก็ว่าได้นะครับ เพราะ Asset ที่ผมนำมาฝากในวันนี้มีชื่อว่า EZ Pooling ครับ เพื่อนๆทั้งมือเก่าและมือใหม่อาจจะเคยได้ยินคำว่า Object pooling กันมาบ้างใช้ไม๊ล่ะครับ หลักการของมันอธิบายง่ายๆก็คือการสร้างออบเจคเตรียมไว้ใช้ตั้งแต่ต้นเลย และจะนำมาใช้ตอนที่ต้องการโดยไม่ทำลายทิ้งนั่นเองครับ ซึ่งกับเกมที่มีการสร้างออบเจคใหม่ระหว่าง Run time เยอะๆนั้นไม่ดีต่อ Performance ของเกมเราครับ การมี Object pooling ก็จะทำให้เรานำออบเจคกลับมาใช้ใหม่ได้นั่นเองครับ ซึ่งจริงๆแล้วการเขียนระบบ Object pooling เองก็ไมได้ยากเกินไปนักครับ แต่ Asset ที่ผมนำมาฝากในวันนี้จะทำให้เราไม่ต้องเสียเวลาสร้างระบบนี้ขึ้นมาเอง โดย Asset ตัวนี้จะสร้างระบบ Object pooling ให้เรานั่นเองครับ มาดู Scene ตัวอย่างกันเลยครับ โดย Scene ที่ผมจะยกมาเป็นตัวอย่างจะเป็น Scene ที่ชื่อว่า recycle prefab ครับ จากภาพ Component ที่เราสนใจก็คือ Ez pool manager ครับ โดยที่นี่จะเป็นการสร้าง Pool ของเรา สิ่งที่เราต้องตั้งค่าก็คือ
  • Prefab : ลากเอา Prefab ที่เราต้องการจะทำ Pooling มาใส่ครับ
  • Show debug log : เอาไว้เปิดการ Debug ของตัว Asset ครับ
  • Preload Qty : จำนวนที่เราต้องการให้ Pool นี่สร้างไว้ตั้งแต่แรก
  • Allow pool to grow : เราจะให้ Pool นี่ขยายจำนวนสมาชิกได้มากกวี่ท่เราตั้งค่าไว้หรือไม่
  • Allow pool to recycle : ให้นำออบเจคที่สร้างไว้ใช้ใหม่หรือไม่
ซึ่งวิธีการเรียกใช้ออบเจคที่ทำ Pool ไว้แล้วก็ไม่ยากครับ เพียงแค่ใช้คำสั่งนี้
EZ_PoolManager.Spawn(prefab, Random.insideUnitSphere, Random.rotation);
แทนการ Instantiate แบบปกตินั่นเองครับ โดยหาก Pool ของเรายังใช้ไม่หมดก็จะเอาใน Pool ตัวถัดไปมาใช้ แต่ถ้าหมดแล้วก็จะนำตัวที่อยู่ตัวแรกมาใช้ใหม่นั่นเองครับ ซึ่งหลายๆครั้งการเอา Object มาใช้ใหม่ ก็จำเป็นต้อง Reset ค่าให้กับตัวออบเจคด้วยครับ เช่นปรับความเร็วให้กลายเป็น 0 หรือทำให้เกิดพาติเคิลใหม่อีกรอบเป็นตัน ตัว Asset มี Event มารองรับก็คือ
OnSpawned() : จะเกิดเมื่อสั่งการ Object นั้นผ่านฟังชั่นก์ Spawn OnDespawned() : จะเกิดเมื่อ Pool เราสั่งลบ Object นั้นครับ
  เพื่อนๆที่สนใจก็สามารอ่านจาก Manual ที่อยู่ใน Asset ได้ครับ โดยสามารถดาวโหลด Asset ได้ ที่นี่ ครับ เป็นยังไงบ้างครับกับ Asset ที่นำมาฝากกันในวันนี้ เชื่อว่าเพื่อนๆน่าจะได้นำไปใช้กันอย่างแน่นอนนะครับ เพราะช่วยให้เราประหยัดเวลาได้อย่างมากเลยครับ แล้วพบกันใหม่โอกาสต่อไปครับ
arrow_left

กลับหน้ารวม

เรียนทำเกมที่ช่องของเรา

เป็นเพื่อนกับเรา

ProGaming

บริษัท โปรเกมมิ่ง จำกัด
522/222 อาคารสปีดเวย์ ชั้น 5 ซอยทรัพย์ธานี ถนนอโศก-ดินแดง แขวงดินแดง เขตดินแดง กรุงเทพฯ 10400

© Copyright 2023 ProGaming Co. Ltd.

Gaming as a service