Sử dụng các điều khiển đầu vào được tối ưu hóa cho cảm ứng với Điều khiển trên màn hình

Trang Cập Nhật :
Ngày tạo trang :

Môi trường xác minh

Windows
  • cửa sổ 11
Biên tập viên Unity
  • 2020.3.25f1
Gói hệ thống đầu vào
  • 1.2.0

Điều kiện tiên quyết cho mẹo này

Các cài đặt sau đây đã được thực hiện trước làm tiền đề cho mô tả về mẹo này.

Bạn cũng nên làm quen với các mẹo sau:

Giới thiệu về Điều khiển trên màn hình cho cảm ứng

Tôi thường sử dụng bàn phím hoặc gamepad để chơi game. Trên các thiết bị chỉ có thể được vận hành bằng cảm ứng, chẳng hạn như điện thoại thông minh, bạn sẽ chơi trò chơi bằng cách chạm.

Gói hệ thống đầu vào của Unity sử dụng Điều khiển trên màn hình để mô phỏng các tương tác cảm ứng như thể chúng được điều khiển bởi bộ điều khiển.

Trước khi điều khiển trên màn hình

Bài viết này hơi dài, nhưng chủ đề này không liên quan trực tiếp đến Điều khiển trên màn hình. Nếu bạn có thể sử dụng gói hệ thống đầu vào trong các bước khác để kiểm tra đầu vào, chẳng hạn như gamepad, điều đó là tốt.

Trong mẹo này, chúng tôi sẽ tạo một bản đồ hành động. Mô tả cách mô phỏng chạm vào gamepad như thể bạn đang tương tác với nó.

Nhân tiện, nó cũng hỗ trợ phương pháp sử dụng các lớp và Gamepad lớp trong Keyboard tập lệnh thay vì bản đồ hành động. Tôi sẽ không giải thích nó lần này, nhưng nếu bạn muốn thử nó với các lớp đó, bạn có thể chuẩn bị mã được mô tả trên trang sau thay thế.

Trước tiên, hãy đặt một đối tượng văn bản trên Canvas để hiển thị đầu vào của bạn. Sau đó, chúng tôi sẽ đặt đối tượng cảm ứng ở phía dưới, vì vậy hãy để lại một số không gian.

Đầu tiên, tạo một bản đồ hành động như sau: Bạn đang tạo cùng một Hành động như bạn đã làm khi bạn mô tả bản đồ hành động.

Vì lời giải thích của bản đồ hành động không phải là điều chính, nên ràng buộc rất đơn giản. Vui lòng tham khảo trang sau để biết chi tiết về bản đồ hành động.

Lần này, việc thu thập đầu vào được thực hiện bằng tập lệnh thay vì "Gửi tin nhắn" hoặc "Gọi sự kiện Unity". Điều này cũng không giới hạn ở các tập lệnh và nó hoạt động bình thường ngay cả khi bạn sử dụng "Gửi tin nhắn", v.v.

Đảm bảo rằng bạn đã tạo mã từ bản đồ hành động.

Kịch bản trông như thế này: Nó gần giống như khi giải thích bản đồ hành động.

using UnityEngine;
using UnityEngine.InputSystem;
using UnityEngine.UI;

public class InputActionScript : MonoBehaviour
{
  /// <summary>情報を表示させるテキストオブジェクト。</summary>
  [SerializeField] private Text TextObject;

  /// <summary>アクションマップから自動生成されたクラス。</summary>
  private InputActionSample _actionMap;

  private void Awake()
  {
    // 各操作を行ったときに呼ばれるイベントを設定する
    _actionMap = new InputActionSample();
    _actionMap.Action2D.Move.performed += context => OnMove(context);
    _actionMap.Action2D.Attack.performed += context => OnAttack(context);
    _actionMap.Action2D.Move.canceled += context => OnMove(context);
    _actionMap.Action2D.Attack.canceled += context => OnAttack(context);
  }

  private void OnEnable()
  {
    // このオブジェクトが有効になったときにアクションマップを有効にする
    _actionMap.Enable();
  }

  private void OnDisable()
  {
    // このオブジェクトが無効になったときにアクションマップが余計な動作を起こさないように無効にする
    _actionMap.Disable();
  }

  /// <summary>
  /// Move 操作をした時に呼ばれるメソッドです。
  /// </summary>
  /// <param name="context">コールバックパラメータ。</param>
  public void OnMove(InputAction.CallbackContext context)
  {
    // Move の入力量を取得
    var vec = context.ReadValue<Vector2>();
    TextObject.text = $"Move:({vec.x:f2}, {vec.y:f2})\n{TextObject.text}";
  }

  /// <summary>
  /// Attack 操作をした時に呼ばれるメソッドです。
  /// </summary>
  /// <param name="context">コールバックパラメータ。</param>
  public void OnAttack(InputAction.CallbackContext context)
  {
    // Attack ボタンの状態を取得
    var value = context.ReadValueAsButton();
    TextObject.text = $"Attack:{value}\n{TextObject.text}";
  }
}

Tập EventSystem lệnh được đính kèm với .

Chạy trò chơi để xem nó có hoạt động như một bản đồ hành động hay không.

Nút trên màn hình

Nút Trên màn hình mô phỏng các nút nhấn trên gamepad, chẳng hạn như A và B và các phím trên bàn phím khi bạn chạm vào một số đối tượng trên màn hình. Nhân tiện, nó nói cảm ứng, nhưng nó cũng hoạt động với các cú nhấp chuột.

Đầu tiên đặt nút trên màn hình. Vì bạn chỉ cần đính kèm một thành phần, nó hoạt động với các đối tượng khác ngoài các nút.

Thêm Đầu vào > Nút Trên Màn hình từ thành phần.

Đặt Nút của Gamepad về phía Đông từ Đường dẫn điều khiển. Điều này làm cho nó trông như thể Button East trên Gamepad đã được nhấn khi chạm vào.

Đảm bảo rằng Attack xuất hiện khi bạn chạy trò chơi và nhấp vào nút. Nếu đó là thiết bị có thể chạm vào, bạn có thể xác nhận rằng thiết bị hoạt động bằng cảm ứng.

Thanh trên màn hình

On-Screen Stick cho phép bạn di chuyển các đối tượng như gậy bằng cách chạm vào. Khi bạn di chuyển một cây gậy, có thể mô phỏng nó như thể bạn đã di chuyển một cây gậy gamepad. Ngoài cảm ứng, cũng có thể di chuyển nó bằng chuột.

Đặt một đối tượng nút trên màn hình sẽ là một thanh cảm ứng. Chúng tôi đang sử dụng một nút ở đây, nhưng nó cũng hoạt động với các đối tượng khác ngoài các nút.

Trong Add Component, chọn Input > On-Screen Stick.

Từ Control Path, chọn Gamepad LeftStick được xác định trong bản đồ hành động.

Chạy trò chơi và thử kéo nút Stick. Các nút di chuyển theo vòng tròn, như thể di chuyển một cây gậy. Tất nhiên, bạn cũng có thể kiểm tra xem nội dung đầu vào có được tìm nạp trong khi nó đang chạy hay không.

Trong trường hợp này, chúng tôi đã đặt một nút, nhưng cũng có thể làm cho nó trông giống như một cây gậy ảo bằng cách đặt một khung tròn và một vật thể hình tròn.

Nhân tiện, phạm vi di chuyển này có thể được thay đổi trong "Phạm vi chuyển động" của Thanh trên màn hình.