เริ่มต้นไลบรารีและยืนยันการดำเนินการ

หน้านี้อธิบายวิธีเริ่มต้นไลบรารีในโค้ดเกมของคุณและยืนยันว่า กำลังอัปโหลดข้อมูลไปยัง Google Play หากต้องการข้อมูลเพิ่มเติมเกี่ยวกับ ของฟังก์ชันห้องสมุด โปรดดูที่ เอกสารอ้างอิง

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

ในวิธีการเริ่มต้นเมื่อเริ่มเกม ให้เริ่มต้นไลบรารีโดย กำลังสร้างอินสแตนซ์ AndroidPerformanceTuner และเรียก Start() วิธีการ:

using Google.Android.PerformanceTuner;
using UnityEngine;

public class SomeBehaviour : MonoBehaviour
{
    AndroidPerformanceTuner<FidelityParams, Annotation> tuner =
            new AndroidPerformanceTuner<FidelityParams, Annotation>();

    void Start()
    {
        ErrorCode startErrorCode = tuner.Start();
        Debug.Log("Android Performance Tuner started with code: " + startErrorCode);

        tuner.onReceiveUploadLog += request =>
        {
            Debug.Log("Telemetry uploaded with request name: " + request.name);
        };
    }
}

โค้ดนี้เพียงพอที่จะใช้ Android Performance Tuner เริ่มต้นและเกมของคุณ ใช้เครื่องดนตรี ข้อความบันทึกจะระบุเวลาที่ Android Performance Tuner เริ่มทำงาน และเมื่อมีการอัปโหลดการวัดและส่งข้อมูลทางไกลไปยัง Google Play Console API ไว้ทีหลัง คุณจะพบคำสั่งเหล่านี้ในบันทึกเพื่อยืนยันว่าปลั๊กอินทำงานอยู่ อย่างถูกต้อง

การเริ่มต้นล่าช้า (เฉพาะ Vulkan เท่านั้น)

หากเกมกำหนดเป้าหมายเป็น Vulkan และใช้ Android Frame Pacing, Android Performance Tuner ควรมีการเริ่มต้นล่าช้า

IEnumerator Start()
{
    yield return new WaitForEndOfFrame();
    ErrorCode startErrorCode = tuner.Start();
    Debug.Log("Android Performance Tuner started with code: " + startErrorCode);

    tuner.onReceiveUploadLog += request =>
    {
        Debug.Log("Telemetry uploaded with request name: " + request.name);
    };
}

ตรวจสอบช่วงเวลาระหว่างการอัปโหลดการตรวจวัดระยะไกล

ช่วงเวลาเริ่มต้นระหว่างการอัปโหลดการวัดและส่งข้อมูลทางไกลในการตั้งค่าปลั๊กอินคือ 30 วินาที ระบบตั้งค่าเวลานี้ให้ช่วงสั้นๆ เพื่อช่วยให้สามารถตรวจสอบ การอัปโหลดทางไกลได้อย่างถูกต้อง เมื่อคุณเผยแพร่เกมเป็นเวอร์ชันที่ใช้งานจริง ให้ตั้งค่า แบ่งเป็นช่วงๆ (เช่น ทุก 10 นาที) เพื่อให้เกมไม่ต้อง ส่งคำขอไปยัง API มากเกินไป ซึ่งสำคัญมากสำหรับผู้ใช้ ซึ่งไม่มีแพ็กเกจอินเทอร์เน็ตมือถือ พร้อมบริการข้อมูลไม่จำกัด ใหญ่ นอกจากนี้ยังหลีกเลี่ยงการใช้แบตเตอรี่ของอุปกรณ์มากเกินไปด้วย

ในการตรวจสอบว่าช่วงเวลากำหนดไว้เป็น 30 วินาที ให้ทำดังนี้

  1. เลือก Google > Android Performance Tuner เพื่อเข้าถึงการตั้งค่า
  2. เลือกแท็บ การตั้งค่าการใช้เครื่องมือ และคลิก ใช้ขั้นสูง การตั้งค่า
  3. ตรวจสอบว่าช่องช่วงเวลา (นาที) มี 0.5

แท็บการตั้งค่าการวัดคุมในปลั๊กอิน

ยืนยันการดำเนินการที่ถูกต้อง

หากคุณใช้ IL2CPP หรือการตัดโค้ด โปรดดู จัดการการตัดโค้ด

สร้างเกมของคุณสำหรับ Android ขณะเปิดตัวเกมในอุปกรณ์ ให้เปิด เทอร์มินัลบนคอมพิวเตอร์ของคุณและเปิด adb logcat:

adb logcat

ในเอาต์พุตของ adb logcat ให้ค้นหา "TuningFork" (เนื่องจาก Tuning Fork เป็น ชื่อภายในของไลบรารี):

02-03 16:55:45.103 10511 10536 I TuningFork: Got settings from tuningfork/tuningfork_settings.bin
02-03 16:55:45.103 10511 10536 I TuningFork: Using local file cache at /data/user/0/com.Unity3d.BoatAttackDay/cache/tuningfork
02-03 16:55:45.105 10511 10536 I TuningFork: OpenGL version 3.2
02-03 16:55:45.105 10511 10536 I TuningFork: TuningFork.GoogleEndpoint: OK
02-03 16:55:45.106 10511 10611 I TuningFork: Creating directory /data/user/0/com.Unity3d.BoatAttackDay/cache/tuningfork
02-03 16:55:45.106 10511 10536 I TuningFork: TuningFork Settings:

[...]

