---
title: คู่มือการเพิ่มประสิทธิภาพ
slug: world-sdk-guide-th/JcicoNgDN_D0mQ5A5Fo_z
docTags: 
createdAt: 2024-09-02T08:34:13.137Z
---

## หน่วยความจำ

- ZEPETO ถูกออกแบบมาเพื่อโหลดทรัพยากรที่ใช้ในโลกเข้าสู่หน่วยความจำล่วงหน้า.
- ตามเวอร์ชัน 1.7.0 ในโลก อุปกรณ์ที่มีสเปคต่ำที่สุดคือ iPhone 8 (RAM 2GB) และ Galaxy S8 (RAM 4GB).
- ดังนั้นเราจึงต้องทำให้มันไม่เกิน 2GB.
  - อุปกรณ์ที่มีสเปคขั้นต่ำอาจมีการเปลี่ยนแปลงในภายหลัง.
- ในกรณีของโลกหลายผู้เล่น หน่วยความจำควรได้รับการจัดการโดยพิจารณาจำนวนคนสูงสุด เพราะแต่ละตัวละครมีหน่วยความจำ.



## วิธีตรวจสอบตัวชี้วัดประสิทธิภาพ

### วิธีตรวจสอบตัวชี้วัดประสิทธิภาพในสภาพแวดล้อมมือถือ

- กรุณาใช้ Runtime Profiler อย่างเป็นทางการที่ ZEPETO จัดเตรียมไว้ให้.

:::hint{type="info"}
**📘&#x20;**&#xE01;รุณาอ้างอิงจากคู่มือต่อไปนี้. \[[โปรไฟเลอร์รันไทม์](docId\:F0dqrc90c3ssOp5uET-JC)]
:::



### วิธีตรวจสอบตัวชี้วัดประสิทธิภาพสำหรับเซิร์ฟเวอร์ World Multiplayer ในสภาพแวดล้อมการพัฒนาท้องถิ่นของคุณ

หากคุณใช้ VS Code เป็นโปรแกรมแก้ไขสคริปต์ คุณสามารถตรวจสอบตัวชี้วัดประสิทธิภาพต่างๆ เช่น การใช้ CPU การใช้หน่วยความจำ และอื่นๆ สำหรับเซิร์ฟเวอร์ในสภาพแวดล้อมการพัฒนาท้องถิ่นของคุณผ่านปลั๊กอิน

:::hint{type="info"}
**📘&#x20;**&#xE42;ปรดดูคู่มือต่อไปนี้เกี่ยวกับวิธีตั้งค่า VS Code เป็นโปรแกรมแก้ไขสคริปต์ใน Unity

\[[https://code.visualstudio.com/docs/other/unity\\](https://code.visualstudio.com/docs/other/unity\\)]
:::



1\) ค้นหาและติดตั้ง `Flame Chart Visualizer สำหรับโปรไฟล์ JavaScript` ในแผง \[Extension] ที่ด้านซ้ายของหน้าจอ VSCode

![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-hll55lh-9o1EHZd-HrU-q-20240904-102410.png)



:::hint{type="danger"}
- ตัวชี้วัดประสิทธิภาพของสภาพแวดล้อมการพัฒนาท้องถิ่นที่ตรวจสอบโดยปลั๊กอินอาจแตกต่างจากสภาพแวดล้อมการบริการจริง โปรดใช้เพื่อทำความเข้าใจแนวโน้มประสิทธิภาพโดยประมาณและปัญหาประสิทธิภาพที่อาจเกิดขึ้นของโลจิกเซิร์ฟเวอร์หลายผู้เล่นทั่วโลก.
- หากไดเรกทอรีการทำงานของ VS Code ไม่ได้ตั้งค่าเป็นโครงการโลก ปลั๊กอินจะไม่ทำงานอย่างถูกต้อง โปรดเลือกโฟลเดอร์โครงการที่ถูกต้องในแผง \[Explorer].
:::



2\) ไปที่แผง \[Run and Debug] ใน VS Code และเปลี่ยนประเภทการดีบักเป็น Zepeto Multiplay Script.

![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-rXoHCf-J6WhpZw-XxMUOu-20240904-102410.png)



3\) กดปุ่มเล่นบนหน้าจอ Unity เพื่อรันโลก และกดปุ่ม \[เริ่มการดีบัก] ใน VS Code เพื่อเริ่มการดีบักขณะรัน.

คุณสามารถตรวจสอบตัวชี้วัดประสิทธิภาพของเซิร์ฟเวอร์หลายผู้เล่นแบบเรียลไทม์ในแผง \[รันและดีบัก].

