ย้ายข้อมูลไปยัง SDK อินพุต 1.0.0 รุ่นเบต้า

คู่มือนี้จะอธิบายวิธีย้ายข้อมูลเกม Unity เพื่อใช้ Input SDK เวอร์ชันล่าสุด SDK 1.0.0-เบต้ามีการปรับปรุงอย่างมากเมื่อเทียบกับเวอร์ชันตัวอย่าง 0.0.4 ก่อนหน้า คุณควรย้ายข้อมูลจากตัวอย่างก่อนหน้านี้โดยเร็วที่สุด SDK เวอร์ชัน 0.0.4 จะยังคงใช้งานได้จนถึงเดือนมีนาคม 2023

อัปเดตข้อมูลอ้างอิง

ชั้นเรียนจะได้รับคำนำหน้า Play เพื่อหลีกเลี่ยงการตั้งชื่อที่ทับซ้อนกับ Unity เมื่อใดก็ตามที่คุณเห็นข้อความแสดงข้อผิดพลาดที่คล้ายกับข้อความต่อไปนี้

ข้อผิดพลาด CS0246: ไม่พบชื่อประเภทหรือเนมสเปซ "InputMappingProvider" (คุณไม่มีคําสั่ง using หรือการอ้างอิงแอสเซมบลีใช่ไหม)

คุณต้องเพิ่มคำนำหน้า Play ลงในชื่อคลาส เช่น InputMappingProvider จะกลายเป็น PlayInputMappingProvider

อัปเดต InputAction แต่ละรายการ

ตอนนี้ InputAction จะสร้างขึ้นด้วยการเรียกใช้ PlayInputAction.Create แทนการสร้าง struct ใหม่ที่มีช่องที่มีชื่อ

ค้นหาโค้ดที่เรียก new InputAction

var driveAction = new InputAction
{
    ActionLabel = "Drive",
    UniqueId = (int)InputEventIds.DRIVE,
    InputControls = new InputControls
    {
        AndroidKeycodes = new[] { AndroidKeyCode.KEYCODE_SPACE }
    }
};

และแทนที่ด้วยคําเรียก PlayInputAction.Create

var driveAction = PlayInputAction.Create(
    "Drive",
    (int)InputEventIds.DRIVE,
    PlayInputControls.Create(
        new[] { AndroidKeyCode.KEYCODE_SPACE },
        null
    )
);

อัปเดต InputGroup แต่ละรายการ

ตอนนี้ InputGroup มีคําเรียก PlayInputGroup.Create เช่นเดียวกับ InputAction แทนที่จะให้คุณกรอก struct ด้วยตนเอง

ซึ่งหมายความว่าคุณควรค้นหาการโทรไปยัง new InputGroup ดังนี้

var gameInputGroup = new InputGroup
{
    GroupLabel = "Game controls",
    InputActions = new List<InputAction>
    {
        driveAction,
        turboAction,
        openGarageAction,
        openStoreAction
    }
};

และแทนที่ด้วยการเรียก PlayInputGroup.Create

var gameInputGroup = PlayInputGroup.Create(
    "Game controls",
    new List<PlayInputAction>
    {
        driveAction,
        turboAction,
        openGarageAction,
        openStoreAction
    }
);

อัปเดต InputMap

InputMap ใช้ PlayInputMap.Create ด้วยแทนการสร้าง struct ใหม่

ค้นหาการโทรไปยัง new InputMap

return new InputMap
{
    InputGroups = new List<InputGroup>
    {
        gameInputGroup,
        menuInputGroup
    },
    MouseSettings = new MouseSettings
    {
        AllowMouseSensitivityAdjustment = false,
        InvertMouseMovement = false
    }
};

และแทนที่ด้วยคําเรียก PlayInputMap.Create

return PlayInputMap.Create(
    new List<PlayInputGroup>
    {
        gameInputGroup,
        menuInputGroup
    },
    PlayMouseSettings.Create(false, false)
);

เปลี่ยนชื่อเมธอด PlayInputMappingClient

สำหรับ PlayInputMappingClient RegisterInputMappingProvider ได้เปลี่ยนชื่อเป็น SetInputMappingProvider

ดังนั้น ให้ค้นหาการโทรไปยัง RegisterInputMappingProvider ดังนี้

Input.GetInputMappingClient().RegisterInputMappingProvider(_inputMappingProvider);

และแทนที่ด้วยคําเรียก SetInputMappingProvider

PlayInputMappingClient inputMappingClient =
    Google.Play.InputMapping.PlayInput.GetInputMappingClient();
inputMappingClient.SetInputMappingProvider(_inputMapProvider);

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

ค้นหาการโทรไปยัง UnregisterInputMappingProvider

Input.GetInputMappingClient().UnregisterInputMappingProvider(_inputMapProvider);

และแทนที่ด้วย ClearInputMappingProvider

PlayInput.GetInputMappingClient().ClearInputMappingProvider();