เริ่มต้นใช้งาน Memory Advice API สำหรับเกม Unity

คู่มือนี้อธิบายวิธีใช้ปลั๊กอินคำแนะนำเกี่ยวกับหน่วยความจำสำหรับ Unity เพื่อผสานรวม Memory Advice API เข้ากับเกม Unity

ข้อกำหนด

ปลั๊กอินนี้ใช้ได้ใน

  • Unity 2019 ที่มี Android NDK r19

  • Unity 2020 ที่มี Android NDK r19

  • Unity 2021 พร้อม Android NDK r21

  • Unity 2022 กับ Android NDK r23

คุณอาจพบปัญหาที่ไม่คาดคิดหากใช้ Unity เวอร์ชันอื่นและ Android NDK หากต้องการดูเวอร์ชัน NDK ที่การติดตั้ง Unity ใช้ โปรดดู คู่มือการตั้งค่าสภาพแวดล้อม Android สำหรับ Unity

ดาวน์โหลดปลั๊กอิน

ดาวน์โหลดปลั๊กอิน

นำเข้าปลั๊กอิน

ปลั๊กอินเป็นแพ็กเกจ Unity ที่คุณนำเข้าไปยังโปรเจ็กต์ได้ หากต้องการนำเข้าปลั๊กอิน ให้คลิกชิ้นงาน > นำเข้าแพ็กเกจ > แพ็กเกจที่กำหนดเอง แล้วเลือกไฟล์ .unitypackage ที่คุณดาวน์โหลด คุณยังดับเบิลคลิกไฟล์ .unitypackage หลังจากเปิดโปรเจ็กต์ Unity ได้ด้วย

ใช้คลัง

ส่วนนี้จะอธิบายวิธีใช้คลัง

เริ่มต้นไลบรารี

คุณต้องเริ่มต้นใช้งานไลบรารี 1 ครั้งเมื่อแอปเริ่มทำงาน โดยเพิ่มโค้ดนี้ลงในโปรเจ็กต์

void Start()
{
    MemoryAdviceErrorCode errorCode = MemoryAdvice.Init();
    if(errorCode == MemoryAdviceErrorCode.Ok)
    {
        Debug.Log("Memory advice init successfully");
    }
}

สำรวจสถานะหน่วยความจำ

คุณเรียกสถานะหน่วยความจำของแอปได้โดยการสำรวจไลบรารีที่ ช่วงเวลาที่คุณเลือก ใช้ฟังก์ชัน MemoryAdvice_getMemoryState เมื่อใดก็ตามที่คุณต้องการสำรวจไลบรารี

MemoryState memoryState = MemoryAdvice.GetMemoryState();
switch (memoryState)
{
    case MemoryState.Ok:
        //The application can safely allocate memory.
        break;
    case MemoryState.ApproachingLimit:
        // The application should minimize memory allocation.
        break;
    case  MemoryState.Critical:
        // The application should free memory as soon as possible
        // until the memory state changes.
        break;
}

ตั้งค่าผู้ดู

นอกจากนี้ คุณยังตั้งค่าตัวตรวจสอบ และลงทะเบียน Memory Advice API ได้ด้วย และระบบจะเรียกใช้ฟังก์ชันตัวตรวจสอบ เมื่อสถานะเข้าใกล้ขีดจำกัดหรืออยู่ในสถานะหน่วยความจำ วิกฤต (แต่จะไม่เรียกใช้สำหรับสถานะปกติ) ตัวอย่างเช่น โค้ดต่อไปนี้จะสร้าง Watcher และขอรับการแจ้งเตือนจาก Memory Advice API ทุกๆ 2 วินาที

MemoryAdviceErrorCode errorCode = MemoryAdvice.RegisterWatcher(2000,
        new MemoryWatcherDelegateListener((MemoryState state) =>
    {
        switch (memoryState)
        {
            case MemoryState.ApproachingLimit:
                // The application should minimize memory allocation.
                break;
            case  MemoryState.Critical:
                // The application should free memory as soon as possible
                // until the memory state changes.
                break;
        }
    })
);

if(errorCode == MemoryAdviceErrorCode.Ok)
{
    Debug.Log("Memory Advice watcher registered successfully");
}

ขั้นตอนถัดไป

คุณสามารถดาวน์โหลดโปรเจ็กต์ตัวอย่าง Unity ซึ่งมี UI ที่เรียบง่ายสำหรับการจัดสรรและปล่อยหน่วยความจำ และใช้ Memory Advice API เพื่อตรวจสอบสถานะหน่วยความจำ

ดูภาพรวมเพื่อดู แหล่งข้อมูลเพิ่มเติม และการรายงานปัญหา