Giúp trò chơi Unity của bạn trở nên tuyệt vời trên mọi hệ số hình dạng

Trong thị trường trò chơi cạnh tranh ngày nay, điều quan trọng hơn bao giờ hết là phải tiếp cận được nhiều đối tượng nhất có thể. Bằng cách phát triển trò chơi cho nhiều kiểu dáng (chẳng hạn như điện thoại, máy tính bảng, thiết bị có thể gập lại và máy tính), bạn có thể khai thác một nhóm người chơi tiềm năng rộng lớn hơn và tăng cơ hội thành công.

Hỗ trợ đổi kích thước màn hình

Để hỗ trợ nhiều kiểu dáng, trò chơi của bạn phải cho phép đổi kích thước. Khả năng đổi kích thước cho phép trò chơi của bạn hỗ trợ các cấu hình thiết bị như hướng dọc và ngang, chế độ nhiều cửa sổ, cũng như các trạng thái gập và mở của thiết bị có thể gập lại.

Nếu trò chơi của bạn không hỗ trợ tất cả các cấu hình kích thước và hướng cửa sổ, thì nền tảng sẽ tạo hiệu ứng hòm thư cho trò chơi ở chế độ tương thích và nếu cần, sẽ nhắc người chơi trước khi thay đổi sang cấu hình không được hỗ trợ.

Hình 1. Hộp thoại về khả năng tương thích với cấu hình.

Để biết thêm thông tin, hãy xem bài viết Hỗ trợ khả năng đổi kích thước màn hình lớn.

Chế độ nhiều cửa sổ

Hình 2. Nhiều giao diện người dùng trên máy tính và thiết bị có thể gập lại ở tư thế trên mặt bàn.

Chế độ nhiều cửa sổ cho phép nhiều ứng dụng chia sẻ đồng thời cùng một màn hình. Các ứng dụng có thể nằm cạnh nhau hoặc phía trên ứng dụng kia (chế độ chia đôi màn hình), một ứng dụng trong cửa sổ nhỏ chồng lên các ứng dụng khác (chế độ hình trong hình) hoặc từng ứng dụng trong các cửa sổ riêng biệt có thể thay đổi kích thước và di chuyển (chế độ hình dạng tuỳ ý).

Để tránh bị chuyển sang chế độ tương thích khi trò chơi của bạn chạy ở chế độ nhiều cửa sổ, hãy khai báo rằng trò chơi của bạn có thể xử lý khả năng đổi kích thước bằng cách bật tuỳ chọn Cửa sổ có thể thay đổi kích thước trong phần Cài đặt bản dựng Unity.

Hình 3. Chế độ cài đặt Độ phân giải và Bản trình bày của Unity dành cho Android.

Vết cắt trên màn hình

Vết cắt trên màn hình là vùng trên một số thiết bị mở rộng ra khỏi bề mặt màn hình. Hình cắt giúp mang lại trải nghiệm tràn viền, đồng thời cung cấp không gian cho các cảm biến quan trọng ở mặt trước thiết bị.

Hình 4. Vết cắt trên màn hình.

Để mang lại trải nghiệm tràn viền cho trò chơi, hãy định cấu hình trò chơi sao cho có thể nhận biết khung hình an toàn. Truy vấn API SafeArea của Unity để lấy vùng an toàn của màn hình tính bằng pixel và điều chỉnh giao diện người dùng cũng như trải nghiệm người dùng của trò chơi cho phù hợp, đặc biệt là đối với các thành phần mà người dùng có thể tương tác.

Kiểu có thể gập lại

Thiết bị có thể gập lại có thể ở nhiều trạng thái gập, chẳng hạn như FLAT (mở hoàn toàn) hoặc HALF_OPENED (một số vị trí giữa mở hoàn toàn và đóng hoàn toàn). Khi thiết bị ở trạng thái HALF_OPENED, bạn có thể dùng 2 tư thế, tuỳ thuộc vào hướng gập: tư thế trên mặt bàn (gập ngang) và tư thế quyển sách (gập dọc). Sử dụng tư thế trên mặt bàn để tăng mức độ hấp dẫn và mức độ tương tác của người chơi.

Hình 5. Trò chơi ở tư thế trên mặt bàn với chế độ xem chính là phần màn hình dọc, các nút điều khiển ở phần ngang.

Để triển khai tư thế trên mặt bàn, hãy mở rộng hoạt động Unity mặc định, sau đó sử dụng thư viện bố cục Jetpack WindowManager để giúp trò chơi nhận biết chế độ gập.

Dự án mẫu Unity

