Hướng dẫn

Làm quen với Unity và Android XR

Đọc trong 6 phút
Luke Hopkins
Kỹ sư phụ trách quan hệ với nhà phát triển, Android

Samsung Galaxy XR đã ra mắt, chạy trên Android XR! Bài đăng này trên blog nằm trong Tuần lễ giới thiệu Android XR. Trong tuần lễ này, chúng tôi cung cấp các tài nguyên (bài đăng trên blog, video, mã mẫu, v.v.) được thiết kế để giúp bạn tìm hiểu, xây dựng và chuẩn bị ứng dụng cho Android XR. 

Đây là thời điểm thích hợp nhất để bắt đầu phát triển XR. Tháng 12 năm ngoái, chúng tôi đã công bố Android XR, nền tảng Android mới của Google được xây dựng dựa trên các tiêu chuẩn mở như OpenXR và Vulkan, giúp việc phát triển XR trở nên dễ dàng hơn bao giờ hết.


Khi kết hợp với các công cụ XR hiện có của Unity, bạn sẽ có được một ngăn xếp phát triển mạnh mẽ và hoàn thiện. Điều này giúp bạn có thể tạo và triển khai các ứng dụng XR hoạt động trên nhiều thiết bị.

openxr_face_tracking2.webp

Dù bạn đã từng phát triển XR hay chưa, chúng tôi đều muốn giúp bạn bắt đầu.

Blog này sẽ giúp bạn bắt đầu phát triển với Android XR và Unity. Chúng ta sẽ tập trung vào các bước thực tế để định cấu hình môi trường, tìm hiểu hệ sinh thái gói và bắt đầu xây dựng.

Đến cuối blog này, bạn sẽ hiểu rõ về:

  • Hệ sinh thái gói
  • Các bước thiết lập thiết yếu
  • Phương thức nhập
  • Quyền riêng tư và quyền
  • Lớp thành phần

Unity để phát triển Android XR

Bạn có thể chọn Unity vì khả năng tương thích nhiều nền tảng, cho phép bạn tạo một lần và triển khai cho Android XR cũng như các thiết bị XR khác.

Khi sử dụng Unity, bạn sẽ được hưởng lợi từ hệ sinh thái và bộ công cụ XR hoàn chỉnh của Unity. Unity đã có các gói được thiết lập như XR Interaction Toolkit (Bộ công cụ tương tác XR), trình bổ trợ OpenXR, các lớp thành phần XR, XR Hands (Bàn tay XR), một cửa hàng tài sản phong phú với đầy đủ các thành phần và mẫu sẵn sàng cho XR, cũng như các công cụ mô phỏng và kiểm thử XR. Kể từ khi Unity 6 ra mắt vào tháng 11 năm ngoái, bạn cũng sẽ được hưởng lợi từ hiệu suất Universal Render Pipeline (URP) (Quy trình kết xuất phổ quát) được cải thiện, khả năng hỗ trợ đồ hoạ Vulkan tốt hơn và các hồ sơ bản dựng nâng cao.

Sau đây là một số dự án mẫu để bạn hình dung được những việc có thể làm:

Thiết lập cần thiết: nền tảng phát triển của bạn

Yêu cầu và cách cài đặt Unity 6

Bạn cần có Unity 6 để tạo ứng dụng vì các phiên bản trước đó không hỗ trợ Android XR. Trước tiên, hãy cài đặt Unity Hub, sau đó cài đặt Unity 6 cùng với mô-đun Android Build Support (Hỗ trợ bản dựng Android) theo các bước này.

unity6.png

Hồ sơ bản dựng Android XR: đơn giản hoá cấu hình

Hồ sơ bản dựng Unity là thành phần dự án lưu trữ các chế độ cài đặt và cấu hình dành riêng cho nền tảng. Vì vậy, thay vì phải thiết lập theo cách thủ công từ 15 đến 20 chế độ cài đặt khác nhau trên nhiều trình đơn, bạn có thể sử dụng hồ sơ bản dựng để tự động thực hiện việc này.
Bạn có thể tạo hồ sơ bản dựng của riêng mình, nhưng hiện tại, bạn nên sử dụng hồ sơ bản dựng Android XR chuyên dụng mà chúng tôi đã tạo.