02-03 16:55:45.116 10511 10536 I Unity   : Tuningfork started with code: Ok
02-03 16:55:45.107 10511 10536 I TuningFork: TuningFork initialized
02-03 16:55:45.107 10511 10536 I UnityTuningfork: Swappy backend: 1
02-03 16:55:45.107 10511 10536 I TuningFork: Creating directory /data/user/0/com.Unity3d.BoatAttackDay/cache/tuningfork/V1
02-03 16:55:45.110 10511 10613 I TuningFork: OpenGL version 3.2
02-03 16:55:45.110 10511 10613 I TuningFork:Web: Connecting to: https://performanceparameters.googleapis.com/v1/applications/com.Unity3d.BoatAttackDay/apks/1:generateTuningParameters

ถ้าคุณทำผิดพลาดขณะตั้งค่าปลั๊กอิน เช่น ลืมตั้งค่าปลั๊กอิน คีย์ API คุณจะเห็นข้อผิดพลาดในบันทึกการเริ่มต้น

02-03 16:49:44.970  8815  8831 I TuningFork: Got settings from tuningfork/tuningfork_settings.bin
02-03 16:49:44.971  8815  8831 I TuningFork: Using local file cache at /data/user/0/com.Unity3d.BoatAttackDay/cache/tuningfork
02-03 16:49:44.972  8815  8831 I TuningFork: OpenGL version 3.2
02-03 16:49:44.972  8815  8831 W TuningFork.GE: The API key in Tuning Fork TFSettings is invalid
02-03 16:49:44.972  8815  8831 E TuningFork: TuningFork.GoogleEndpoint: FAILED
02-03 16:49:44.973  8815  8831 I Unity   : Tuningfork started with code: BadParameter

ตรวจสอบว่า Android Performance Tuner กำลังอัปโหลดการตรวจวัดระยะไกล หากคุณเห็น TuningFork initialized ในบันทึก ให้รออีกสักนิดและมองหาบันทึกที่ระบุว่า กำลังอัปโหลดการตรวจวัดระยะไกล

02-03 16:58:00.552 10511 10611 I TuningFork:Web: Connecting to: https://performanceparameters.googleapis.com/v1/applications/com.Unity3d.BoatAttackDay/apks/1:uploadTelemetry
02-03 16:58:00.898 10511 10611 I TuningFork:Web: Response code: 200
02-03 16:58:00.898 10511 10611 I TuningFork:Web: Response message: OK
02-03 16:58:00.899 10511 10611 I TuningFork.GE: UPLOAD request returned 200 {}

คุณยังค้นหา "กำลังเชื่อมต่อกับ:" ในบันทึกได้ด้วย ติดตามข้อความนี้แล้ว ตามโค้ดตอบกลับหลังจากนั้น 2-3 บรรทัด

หากคุณไม่เห็นบันทึกการอัปโหลดการวัดและส่งข้อมูลทางไกล โปรดตรวจสอบว่าคุณได้ตั้งค่า ช่วงเวลาระหว่างการอัปโหลดแต่ละครั้งในการตั้งค่า Android Performance Tuner เป็น เช่น 30 วินาที

จัดการการตัดโค้ด

Google.Protobuf.dll ใช้การสะท้อน ในระหว่างการถอดโค้ด บางส่วนของ โค้ดที่ต้องใช้อาจถูกนำออก เพื่อหลีกเลี่ยงการนำออกนี้ ปลั๊กอินจะมี link.xml ไฟล์ซึ่งมีข้อมูลเกี่ยวกับสัญลักษณ์ที่ควรเก็บไว้ หากคุณ ต้องมีฟังก์ชันของ Protobuf ซึ่งใช้การสะท้อนและคุณมีโค้ด เปิดใช้การตัดแล้ว ให้เพิ่มข้อมูลนี้ลงในไฟล์ link.xml เพื่อรักษา สัญลักษณ์

คุณสามารถอ่านเพิ่มเติมเกี่ยวกับ การตัดโค้ดที่มีการจัดการ ในเอกสารประกอบของ Unity

หากต้องการเก็บสัญลักษณ์ทั้งหมดใน protobuf ให้เพิ่มไฟล์ link.xml ลงในไฟล์ ที่มีข้อมูลต่อไปนี้

<linker>
  <assembly fullname="Google.Protobuf" preserve="all"/>
</linker>

คอมไพล์ก่อนเวลา (AOT)

จำเป็นต้องมีการคอมไพล์ล่วงหน้าสำหรับแบ็กเอนด์ IL2CPP และ Unity เวอร์ชัน 2017 และ 2018 (ยกเว้นสำหรับ Unity เวอร์ชันต่อๆ ไป)

คอมไพเลอร์ AOT อาจไม่สร้างโค้ดสำหรับเมธอดทั่วไป คุณต้องบังคับใช้ คอมไพเลอร์เพื่อสร้างโค้ดที่เหมาะสมสำหรับ Protobuf โดยการเพิ่ม วิธีการต่อไปนี้

using Google.Protobuf.Reflection;
using UnityEngine.Scripting;

...

// Don't call this method.
[Preserve]
void ExampleOfForceReflectionInitializationForProtobuf()
{
    FileDescriptor.ForceReflectionInitialization<Scene>();
    FileDescriptor.ForceReflectionInitialization<ShadowType>();
    FileDescriptor.ForceReflectionInitialization<LevelType>();
    ...
    // Add FileDescriptor.ForceReflectionInitialization<T> for each generated enum.
    // You can find the list of enums in DevTuningfork.cs -> enum section
    // or in the list of enums in Google -> Android Performance Tuner.
}

คุณสามารถอ่านเพิ่มเติมเกี่ยวกับ ข้อจำกัดในการเขียนสคริปต์ ในเอกสารประกอบของ Unity