คู่มือนี้จะสรุปวงจรการพัฒนาเกมโดยทั่วไป หลังจากอ่านข้อความนี้ คุณอาจพบว่าสามารถใช้เป็นข้อมูลอ้างอิงได้ด้วย
เมื่อคุณทำงานกับ Unity วงจรการพัฒนาประกอบด้วย เฟส:
- วางแผนและออกแบบ
- พัฒนาและทดสอบ
- เผยแพร่และดูแลรักษา
วางแผนและออกแบบ
ในขั้นตอนการวางแผนและการออกแบบ คุณจะกำหนดวิธีสร้างเกมได้ คุณ ตัดสินใจเลือกวิธีรับมือกับความท้าทายในการพัฒนาสำหรับอุปกรณ์เคลื่อนที่ และ ระบุเครื่องมือและกระบวนการที่จะใช้ในการพัฒนา
รับความคิดเห็นจากสมาชิกทุกคนในทีม
ทำงานกับศิลปะ วิศวกรรม การออกแบบ เสียง และ สำหรับฝ่ายผลิตเพื่อระบุและบันทึกงานการนำไปใช้งาน เช่น
- ทีมศิลปะอาจสร้างพื้นผิวเนื้อหาและงบประมาณที่ทำงานร่วมกันสำหรับตัวละครต่างๆ และสภาพแวดล้อม
- ฝ่ายวิศวกรรมอาจกำหนดจุดตรวจสอบหน่วยความจำและประสิทธิภาพ โดยสร้างโปรไฟล์ตามแต่ละแพลตฟอร์ม
- การออกแบบอาจวางแผนกลไกของเกมที่ช่วยให้เล่นเกมได้
- ผู้เชี่ยวชาญด้านเสียงอาจตรวจสอบข้อกำหนดเพื่อความต่อเนื่องของเสียงระหว่าง UI, เสียงรอบทิศทาง 2 มิติ และ 3 มิติ
- เวอร์ชันที่ใช้งานจริงอาจบอกข้อกำหนดการเปิดตัวและคง สอดคล้องกันและเป็นไปตามแผน
ออกแบบสำหรับอุปกรณ์เคลื่อนที่
การพัฒนาแอปพลิเคชันสำหรับแพลตฟอร์มมือถือเกี่ยวข้องกับการพิจารณาเฉพาะ เช่น
- สัดส่วนภาพของหน้าจอที่เปลี่ยนแปลงได้
- การใช้พลังงาน
- การควบคุมความร้อนและโปรเซสเซอร์
- การป้อนข้อมูลด้วยการสัมผัส
- การพัฒนาข้ามแพลตฟอร์ม
- API กราฟิก (Vulkan หรือ OpenGL ES)
สำหรับรายละเอียดเกี่ยวกับข้อควรพิจารณาเฉพาะสำหรับการออกแบบสำหรับอุปกรณ์เคลื่อนที่ โปรดดู การพัฒนา Android ใน Unity จาก Unity และ Google Play Academy
พัฒนาและทดสอบ
ในช่วงพัฒนาและทดสอบ คุณจะสร้างเกม ทดสอบและ การเตรียมพร้อมก่อนการเปิดตัว คุณผลิตเนื้อหาแบบจำกัดเป็นการภายใน การทดสอบใน Google Play เพื่อเตรียมคุณให้เป็นไปตาม ข้อกำหนดในการเปิดตัว คุณจะปรับแต่ง กลยุทธ์การติดตั้งใช้งานและจัดระเบียบเนื้อหาใน Unity ตาม การนำส่งเนื้อหา Play และ Unity การกำหนดที่อยู่ได้ ระบบต่างๆ
ส่วนต่อไปนี้จะอธิบายเครื่องมือและเทคนิคของ Unity ที่ได้รับการออกแบบ ที่จะช่วยคุณพัฒนาสำหรับ Android
แสดงผล
การแสดงผลคือขั้นตอนการวาดเนื้อหา 3 มิติและ 2 มิติจากฉาก Unity บนหน้าจอ แม้ว่าเครื่องมือ Unity จะจัดการกับการแสดงผล คุณจะต้องพิจารณาปัจจัย 2-3 ประการสำหรับแพลตฟอร์ม Android
พื้นผิว
พิจารณาว่าต้องการขนาดพื้นผิวที่ใหญ่ที่สุดหรือไม่ โดยอิงตามเป้าหมาย อุปกรณ์ เมื่อคุณสร้างโปรไฟล์ การจัดสรรหน่วยความจำ ตรวจสอบการประหยัดค่าใช้จ่ายที่เป็นไปได้จากการเปลี่ยนเป้าหมาย ขนาดพื้นผิว
เวลาที่ใช้ในการแสดงผลเฟรม
กำหนดเป้าหมายเวลาที่ใช้ในการแสดงผลเฟรมเพื่อป้องกันไม่ให้อุปกรณ์ Android ร้อนเกินไป ต่ำกว่า 21 มิลลิวินาทีโดยเฉลี่ย บางครั้ง เช่น ระหว่าง การโหลดหรือประสบการณ์การดูภาพยนตร์สั้นๆ เวลาที่ใช้ในการแสดงผลเฟรม อาจเกิน 21 มิลลิวินาทีได้ แต่คุณควรมีขนาดไม่เกิน 21 เกณฑ์มิลลิวินาทีสำหรับประสบการณ์การเล่นเกมหลัก
สำหรับแพลตฟอร์มอุปกรณ์เคลื่อนที่ VSync บังคับให้ควบคุมอัตราเฟรมหากคุณไม่ ถึงเป้าหมายขั้นต่ำแล้ว เช่น ในการอัปเดตหน้าจอ 60Hz หากคุณไม่กด 60 FPS เกมของคุณจะถูกควบคุมไว้ที่ 30 ถ้าไม่ถึง 30 ก็จะถูกควบคุม 15.
อุปกรณ์ Android หลายรุ่นมาพร้อมอัตราการรีเฟรชจอแสดงผลที่ 60 Hz และ 120 Hz โปรดชั่งน้ำหนักข้อดีของการกำหนดเป้าหมายเวลาที่ใช้ในการแสดงผลเฟรมที่เล็กลงมาก (เป้าหมาย 10 มิลลิวินาทีสำหรับ การอัปเดต 60Hz และ 5ms สำหรับ 120Hz) โดยไม่ต้องเสี่ยงกับการควบคุมความร้อนและ แบตเตอรี่หมดเร็วสำหรับอัตราการแสดงผลที่สูงขึ้น
หากต้องการตั้งค่าอัตราเฟรมเฉพาะในเกมใน Unity ให้ใช้ Application.targetFrameRate
ไลบรารีการกำหนดอัตราการแสดงโฆษณาของ Android ช่วยคุณแสดงภาพ ได้อย่างราบรื่นเมื่อแอปพลิเคชันใช้เวลานานขึ้นในการนำเสนอเฟรมถัดไป มากกว่าอัตรารีเฟรชหน้าจอที่ต้องการ สำหรับ Unity เวอร์ชัน 2021 ขึ้นไป การเปิดใช้งานการกำหนดอัตราเฟรมของ Android จะกำหนดอัตราการรีเฟรชจอแสดงผลเป็น ตรงกับอัตราเฟรมเป้าหมายมากที่สุด วิธีนี้ทำให้แน่ใจว่าเกม ทำให้พลังงานแบตเตอรี่หมดไปกับการอัปเดตจอแสดงผลที่ไม่จำเป็น
หากต้องการเปิดใช้ไลบรารีในการตั้งค่าโปรเจ็กต์ > ผู้เล่น ต่ำกว่า การตั้งค่าสำหรับ Android ให้เลือกช่องทำเครื่องหมายการกำหนดระยะห่างของเฟรมที่เพิ่มประสิทธิภาพ
![กล่องโต้ตอบแสดงการตั้งค่าโปรเจ็กต์ > การตั้งค่าโปรแกรมเล่น > ปรับความเร็วชื่อเสียงให้เหมาะสม](/static/images/games/engines/unity/unity-projectsettings-player.png)
API ของ Vulkan
Vulkan คือ 3 มิติข้ามแพลตฟอร์มประสิทธิภาพสูง Graphic API ที่มีโอเวอร์เฮดต่ำเมื่อเทียบกับ OpenGL ES Unity ใช้ Vulkan ได้ ใน 2 วิธี
API กราฟิกอัตโนมัติ
คุณสามารถใช้ Auto Graphics API กับ Vulkan ได้ แต่ API นี้อาจ โดยขึ้นอยู่กับเวอร์ชัน Unity ที่คุณติดตั้ง คุณสามารถเลือก โดยไปที่การตั้งค่าโปรเจ็กต์ > โปรแกรมเล่น > การแสดงภาพ
โปรดคำนึงถึงข้อควรพิจารณาต่อไปนี้เมื่อเลือก Unity เวอร์ชัน ใช้:
- Unity 2021.1 และเวอร์ชันก่อนหน้าไม่รองรับ Vulkan ที่มี Auto API กราฟิก Unity จะพยายามใช้ OpenGL ES 3.2 หากอุปกรณ์ไม่รองรับ OpenGL ES 3.2, Unity จะกลับไปใช้ OpenGL ES 3.1, 3.0 หรือ 2.0 ตามลำดับ
- Unity 2021.2 และเวอร์ชันที่ใหม่กว่าจะใช้ Vulkan ก่อน หากอุปกรณ์ ไม่รองรับ Vulkan, Unity จะกลับไปใช้ OpenGL ES 3.2, 3.1, 3.0 หรือ 2.0
![การตั้งค่าโปรเจ็กต์ > การตั้งค่าโปรแกรมเล่น > การแสดงผล > API กราฟิกอัตโนมัติ](/static/images/games/engines/unity/unity-auto-graphics-api.png)
API กราฟิกด้วยตนเอง
หรือคุณสามารถเปิดใช้ Vulkan ด้วยตนเองโดยปิดใช้ Auto Graphics API หากคุณใช้ Unity 2021.1 หรือเวอร์ชันก่อนหน้า วิธีนี้เป็นวิธีเดียวในการใช้ Vulkan
หาก Vulkan ได้รับการเรียงลำดับสูงกว่าใน OpenGL ES ในรายการนี้ Unity จะพยายามใช้ Vulkan หากอุปกรณ์ไม่รองรับ Vulkan Unity จะทำงานกับ OpenGL ES โปรดดูเริ่มต้นใช้งาน Vulkan สำหรับข้อมูลโดยละเอียดเกี่ยวกับ Vulkan บน Android เช่น วิธีใช้ API กราฟิกที่ทันสมัย และเพิ่มประสิทธิภาพเกมของคุณ
![การตั้งค่าโปรเจ็กต์ > การตั้งค่าโปรแกรมเล่น > การแสดงผล > API กราฟิก](/static/images/games/engines/unity/unity-graphics-apis.png)
วาดการโทร
ทุกอย่างที่แสดงบนหน้าจอจะเชื่อมโยงกับการโทรออกอย่างน้อย 1 สาย เปิด แพลตฟอร์มอุปกรณ์เคลื่อนที่ คุณควรเพิ่มประสิทธิภาพและลดจำนวนการโทรสุ่มที่ ที่คุณส่งไปยังหน่วยประมวลผลกราฟิก (GPU)
ลองคิดว่าการดึงดูดความสนใจก็เหมือนกับการต่อรถที่ไฟจราจร หลังจาก ไฟเปลี่ยนเป็นสีเขียว แสดงว่ามีรถผ่านได้จำนวนหนึ่งก่อนถึงไฟ การเปลี่ยนแปลง เมื่อไฟเปลี่ยนเป็นสีเหลือง คุณจะถึงเฟรมเป้าหมายที่ต้องการ (21 มิลลิวินาที) และเมื่อไฟเปลี่ยนเป็นสีแดง ก็ถึงระดับ 33 แล้ว เวลาที่ใช้ในการแสดงผลเฟรมของมิลลิวินาที อะไรก็ตามที่ผ่านไปแล้วซึ่งส่งผลกระทบต่อเฟรมการแสดงภาพถัดไป ดังนั้นอัตราเฟรมที่ได้จึงต่ำกว่าเป้าหมาย 30 FPS
สำหรับข้อมูลเกี่ยวกับวิธีปรับปรุงประสิทธิภาพการโทรที่ดึงดูดในเกม โปรดดู แบบกลุ่ม จากทีมสนับสนุนของ Unity
Shadows
การเรียกใช้การวาดการแคสต์เงาอาจเป็นการใช้ GPU ที่มากเป็นพิเศษและกินเวลามากที่สุด เวลา GPU แม้จะเป็นสภาพแวดล้อมที่เรียบง่าย เพื่อลดค่าใช้จ่ายในการแคสต์เงา สร้างการเรียกใช้ ให้ทดลองใช้วิธีฮาร์ดโค้ดแทนการใช้เงาที่นุ่มนวล ถ้า ราคานี้ยังแพงเกินไปใน GPU สำหรับอุปกรณ์ระดับโลว์เอนด์ โปรดลองใช้ เงาหยดน้ำแทนที่จะเป็นเงาจริง
พื้นผิว
พื้นผิวที่แนะนำ รูปแบบการบีบอัดสำหรับพื้นผิว RGB และ RGBA บน Android คือ ASTC ใน Unity ตัวเลือกการบีบอัดพื้นผิวขั้นต่ำที่คุณควรใช้ใน Android คือ ETC2 คุณสามารถกลับไปใช้ ETC2 ในฐานะ สำรองข้อมูลจาก ASTC ภายใต้ Unity Build Settings
ดูรายการรูปแบบทั้งหมดที่รองรับตามแพลตฟอร์มได้ในเอกสารประกอบของ Unity ที่ ด้วยตนเอง: รูปแบบพื้นผิวที่แนะนำ ค่าเริ่มต้น และที่รองรับตามแพลตฟอร์ม
อินเทอร์เฟซผู้ใช้และอัตราส่วน
คุณสามารถใช้ Unity เครื่องจำลองอุปกรณ์ เครื่องมือสำหรับแสดงตัวอย่างความละเอียด การวางแนว และหน้าจอของอุปกรณ์ต่างๆ ใน Unity Editor โดยตรง คุณสลับระหว่างมุมมองเกมได้ และมุมมองเครื่องจำลองอุปกรณ์
ดูตัวอย่างเครื่องมือได้ที่ จำลองเกมของคุณด้วยโปรแกรมจำลองอุปกรณ์ใน Unity!
![](https://developer.android.com/static/images/games/engines/unity/unity-trivialkart-scene.png?authuser=7&hl=th)
คุณสามารถค้นหาซอร์สโค้ด Trivial Kart ใน ตัวอย่างเกม ใน GitHub
คุณสามารถตรวจสอบรูปแบบและความถูกต้องขององค์ประกอบ Canvas ของ UI ได้อย่างรวดเร็วใน มุมมองเครื่องมือจำลองอุปกรณ์โดยเลือกตัวเลือกอุปกรณ์ในเมนูแบบเลื่อนลง เมนู
![การตั้งค่าโปรเจ็กต์ > การตั้งค่าโปรแกรมเล่น > กำหนดระยะห่างของเฟรมให้เหมาะสมแล้ว](/static/images/games/engines/unity/unity-multiple-device-test.png)
![การตั้งค่าโปรเจ็กต์ > การตั้งค่าโปรแกรมเล่น > ปรับความเร็วชื่อเสียงให้เหมาะสม](/static/images/games/engines/unity/unity-package-manager.png)
สำหรับเทคนิคการเพิ่มประสิทธิภาพ UI เพิ่มเติมสำหรับ Unity โปรดดูบทแนะนำต่อไปนี้จาก Unity: การเพิ่มประสิทธิภาพ UI ของ Unity
ฟิสิกส์
เครื่องมือ Nvidia PhysX สร้างขึ้นมาเพื่อ Unity การตั้งค่าเริ่มต้น อาจมีค่าใช้จ่ายสูงบนอุปกรณ์เคลื่อนที่ ดังนั้นโปรดคำนึงถึงสิ่งต่อไปนี้
- พิจารณาอัตราเฟรมเป้าหมายและกำหนดขั้นตอนที่แน่นอนให้สอดคล้องกัน ค่าเริ่มต้นคือ 0.02 มิลลิวินาที หรือ 50 Hz คุณสามารถเพิ่มเป็น 0.03 หรือ ที่สูงขึ้นสำหรับเป้าหมาย 30fps
- พิจารณาลดความซับซ้อนของ Mesh Collis และลดการชนของเลเยอร์ (Layer Collision) เมทริกซ์สำหรับกำหนดการโต้ตอบระหว่างออบเจ็กต์ในเกมของเลเยอร์ที่เฉพาะเจาะจง ประเภทต่างๆ
สำหรับข้อมูลเกี่ยวกับ การตั้งค่าทางฟิสิกส์ และการเพิ่มประสิทธิภาพสำหรับเกมบนอุปกรณ์เคลื่อนที่ให้ดู eBook ของการเพิ่มประสิทธิภาพเกมในอุปกรณ์เคลื่อนที่ จาก Unity
โปรไฟล์
นักพัฒนาแอปมักมองข้ามหรือละเลยการทำโปรไฟล์จนถึงแอป ถึงจุดความล้มเหลวขั้นวิกฤต คุณควรกำหนดเวลานัดหมาย จัดทำโปรไฟล์เวลาเข้าสู่กระบวนการของคุณ และใช้แนวทางปฏิบัติแนะนำต่อไปนี้:
- ระบุประเด็นสำคัญระหว่างการพัฒนาเมื่อคุณจัดสรรการทำโปรไฟล์ได้ แทนที่จะใส่เวลาให้พอดี
- บันทึกสแนปชอตโปรไฟล์เพื่อใช้กับ เครื่องมือวิเคราะห์โปรไฟล์ Unity
- ทำโปรไฟล์เกมในอุปกรณ์เป้าหมายเพื่อให้เห็นภาพวิธีที่แม่นยำ เกมของคุณมีประสิทธิภาพในขั้นการพัฒนาปัจจุบัน
- ทำโปรไฟล์ส่วนต่างๆ ของเกม
- ทำโปรไฟล์วิธีที่ผู้เล่นเล่นเกม (อย่าสร้างโปรไฟล์ของเกมของคุณเท่านั้น เมื่ออยู่ในสถานะไม่มีการใช้งานหรือในหน้าจอหยุดชั่วคราว)
- โปรไฟล์ในโหมดยั่งยืนหลังจากเกมทำงานไปได้สักพัก เพื่อช่วยค้นหาปัญหาการควบคุมที่คุณอาจพบเมื่ออุปกรณ์เคลื่อนที่ อุปกรณ์ร้อน
คุณสามารถใช้เครื่องมือสร้างโปรไฟล์ต่อไปนี้แยกกันหรือใช้ร่วมกันก็ได้
Unity Profiler เครื่องมือสร้างโปรไฟล์ของ Unity เป็นประสิทธิภาพที่ผสานรวมอย่างสมบูรณ์ เครื่องมือวิเคราะห์ที่สามารถทำงานกับโค้ดของคุณใน Unity Editor และ เชื่อมต่อกับอุปกรณ์ Android แบบสแตนด์อโลนที่ใช้บิลด์ในโหมดการพัฒนา
เครื่องมือตรวจสอบ Android GPU ด้วยตัวตรวจสอบ Android GPU (AGI) คุณจะแก้ไขข้อบกพร่องระดับเฟรมได้ AGI ด้วย วิเคราะห์บริการของระบบ ซึ่งรวมถึง GPU, CPU, หน่วยความจำ, แบตเตอรี่ และ GPU ตัวนับ
ดูรายละเอียดเกี่ยวกับการสร้างโปรไฟล์เกมใน Unity ได้ที่วิดีโอ ข้อมูลเบื้องต้นเกี่ยวกับการสร้างโปรไฟล์ใน Unity หรืออ่าน คู่มือแนะนำในการทำโปรไฟล์เกม Unity ทั้งจาก Unity
การจัดการหน่วยความจำ
กระบวนการของ Android จะแชร์หน่วยความจำที่ใช้ได้ในอุปกรณ์เป้าหมาย คุณควร การใช้งานหน่วยความจำของโปรไฟล์เมื่ออุปกรณ์ทดสอบเป้าหมายมีหน่วยความจำที่ว่างเพียงพอ ที่ไม่ซับซ้อน ทดสอบหน่วยความจำอย่างสม่ำเสมอ ชี้เมาส์ในเกมของคุณ เพื่อให้คุณสามารถเปรียบเทียบเซสชันและแนวโน้มการใช้งานหน่วยความจำ อย่างเหมาะสม
เมื่อคุณทำงานในสคริปต์ที่เขียนด้วย C# โปรดระวังการใช้สตริง การเปรียบเทียบสตริง และการจัดสรรออบเจ็กต์ที่เกี่ยวข้องกับสตริง (เช่น JSON ไฟล์สำหรับการตั้งค่าเกม) สิ่งเหล่านี้จะสร้างการจัดสรรหน่วยความจำบ่อยครั้งและ ทำให้เกิดการกระจาย Fragment ได้
ลองใช้
StringBuilder
คลาสสำหรับการจัดเรียงสตริงในลำดับขนาดใหญ่มากกว่าการต่อกันในตำแหน่งของ
สตริง (เช่น "this" + "is" + "a" + "bad" + "idea" กับ
การเรียกฟังก์ชัน StringBuilder.Concat()
)
ดูข้อมูลเพิ่มเติมเกี่ยวกับสตริงได้ที่ สตริงและข้อความ ในเอกสารประกอบของ Unity
ประเมินทรัพยากรข้อความและเนื้อหาข้อความ JSON เทียบกับสิทธิพิเศษ
ประเภท ScriptableObject
พื้นที่เก็บข้อมูลข้ามฉากของ ScriptableObjects
อย่างมีประสิทธิภาพและสามารถแก้ไขเวลา "เอดิเตอร์เพื่อเล่น" ได้
สำหรับการสนทนาเกี่ยวกับการใช้ทางเลือกอื่นแทนค่าเริ่มต้น แฮนเดิล JSON สำหรับการเพิ่มประสิทธิภาพอุปกรณ์เคลื่อนที่ โปรดดูบทความ การเพิ่มประสิทธิภาพที่ซ่อนอยู่ในเกมเครือข่าย ใน Hutch
ใช้เมนู Memory Advice API เพื่อระบุว่าการใช้หน่วยความจำของคุณเป็นอย่างไรในช่วงรันไทม์ API จะแสดงสัญญาณบอกสถานะไฟหยุดเมื่อใช้หน่วยความจำสูง ปกติ และต่ำ คุณ สามารถสมัครรับข้อมูลตัวบ่งชี้สำหรับการอัปเดตหรือสำรวจความคิดเห็นได้โดยตรง สำหรับราคาปัจจุบัน สถานะ เมื่อได้รับสัญญาณสีแดง ให้พิจารณาการลดวัตถุในเกม พูลหรือแคช ใส่บริบทนี้ในการส่งข้อมูลทางไกลของเกมระหว่างการถ่ายทอดสด การดำเนินงานและการตรวจสอบเมตริกประสิทธิภาพหลังการเปิดตัว
ดูรายละเอียดการจัดระเบียบหน่วยความจำในอุปกรณ์ Android และวิธีที่ Unity ใช้งานกับนาฬิกาได้ ทำความเข้าใจการใช้งานหน่วยความจำของ Android (จาก Google I/O '18) วิดีโอจะแนะนำปัญหาเกี่ยวกับหน่วยความจำประเภทต่างๆ และช่วงเวลาที่หน่วยความจำเหลือน้อย นักฆ่าได้ผลจริงๆ
บริการเก็บขยะ
การเก็บขยะในสภาพแวดล้อมหน่วยความจำที่มีการจัดการจะล้างหน่วยความจำที่ไม่ได้ใช้ ส่วนย่อยที่นำมารีไซเคิลให้กับแอปพลิเคชันได้ ติดตาม แนวทางปฏิบัติแนะนำเกี่ยวกับการเก็บขยะ เพื่อหลีกเลี่ยงการจัดสรรทรัพยากรหน่วยความจำโดยไม่จำเป็น
เช่น สร้าง Object Pool ของเกมแทนการใช้งานแบบออนดีมานด์
การจัดสรร (GameObject.Instantiate
) สำหรับสระว่ายน้ำขนาดใหญ่
การจัดสรรหลายเฟรมเพื่อลดความเสี่ยงที่เกมจะเกิด
ไม่ตอบสนองในอุปกรณ์ Android ระดับเริ่มต้น
พิจารณาข้อมูลโค้ดต่อไปนี้สำหรับโคโรทีนอย่างง่ายที่เรียกใช้จาก จุดเริ่มต้นของ MonoBehaviour:
// Option 1: Bad for memory management - causes allocation each iteration
IEnumerator UpdateEnemyTarget() {
while (enabled) {
yield return new WaitForSeconds(1.0f);
// Some intermittent function check
}
}
// Option 2: Better for memory management - allocation of yield instruction once, reused each iteration
private YieldInstruction waitForSecond = new WaitForSeconds(1.0f);
IEnumerator BetterUpdateEnemyTarget() {
while (enabled) {
yield return waitForSecond;
// Some other intermittent function
}
}
คุณสามารถ
แก้ไข
ไฟล์เทมเพลต MonoBehaviour เพื่อนำ Start()
เริ่มต้นออกและ
Update()
ฟังก์ชันต้นขั้วช่วยให้คุณไม่ปล่อยว่างไว้โดยไม่เจตนา
จะมีประสิทธิภาพที่สุด
ขณะที่คุณพัฒนา
สำหรับภาพรวมลำดับการดำเนินการของกิจกรรม MonoBehaviour โปรดดู ลำดับการดำเนินการสำหรับฟังก์ชันเหตุการณ์ ในเอกสารประกอบของ Unity หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับการจัดการหน่วยความจำ โปรดดู หลักสูตร การจัดการหน่วยความจำใน Unity
สำหรับเคล็ดลับการเพิ่มประสิทธิภาพเกมในอุปกรณ์เคลื่อนที่ โปรดดู เพิ่มประสิทธิภาพของเกมในอุปกรณ์เคลื่อนที่: เคล็ดลับในการทำโปรไฟล์ หน่วยความจำ และสถาปัตยกรรมโค้ดจากวิศวกรชั้นนำของ Unity
การรวมกลุ่ม Prefab
การเพิ่มขึ้นของเวลาเฟรม CPU ที่เพิ่มขึ้นเกือบทั้งหมดเกิดจากการสร้างอินสแตนซ์ Prefab ระหว่าง ได้อย่างมีประสิทธิภาพ พิจารณาเตรียมพูลวัตถุล่วงหน้าสำหรับโพรเจกไทล์ ศัตรูที่ก่อตัวได้ และเอฟเฟกต์ภาพก่อนเข้าสู่เกมเพลย์เพื่อลดหรือ ทำให้ CPU สตาร์ทอัพพุ่งสูงขึ้นได้ คุณสามารถกระจายการเพิ่มประสิทธิภาพเพิ่มเติมได้ บน "เฟรมเริ่มต้น" หลายเฟรม ระหว่างการโหลดหรือ ลำดับบทนำในฉากของคุณ
คุณสามารถค้นหาเนื้อหาร่วมของบุคคลที่สามได้ในเนื้อหา Unity ร้านค้า ที่เกี่ยวข้องกับการจัดการการจัดกลุ่มออบเจ็กต์ในเกม ทั้งยังสร้างการโต้ตอบของคุณเองได้อีกด้วย โปรดดู ข้อมูลเบื้องต้นเกี่ยวกับ Object Pooling ใน Unity Learn
การนำส่งเนื้อหา
มีการจำกัดขนาดของแอปพลิเคชันเมื่อเริ่มใช้งานครั้งแรก ลงใน Google Play แล้ว ทั้งนี้ขึ้นอยู่กับขนาดและลักษณะของเกม อาจต้องใช้ทรัพยากรเกมบางส่วนหรือทั้งหมด (โมเดลตัวละคร สภาพแวดล้อม องค์ประกอบ UI และอื่นๆ) เพื่อให้ผู้เล่นได้รับประสบการณ์ตามที่คุณคาดหวัง
คุณสามารถใช้ การนำส่งเนื้อหา Play (PAD) เพื่อจัดการเนื้อหาที่เกมต้องการ ณ เวลาติดตั้ง การติดตามอย่างรวดเร็ว หรือออนดีมานด์ มีการผสานรวม Unity Asset Bundle เพื่อรองรับ PAD และคุณจะใช้เครื่องมือเพื่อระบุองค์ประกอบที่จะแสดงได้
ระบุที่อยู่ได้
การตั้งค่าทรัพยากรแบบไดนามิก เช่น Prefabs, พื้นผิว และเสียง ไฟล์ – ขณะรันไทม์ไม่ใช่การดำเนินการที่ซับซ้อนอีกต่อไปหากคุณเตรียมการ และตรวจสอบระบบการตั้งชื่อ Addressable ระบุที่อยู่ได้ เนื้อหาจะแยกลักษณะการจัดเรียงเนื้อหาออกจากวิธีที่คุณสร้างและโหลด เนื้อหาของคุณ ระบบ Addressables แทนที่โฟลเดอร์ Resources และเนื้อหา การรวมกลุ่มเนื้อหาเพื่อช่วยให้อ้างอิงเนื้อหาได้ง่ายขึ้นและโหลดขณะรันไทม์
ตัวอย่างเช่น ดูที่ โปรเจ็กต์สาธิตที่ใช้แพ็กเกจ Addressables ใน GitHub สำหรับรายละเอียดเกี่ยวกับการพัฒนา Addressable โปรดดูที่ ระบบเนื้อหาที่ระบุที่อยู่ได้ในบล็อก Unity
การจัดวางเนื้อหาที่ระบุได้มีข้อดีและข้อเสียดังนี้ รวมกลุ่มน้อยเกินไปหรือ เนื้อหาในกลุ่มเดียวกันมีมากเกินไป ดูข้อมูลเพิ่มเติมเกี่ยวกับการจัดการเนื้อหาด้วย ระบุที่อยู่ได้ โปรดดู ทำให้การจัดการเนื้อหาง่ายขึ้นด้วย Addressables
คุณสามารถตั้งค่า
สาธิตการใช้งานแบบสแตนด์อโลน และทดลองใช้ วิธีการต่างๆ ในการเข้าถึง
สะดวกใจกับระบบ Addressables คุณยังดูโปรเจ็กต์โอเพนซอร์ส
BuildLayout Explorer สำหรับ Unity 2019.3 ขึ้นไป
และตรวจสอบรายงาน buildlayout.txt
ที่สร้างขึ้นโดย
สามารถระบุที่อยู่ได้
เนื้อหาสำหรับ Chop Chop ซึ่งเป็นโปรเจ็กต์ Unity Open ได้รับการจัดแพ็กเกจโดยใช้ ระบบที่อยู่ได้สำหรับการขนถ่ายและการขนย้ายทั้งหมด โปรดดู การจัดแพ็กเกจเนื้อหาด้วยเนื้อหาที่แก้ไขได้ | เปิดโปรเจ็กต์การพัฒนา เพื่อดูคำแนะนำแบบทีละขั้นเกี่ยวกับโครงสร้างและการตั้งค่าการกำหนดค่า Addressable
ในโปรเจ็กต์ Chop Chop ฉากเดียวที่โหลดโดยค่าเริ่มต้นคือการเริ่มต้น
มีการกำหนดค่าให้ใช้ AssetReferences
แทนลิงก์โดยตรงไปยังเนื้อหาในองค์ประกอบ
โปรเจ็กต์ (ฉาก การเตรียมการ และอื่นๆ)
ซอร์สโค้ดสำหรับ โครงการ Unity Open: Chop Chop มีพร้อมให้ใช้งานที่ GitHub แม้ว่าโครงการจะไม่ได้อยู่ระหว่างการพัฒนาแล้ว ที่เก็บ Git และเอกสารประกอบยังคงใช้งานได้
ปลั๊กอินของบุคคลที่สาม
หากคุณใช้ปลั๊กอินของบุคคลที่สาม เช่น ปลั๊กอินใน Unity Asset จัดเก็บ โปรดอย่าลืมตรวจสอบโฟลเดอร์และนําชิ้นงานที่ไม่จำเป็นออกจาก Resources ระหว่างขั้นตอนการสร้าง Unity จะรวบรวม เนื้อหาที่รวมอยู่ในโฟลเดอร์ Resources และจัดแพ็กเกจไว้ในไฟล์เดียว ที่เข้าถึงขณะรันไทม์ได้ ซึ่งอาจเพิ่มความขยาย ให้กับแพ็กเกจสุดท้าย และมักไม่จำเป็น
หากต้องการค้นหาโฟลเดอร์ทรัพยากรทั้งหมดอย่างรวดเร็ว ให้ค้นหาทรัพยากรใน โปรเจ็กต์ แผง คุณสามารถเลือกแต่ละองค์ประกอบเพื่อระบุสิ่งที่อยู่ในแพ็กเกจและระบุว่า เป็นสิ่งจำเป็นสำหรับเกมของคุณ
![](https://developer.android.com/static/images/games/engines/unity/unity-search-resources.png?authuser=7&hl=th)
เผยแพร่และดูแลรักษา
เมื่อพร้อมที่จะเปิดตัวเกมในอุปกรณ์เคลื่อนที่ ให้ตัดสินใจว่าต้องการใคร สำหรับการเผยแพร่ วิธีทำการทดสอบอัลฟาและเบต้า และวิธีตรวจสอบและติดตาม ประสิทธิภาพหลังการเปิดตัว
วิเคราะห์ความคิดเห็นจากรุ่นที่จํากัดการเผยแพร่
คุณสามารถเปิดตัวต่อกลุ่มเป้าหมายที่จำกัดและใช้รุ่นเบต้าขนาดใหญ่ขึ้น หรือเปิดใช้งานเกมเพื่อพร้อมให้บริการอย่างเต็มรูปแบบในทุกตลาด พร้อม รุ่นจำกัด คุณสามารถปรับแต่ง ประสิทธิภาพแอปพลิเคชันของคุณตาม ผู้ชมแบบสดและคอลเล็กชันอุปกรณ์
ตัวอย่างเช่น คุณสามารถใช้ Android Performance Tuner สำหรับ Unity และ Google Analytics สำหรับ Unity รับข้อมูลเชิงลึกเกี่ยวกับประสิทธิภาพของแอปพลิเคชันและแนวโน้มของผู้เล่น ซึ่งทีมพัฒนาสามารถปรับแต่ง และผลักดันการอัปเดต นอกจากนี้ คุณอาจใช้ เพื่อวางแผนภาคต่อหรือ เกมที่เกี่ยวข้องในประเภทที่คล้ายกัน
การทดสอบอัลฟ่าและเบต้า
หลังจากตั้งค่าโปรไฟล์แอปพลิเคชันใน Google Play Console คุณสามารถจัดเตรียมเนื้อหาสาธารณะ การทดสอบอัลฟ่าและเบต้าสร้างขึ้นและเผยแพร่แก่ผู้ชมแบบจำกัดสำหรับ การตรวจสอบก่อนการเปิดตัว โดย กับกลุ่มเป้าหมายที่จำกัด คุณจะสามารถแก้ไขปัญหาสุดท้าย กลุ่มอุปกรณ์และรวบรวมความคิดเห็นเบื้องต้นที่คุณสามารถตอบกลับได้ก่อนไป ที่เผยแพร่แล้วทั่วโลก
บิลด์ Unity ของคุณจะเผยแพร่ผ่าน Android App Bundle สำหรับข้อมูล โปรดดู ด้วยตนเอง: การนำส่งไปยัง Google Play จาก Unity ซึ่งอธิบายการเปลี่ยนแปลงจากไฟล์ APK ไปเป็น AAB ด้วย
ตรวจสอบและติดตาม
ในระหว่างไลฟ์และการเผยแพร่เกม คุณสามารถใช้Android Vitals เพื่อช่วยติดตาม ปัญหาด้านประสิทธิภาพที่ลดลงในอุปกรณ์ที่คุณอาจไม่มีสิทธิ์เข้าถึงในระหว่าง การพัฒนาและการทดสอบ ดูรายละเอียดได้ที่ มีอะไรใหม่สำหรับเกมในการเข้าถึงและอุปกรณ์ ตลอดจน Android Vitals
บ่อยครั้งที่ทีมพัฒนาขนาดใหญ่จะมีไปป์ไลน์การวัดและส่งข้อมูลทางไกลในเกมที่ไม่เหมือนใครและกำหนดเอง ซึ่งมีเมตริกที่เกี่ยวข้องกับประสิทธิภาพของอุปกรณ์ อย่าลืมใช้ประโยชน์ ของ Android Performance Tuner (APT) และปลั๊กอิน Unity ที่เกี่ยวข้องลงในเมตริกการโทรเข้าที่เกี่ยวข้องกับอัตราเฟรม ความคมชัดของกราฟิก เวลาที่ใช้ในการโหลด และการยกเลิกการโหลด ทำตาม คำแนะนำทีละขั้นตอนใน การผสานรวม Android Performance Tuner เข้ากับเกม Unity
วงจรของเกมจะไม่หยุดลงหลังจากที่คุณถ่ายทอดสด การตรวจสอบ การบำรุงรักษา และการตอบสนองต่อประสิทธิภาพและความคิดเห็นเป็นสิ่งสำคัญ เพื่อผู้ใช้ที่พึงพอใจ ได้รับรีวิวเชิงบวก และการนำเกมของคุณไปใช้งานอย่างเต็มที่ ทุกตลาด