Bạn có thể chọn hồ sơ bản dựng bằng cách chọn File > Build Profile (Tệp > Hồ sơ bản dựng) trong dự án Unity. Để xem hướng dẫn đầy đủ, hãy tham khảo trang quy trình công việc Phát triển cho Android XR.

Nếu tự thực hiện bất kỳ thay đổi nào, bạn có thể tạo một hồ sơ bản dựng mới để chia sẻ với nhóm của mình. Bằng cách này, bạn sẽ đảm bảo trải nghiệm xây dựng nhất quán trên toàn bộ hệ thống.

buildprofiles.png

Sau khi thực hiện các bước này, bạn có thể tạo và chạy APK cho các thiết bị Android XR.

API đồ hoạ: lý do Vulkan quan trọng

Sau khi thiết lập dự án Unity bằng hồ sơ bản dựng Android XR, trước tiên, bạn nên đảm bảo đã đặt Vulkan làm API đồ hoạ. Android XR được xây dựng dưới dạng một nền tảng ưu tiên Vulkan. Vào tháng 3 năm 2025, Google thông báo rằng Vulkan hiện là API đồ hoạ chính thức cho Android. Đây là một API đồ hoạ cấp thấp, hiện đại, giúp nhà phát triển tối đa hoá hiệu suất của GPU hiện đại và mở khoá các tính năng nâng cao như dò tia và đa luồng để mang đến hình ảnh chân thực và sống động cho trò chơi.

Các tiêu chuẩn này mang lại khả năng tương thích tốt nhất cho các ứng dụng hiện có của bạn, đồng thời giảm thiểu các vấn đề và chi phí khi chuyển đổi. Ngoài ra, tính năng này còn cho phép bạn bật các tính năng nâng cao của Android XR, chẳng hạn như URP Application Space Warpfoveated rendering (kết xuất tập trung). 

Unity 6 tự động xử lý Vulkan, vì vậy khi bạn sử dụng hồ sơ bản dựng Android XR, Unity sẽ định cấu hình Vulkan làm API đồ hoạ. Nhờ đó, bạn có thể sử dụng tất cả các tính năng nâng cao của Android XR mà không cần phải định cấu hình theo cách thủ công.

Bạn có thể xác minh chế độ cài đặt API đồ hoạ bằng cách chuyển đến phần "Edit" (Chỉnh sửa) > "Project Settings" (Cài đặt dự án) > "Player" (Trình phát) > "Android tab" (Thẻ Android) > "Other settings" (Chế độ cài đặt khác) > "Graphics APIs" (API đồ hoạ).

appentrypoint.png

Tìm hiểu về hệ sinh thái gói

Có 2 gói mà bạn có thể dùng cho Android XR trong Unity. Một cách là sử dụng Tiện ích Android XR cho Unity và cách còn lại là sử dụng gói Unity OpenXR: Android XR.

Hai điều này có vẻ giống nhau, nhưng hãy kiên nhẫn với tôi.

Gói Unity OpenXR: Android XR là gói Unity chính thức để hỗ trợ Android XR. Nền tảng này cung cấp phần lớn các tính năng của Android XR thông qua các tiêu chuẩn OpenXR. Thư viện này cũng cho phép tích hợp AR Foundation cho các tính năng thực tế hỗn hợp. Lợi ích chính của việc sử dụng gói Unity OpenXR: Android XR là gói này cung cấp một API hợp nhất để hỗ trợ các thiết bị XR.


Trong khi Android XR Extensions for Unity là gói XR của Google, được thiết kế dành riêng cho việc phát triển ứng dụng cho thiết bị Android XR. Nó bổ sung cho gói Unity OpenXR các tính năng khác như chế độ kết hợp môi trường, tạo lưới cảnh, theo dõi hình ảnh và theo dõi cơ thể. Nhược điểm là bạn chỉ có thể phát triển cho các thiết bị Android XR.


Lựa chọn của bạn sẽ phụ thuộc vào nhu cầu cụ thể của bạn, nhưng nói chung, chúng tôi khuyên bạn nên sử dụng Unity OpenXR: Android XR, vì lựa chọn này mang lại cho bạn nhiều sự linh hoạt hơn cho các thiết bị mà ứng dụng của bạn sẽ tương thích. Sau đó, dựa trên các yêu cầu của ứng dụng, bạn có thể thêm Tiện ích Android XR cho Unity.

