Tổng quan về Hệ thống đầu vào mới của Unity
Hệ thống đầu vào mới trong Unity cung cấp cách tiếp cận cập nhật, linh hoạt và trực quan hơn để xử lý dữ liệu đầu vào trong trò chơi. Với hệ thống này, các nhà phát triển có thể phục vụ nhiều loại thiết bị khác nhau, từ bộ điều khiển trò chơi đến thiết bị cầm tay VR, giúp trò chơi trở nên năng động và hấp dẫn hơn.
1. Tại sao hệ thống mới
Hệ thống nhập liệu truyền thống trong Unity bị hạn chế về khả năng và không thể mở rộng được. Hệ thống đầu vào mới cung cấp API hợp nhất, giải quyết các hạn chế trước đây và cung cấp các tính năng nâng cao để phát triển trò chơi hiện đại.
2. Đang cài đặt
Để bắt đầu sử dụng Hệ thống đầu vào mới, trước tiên nó phải được cài đặt từ Trình quản lý gói trong Unity. Sau khi được thêm vào, quá trình chuyển đổi từ hệ thống cũ yêu cầu một số điều chỉnh nhất định về tập lệnh và cài đặt.
3. Các tính năng chính
- Hành động và ràng buộc: Thay vì tham chiếu trực tiếp các nút hoặc phím, nhà phát triển xác định hành động và sau đó liên kết các hành động đó với các phím hoặc nút cụ thể.
- Tính đa dạng của thiết bị: Dễ dàng hỗ trợ nhiều thiết bị, từ gamepad truyền thống đến màn hình cảm ứng và thiết bị cầm tay VR.
- Điều khiển người chơi: Cung cấp cơ chế tích hợp sẵn để điều chỉnh lại các điều khiển, cho phép người chơi thiết lập các điều khiển theo ý muốn.
- Xử lý sự kiện nâng cao:Sự kiện có thể được xử lý theo nhiều cách khác nhau, cho dù dựa trên cuộc bỏ phiếu hay dựa trên cuộc gọi lại, cấp nhiều quyền kiểm soát hơn.
4. Tạo hành động đầu vào
Hành động đầu vào là một loại nội dung mới cho phép xác định hành vi đầu vào mà không cần phải viết tập lệnh. Sau khi được tạo, nó có thể được đưa vào tập lệnh, kết nối trực tiếp lối chơi với đầu vào của người chơi.
5. Triển khai trong tập lệnh
- Hệ thống đầu vào mới tích hợp liền mạch với môi trường tập lệnh Unity. Thay vì các phương thức 'Input.GetKey' hoặc 'Input.GetAxis' cũ hơn, hệ thống này sử dụng `actions' có thể được gọi trong tập lệnh. Kiểm tra ví dụ dưới đây:
using UnityEngine;
using UnityEngine.InputSystem;
public class PlayerMovement : MonoBehaviour
{
public float speed = 5.0f;
private Vector2 moveInput;
public void OnMove(InputAction.CallbackContext context)
{
moveInput = context.ReadValue<Vector2>();
}
void Update()
{
Vector3 move = new Vector3(moveInput.x, 0, moveInput.y) * speed * Time.deltaTime;
transform.Translate(move);
}
}
Hãy chia nhỏ ví dụ mã được cung cấp ở trên:
- Không gian tên: Không gian tên 'UnityEngine.InputSystem' là cần thiết để sử dụng các chức năng mới.
- 'moveInput': Biến này lưu trữ các giá trị đầu vào, thường biểu thị đầu vào ngang và dọc.
- 'OnMove()': Được xác định là một hàm công khai, 'OnMove' có thể được liên kết trực tiếp với Hành động nhập trong Trình chỉnh sửa Unity. Phương thức này sử dụng 'InputAction.CallbackContext' để đọc các giá trị đầu vào và gán chúng cho biến 'moveInput' của chúng ta.
- 'Update()': Trong phương thức 'Update', các giá trị đầu vào được lưu trữ sẽ xác định hướng di chuyển. Đầu vào được dịch thành Vector 3D để di chuyển nhân vật, tính đến tốc độ đã xác định và Unity 'Time.deltaTime' cho chuyển động không phụ thuộc vào khung.
Để làm cho tập lệnh này hoạt động, điều quan trọng là phải liên kết phương thức 'OnMove' với Hành động nhập thông qua Trình chỉnh sửa Unity. Kết nối này đảm bảo rằng khi người chơi cung cấp thông tin đầu vào (chẳng hạn như di chuyển cần điều khiển hoặc nhấn các phím mũi tên), hành động tương ứng sẽ kích hoạt tập lệnh mong muốn function.
Phần kết luận
Hệ thống đầu vào mới trong Unity là một sự phát triển mạnh mẽ và cần thiết, phù hợp với nhu cầu phát triển trò chơi hiện đại. Nó mang lại tính linh hoạt, độ chính xác và khả năng tùy chỉnh của người dùng, giúp cho trò chơi tương tác trở nên hấp dẫn và phản hồi nhanh hơn.