![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-qKbcl6UuBL_s5e7j-H3ym-20240904-102410.png)



:::hint{type="success"}
👍 เคล็ดลับ&#x20;

- คุณสามารถเพิ่มตัวชี้วัดประสิทธิภาพต่อไปนี้ได้โดยการคลิกปุ่มสลับการแสดงกราฟประสิทธิภาพในแผง \[รันและดีบัก].
  - การใช้ CPU
  - หน่วยความจำที่ใช้
  - หน่วยความจำทั้งหมด
  - ขนาดชุดที่อาศัย
  - หน่วยความจำภายนอก
  - หน่วยความจำ ArrayBuffer

![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-kK0S0tnfNoZe3JCm-22gs-20240904-102410.png)
:::



### แนวทางการปรับแต่งที่แนะนำ

โปรดปรับแต่งตามเกณฑ์ต่อไปนี้เพื่อให้แน่ใจว่าโลกที่ปล่อยออกมาทำงานตามสเปคขั้นต่ำ

- อุปกรณ์ที่มีสเปคขั้นต่ำ (RAM 2GB) จะล้มเหลวเมื่อ:
  - Runtime Profiler > หน่วยความจำที่จัดสรรเกิน **550MB** โดยเฉลี่ย
    - ![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-6tEdti_ACfRhu2LY51PF_-20240904-102410.png)
  - เมื่อโลกกำลังทำงานจริง ไม่เพียงแต่ทรัพยากรของโลกเท่านั้น แต่ยังมีหลายกระบวนการที่ทำงานในหน่วยความจำ ดังนั้นจึงแนะนำให้เว้นพื้นที่บางส่วนในหน่วยความจำที่จัดสรร
- สำหรับโลกแบบผู้เล่นหลายคน จะมีการจัดสรรหน่วยความจำต่อแต่ละตัวละคร ดังนั้นคุณต้องจัดการหน่วยความจำตามจำนวนผู้เล่นสูงสุด
  - หน่วยความจำเฉลี่ยต่อ ZEPETO ตัวละคร: **35MB**
    - หากคุณใช้หุ่นจำลองประเภทตัวละคร ZEPETO จะใช้หน่วยความจำเท่ากับเมื่อมีตัวละคร Zepeto เข้าสู่ระบบหนึ่งตัว
    - เพื่อวัตถุประสงค์ในการปรับแต่ง เราขอแนะนำให้ใช้หุ่นจำลองประเภท Simple หากเป็นไปได้
  - เฉลี่ยของ **280MB** เมื่อมีผู้เข้าร่วมสูงสุด 8 คน
    - นี่คือข้อมูลเฉลี่ย โปรดทดสอบหน่วยความจำที่จัดสรรของคุณโดยการให้ผู้เข้าร่วมสูงสุดเข้าร่วมก่อนการเปิดตัว หากเป็นไปได้

## FPS (เฟรมต่อวินาที)

- ขีดจำกัด FPS สูงสุดคือ 30FPS.



## ความจุ

- ความจุของแพ็คเกจจำกัดอยู่ที่ 1GByte.
- ด้วยฟีเจอร์การเคลื่อนที่ข้ามโลกที่จัดเตรียมโดย World 1.8.0 คุณสามารถแก้ไขปัญหาส่วนความจุได้โดยอ้อม.



## วิธีการปรับแต่ง