Cách cài đặt gói

Để thêm một gói mới, hãy mở dự án trong Unity rồi chọn "Window" (Cửa sổ) > "Package Management" (Quản lý gói) > "Package Manager" (Trình quản lý gói).

Tại đây, bạn có thể cài đặt các gói này từ thẻ "Unity Registry" (Sổ đăng ký của Unity):

packagemanager.png

Bạn có thể cài đặt gói Android XR cho Unity thông qua GitHub bằng cách chọn biểu tượng ➕, chọn "Install package from git URL" (Cài đặt gói từ URL git), sau đó nhập "https://github.com/android/android-xr-unity-package.git"

packagemanager2.png

Các tính năng bắt buộc của OpenXR

Bây giờ, bạn đã cài đặt các gói cần thiết, hãy bật một số tính năng cốt lõi để dự án của chúng ta hoạt động.

Bạn có thể bật chế độ cài đặt OpenXR cho Android: "Edit" (Chỉnh sửa) -> "Project Settings" (Cài đặt dự án) -> "XR Plugin Management" (Quản lý trình bổ trợ XR) -> Nhấp vào Android và bật OpenXR

xrpluginmgmt.png

Tiếp theo, chúng ta cần bật tính năng hỗ trợ cho "Android XR support" (Hỗ trợ Android XR). Chúng ta sẽ đề cập đến các tính năng khác của OpenXR khi cần. Hiện tại, chúng ta chỉ cần bật chế độ hỗ trợ Android XR.

Đầu vào

Android XR hỗ trợ các phương thức nhập cho Bàn tay, Giọng nói, Theo dõi ánh mắt, Bàn phím và Bộ điều khiển. Bạn nên cài đặt XR Interaction ToolkitXR Hands vì đây là những thành phần tiền chế tốt nhất để bắt đầu. Khi sử dụng các thành phần dựng sẵn này, bạn sẽ có mọi thứ cần thiết để hỗ trợ Bàn tay và Bộ điều khiển trong ứng dụng của mình.

xrinteractiontoolkit.png

Sau khi cài đặt cả XR Hands và XR Interactive Toolkit, bạn nên nhập Starter Assets (Tài sản khởi đầu) và Hands Interaction Demo (Bản minh hoạ tương tác bằng tay). Sau đó, bạn cần bật hồ sơ Tương tác bằng tayBộ điều khiển đơn giản Khronos, đồng thời bật các tính năng Hệ thống con theo dõi bàn tay và Meta Hand Tracking Aim.

Bạn có thể chỉnh sửa các chế độ cài đặt này bằng cách chuyển đến phần "Edit" (Chỉnh sửa) > "Project Settings" (Cài đặt dự án) > "XR Plug-in Management" (Quản lý trình bổ trợ XR) > "OpenXR"

profiles.png

Bạn cũng nên dùng prefab XR Origin của Unity. Prefab này thể hiện vị trí và hướng của người dùng trong không gian XR. Thành phần này chứa giàn camera và các thành phần theo dõi cần thiết để kết xuất trải nghiệm XR của bạn từ góc nhìn chính xác.

Cách đơn giản nhất để thêm thành phần tiền chế này là nhập thành phần đó từ bản minh hoạ tích hợp bàn tay mà chúng ta đã nhập trước đó. Bạn có thể tìm thấy thành phần này tại đây "Hands Integration Toolkit" (Bộ công cụ tích hợp bàn tay) > "Hand Interaction" (Tương tác bằng tay) > "Prefabs" (Thành phần tiền chế) > "XR Origin" (Nguồn XR)

prefabs.png

Bạn nên sử dụng Prefab này thay vì lựa chọn "XR Origin" trong các đối tượng trò chơi vì Prefab này sử dụng XR Input Modality Manager (Trình quản lý phương thức nhập XR) để tự động chuyển đổi giữa tay và bộ điều khiển của người dùng. Việc này sẽ giúp bạn chuyển đổi giữa tay và bộ điều khiển một cách hiệu quả nhất.