Dự án mẫu Unity dựa trên dự án minh hoạ 2D của Unity mất Crypt. Dự án mẫu minh hoạ cách hỗ trợ khả năng đổi kích thước màn hình lớn trong Unity. Việc hỗ trợ màn hình lớn và thiết bị có thể gập lại đòi hỏi một số thay đổi đối với các tuỳ chọn bản dựng Unity, cũng như một số điểm cần cân nhắc về bố cục của máy ảnh và canvas giao diện người dùng.

Bạn có thể tải dự án mẫu xuống ngay. Dự án này có 4 cảnh khác nhau:

  • Gốc: Hỗ trợ tính năng cơ bản có thể đổi kích thước
  • Neo: Giống như cảnh "Gốc", nhưng thích ứng với nhiều tỷ lệ khung hình khác nhau và tránh vết cắt trên màn hình
  • HingeAware: Giống như cảnh "Neo" nhưng hỗ trợ tư thế trên mặt bàn
  • Mainmenu: Bắt đầu cảnh, cho phép điều hướng đến các cảnh khác và hỗ trợ đầy đủ tất cả các hướng thiết bị, tư thế gập, mở và trên mặt bàn

Khi tạo cho Android, hãy chọn tất cả các cảnh và đặt cảnh "Mainmenu" làm cảnh bắt đầu.

Hình 6. Cảnh "Mainmenu" cho phép bạn chuyển đến các cảnh khác ở tư thế trên mặt bàn.

Bắt đầu bằng tính năng hỗ trợ cửa sổ có thể thay đổi kích thước

Triển khai tính năng hỗ trợ nhiều kích thước và tỷ lệ khung hình cho màn hình trong ứng dụng Android có màn hình lớn để đảm bảo trò chơi hoặc ứng dụng hiển thị chính xác trên nhiều thiết bị. Cho phép trò chơi đổi kích thước và thay đổi tỷ lệ khung hình bằng cách thiết lập thuộc tính Resizable Window (Cửa sổ có thể thay đổi kích thước) trong phần cài đặt bản dựng Unity (xem phần "Chế độ nhiều cửa sổ"). Điều chỉnh tỷ lệ khung hình của máy ảnh và ảnh in trên vải canvas để phù hợp hơn với nhiều màn hình. Xem các chế độ cài đặt dự án trong phần Build Settings (Cài đặt bản dựng) và trong tệp Plugins/Android/AndroidManifest.xml. Trải nghiệm tính năng đổi kích thước toàn màn hình trong cảnh "Original" (Gốc) của dự án.

Hình 7. Cảnh "Gốc" hỗ trợ tính năng Cửa sổ có thể thay đổi kích thước.

Trải nghiệm toàn màn hình trong khi xử lý các vết cắt trên màn hình

Hãy cho phép trò chơi của bạn sử dụng toàn bộ màn hình để làm cho trò chơi trở nên sống động hơn và nâng cao trải nghiệm người dùng. Cập nhật chế độ neo giao diện người dùng của trò chơi và các chế độ cài đặt máy ảnh để tự động điều chỉnh theo kích thước màn hình. Điều này cho phép các thành phần trên giao diện người dùng duy trì vị trí tương ứng so với kích thước màn hình.

Cảnh "Neo" sử dụng tập lệnh CameraAspectLock để phản hồi các thay đổi về cấu hình thiết bị thông qua một hoạt động mở rộng (xem Assets/Plugins/Android/LargeScreenPlayableActivity.java). APIsafeArea của Unity được minh hoạ trong tập lệnh SafeZoneAPI, liên kết với đối tượng SafeZone bên trong cảnh "Neo".

Cảnh trò chơi ở chế độ toàn màn hình trên màn hình trong và ngoài của một thiết bị có thể gập lại.
Hình 8. Cảnh "cố định" với vết cắt trên màn hình.

Tối ưu hoá cho thiết bị có thể gập lại

Cảnh cuối cùng của dự án mẫu Unity, "HingeAware", chứa đối tượng ConfigurationManager phản hồi các trạng thái gập khác nhau của thiết bị mục tiêu thông qua API thư viện Jetpack và một hoạt động mở rộng (xem Assets/Plugins/Android/LargeScreenPlayableActivity.java). Cảnh này sử dụng tập lệnh PanelOnFold để điều khiển giao diện người dùng dựa trên trạng thái gập của thiết bị, chẳng hạn như hiển thị bảng điều khiển dưới cùng khi thiết bị đang ở tư thế trên mặt bàn và điều chỉnh máy ảnh.

Hình 9. Cảnh "HingeAware" hỗ trợ tư thế trên mặt bàn.