- กรุณาอ้างอิงข้อมูลที่เกี่ยวข้องกับการปรับแต่ง Unity.
  - [https://docs.unity3d.com/kr/2019.4/Manual/MobileOptimizationPracticalScriptingOptimizations.html](https://docs.unity3d.com/kr/2019.4/Manual/MobileOptimizationPracticalScriptingOptimizations.html)



## สิ่งที่สามารถปรับปรุงเกี่ยวกับทรัพยากร

- กรุณาลบโฟลเดอร์แพ็คเกจที่ไม่ได้ใช้งานและไฟล์ที่ไม่ได้ใช้งานด้วย
- กรุณาปรับจำนวนวัตถุในโปรเจกต์และจำนวนต้นไม้/สระในภูมิประเทศ



## สิ่งที่สามารถปรับปรุงเกี่ยวกับโค้ด

- การใช้ Coroutines: yield ไม่ผลิตขยะ แต่การสร้าง waitForSeconds ใหม่จะผลิตขยะ ดังนั้นให้สร้างและใช้วัตถุ
- ใน Update ( ) ส่วนที่ไม่จำเป็นต้องเรียกทุกเฟรมจะถูกแทนที่เพื่อให้สามารถเรียกทุก n เฟรมได้
- หลีกเลี่ยงการเรียกฟังก์ชันที่มีตรรกะหนักใน Awake( ) OnEnable( ) Start( )
- หลีกเลี่ยงการทิ้ง Update ( ) และ LateUpdate ( ) แม้แต่ฟังก์ชันว่าง
- หลีกเลี่ยงการเพิ่มคอมโพเนนต์ในระหว่างการทำงาน หากจำเป็น การสร้าง prefab จะมีประสิทธิภาพมากกว่า
- GameObject.Find, GameObject.GetComponent, และ Camera.main มีค่าใช้จ่ายสูง ดังนั้นไม่ควรเรียกจาก Update() แต่ให้เรียกจาก Start() หากจำเป็น
- การสร้างและทำลายผลิตขยะและการเก็บขยะทำให้กระบวนการช้าลง แทนที่จะพยายามใช้ซ้ำด้วยพูล
- Renderer.material ใช้ Renderer.sharedMaterial เมื่อเป็นไปได้เพื่อเข้าถึงวัสดุของวัตถ์ที่ผูกพัน เนื่องจากการสร้างสำเนาใหม่มีค่าใช้จ่ายสูงเกินไป



## สิ่งที่สามารถปรับปรุงเกี่ยวกับ UI

- ขึ้นอยู่กับวัตถุประสงค์ แบ่งผืนผ้าใบและตั้งค่าผืนผ้าใบที่ไม่ได้ใช้งานให้เป็นมองไม่เห็น
- จำกัด GraphicRaycasters และล้าง Raycast Target ลบ GraphicRaycaster ออกจากผืนผ้าใบและแทรก Graphic Raycaster แยกต่างหากลงในองค์ประกอบแต่ละอย่าง เช่น ปุ่ม
- หากคุณไม่ต้องการ Raycast Target ในข้อความหรือภาพ ให้ลบออก
- หลีกเลี่ยงการใช้ Layout Groups เว้นแต่จะเป็น UI แบบไดนามิก ใช้จุดยึดเพื่อจัดระเบียบ
- รายการใหญ่และมุมมองกริดมีค่าใช้จ่ายสูง ดังนั้นควรหลีกเลี่ยงการใช้มัน
- เมื่อใช้ UI แบบเต็มหน้าจอ ให้ซ่อนทุกอย่างยกเว้นผืนผ้าใบนี้ มันจะช่วยลดความจำเป็นในการให้กล้องเรนเดอร์ฉาก 3D และยังซ่อนผืนผ้าใบที่ไม่จำเป็น
- ลด Application.targetFrameRate เพราะคุณไม่จำเป็นต้องอัปเดตทุก 60 fps เมื่อใช้ UI แบบเต็มหน้าจอ
- อย่าทิ้งพื้นที่ว่างสำหรับกล้องเรนเดอร์ของผืนผ้าใบที่ใช้ World Space และเติมเต็มด้วยกล้องที่คุณใช้
  - หากคุณทิ้งว่างไว้ Unity จะเติมกล้อง.main โดยอัตโนมัติ



## สิ่งที่สามารถปรับปรุงเกี่ยวกับเสียง

- เปลี่ยนคลิปเสียงเป็นโมโน
- เปิดใช้งานการใช้ไฟล์ WAV ไฟล์เพลงที่บีบอัดจะถูกถอดบีบอัดและบีบอัดใหม่ในระหว่างเวลาการสร้าง คุณภาพของไฟล์เพลงจะลดลงในระหว่างกระบวนการนี้
- บีบอัดคลิปและลดอัตราบิตการบีบอัด
- ใช้ไฟล์ส่วนใหญ่ด้วย Vorbis และเปลี่ยนเสียงสั้นเป็น ADPCM
- ไม่เกิน 22,050 Hz
- เลือกประเภทการโหลดที่เหมาะสม
  - สำหรับไฟล์เพลงที่มีขนาด 200 kb หรือน้อยกว่า ให้ถอดบีบอัดเมื่อโหลด
  - สำหรับไฟล์เพลงที่มีขนาด 200 kb หรือมากกว่า ให้คงบีบอัดในหน่วยความจำ
- ตั้งค่าไฟล์ขนาดใหญ่และเพลงพื้นหลังให้ตั้งค่าเป็นสตรีมมิ่ง
- ไฟล์เพลงที่เงียบจะไม่สิ้นสุดโดยการเปลี่ยนระดับเสียงเป็นศูนย์เพียงอย่างเดียว ดังนั้นให้แน่ใจว่าพวกเขาถูกทำลาย