Quyền riêng tư và quyền: xây dựng lòng tin của người dùng

Dù bạn xây dựng ứng dụng nào, bạn cũng cần thu thập quyền khi bắt đầu chạy từ người dùng. Điều này là do tính năng hiểu cảnh, theo dõi ánh mắt, theo dõi khuôn mặt và theo dõi cử động của tay cung cấp quyền truy cập vào dữ liệu có thể nhạy cảm hơn đối với người dùng.

Những chức năng này cung cấp thông tin cá nhân chi tiết hơn so với các ứng dụng truyền thống dành cho máy tính hoặc thiết bị di động. Vì vậy, các quyền khi bắt đầu chạy đảm bảo người dùng có toàn quyền kiểm soát những dữ liệu mà họ chọn chia sẻ. Vì vậy, để tuân thủ các chính sách bảo mật và quyền riêng tư của Android, Android XR có các quyền cho từng tính năng này.

Ví dụ: nếu sử dụng gói XR Hands cho các cử chỉ tay tuỳ chỉnh, bạn sẽ cần yêu cầu quyền theo dõi cử động của tay (xem bên dưới) vì gói này cần theo dõi nhiều thông tin về bàn tay của người dùng. Điều này bao gồm những việc như theo dõi tư thế khớp bàn tay, vận tốc góc và vận tốc tuyến tính;

Lưu ý: Để xem danh sách đầy đủ các tiện ích yêu cầu quyền, hãy xem thông tin trên trang web dành cho nhà phát triển XR.

  const string k_Permission = "android.permission.HAND_TRACKING";

#if UNITY_ANDROID
void Start()
{
    if (!Permission.HasUserAuthorizedPermission(k_Permission))
    {
        var callbacks = new PermissionCallbacks();
        callbacks.PermissionDenied += OnPermissionDenied;
        callbacks.PermissionGranted += OnPermissionGranted;
        
        Permission.RequestUserPermission(k_Permission, callbacks);
    }
}

void OnPermissionDenied(string permission)
{
    // handle denied permission
}


void OnPermissionGranted(string permission)
{
    // handle granted permission
}

#endif // UNITY_ANDROID

Nâng cao chất lượng hình ảnh bằng các lớp thành phần

Lớp thành phần là cách được đề xuất để kết xuất các phần tử trên giao diện người dùng. Chúng cho phép hiển thị các phần tử ở chất lượng cao hơn nhiều so với quy trình kết xuất tiêu chuẩn của Unity vì mọi thứ đều được kết xuất trực tiếp vào trình kết hợp của nền tảng.

Ví dụ: nếu bạn đang hiển thị văn bản, thì quá trình kết xuất Unity tiêu chuẩn có nhiều khả năng sẽ có văn bản bị mờ, các cạnh mềm và các thành phần giả tạo về mặt hình ảnh. Trong khi đó, với các lớp thành phần, văn bản sẽ rõ ràng hơn, đường viền sẽ sắc nét hơn và trải nghiệm tổng thể sẽ tốt hơn.


Ngoài văn bản, mô hình này còn kết xuất video, hình ảnh và các phần tử trên giao diện người dùng ở chất lượng cao hơn nhiều. Việc này được thực hiện bằng cách tận dụng khả năng hỗ trợ gốc cho các lớp trình kết hợp của thời gian chạy.

Để bật Composition Layers (Lớp thành phần), hãy mở Package Manager (Trình quản lý gói), chọn "Unity Register" (Đăng ký Unity), rồi cài đặt "XR Composition Layers" (Lớp thành phần XR).

Tạo và chạy

Giờ đây, bạn đã cài đặt các gói OpenXR và bật các tính năng, cũng như thiết lập sẵn cho chuyển động của bàn tay và đầu, bạn có thể tạo cảnh và triển khai trực tiếp đến tai nghe để kiểm thử.

Bước tiếp theo: mở rộng kỹ năng

Giờ đây, bạn đã thiết lập môi trường phát triển Android XR và hiểu rõ các khái niệm chính. Sau đây là các bước tiếp theo để tiếp tục hành trình phát triển XR:

Tài nguyên cần thiết để tiếp tục học tập:

Các dự án mẫu để khám phá:

Tác giả:

Tiếp tục đọc