logo設計說明東莞網(wǎng)站優(yōu)化
注意:
1、AR Core是Google的產(chǎn)品,因為谷歌制裁華為,所以 有些 華為機可能不支持AR Core的軟件;
2、手機在設置里搜索Google Play,看看是否已經(jīng)安裝上了,如果沒有裝此服務,去商城里搜索Google Play,安裝到手機上,如果商城里搜不到,就去網(wǎng)上下載一個Google Play裝到手機上(有些設備即使裝上也可能無法使用);
1、繼承Packages
打開Package Manager,導入以下幾個包;
2、工程切換到安卓平臺
3、配置Player Settings
取消多線程渲染,沒必要勾選
Min API Level 選擇24;
Target API Level用本地最高的就ok,一般是在29及以上就可以,我本地用的是32
選擇IL2CPP打包
ARCore不支持32位的,取消勾選ARMv7,選擇ARM64;不然打出包來運行會閃退。
4、新建測試場景
新建場景,然后在Hierarchy面板刪除Camera,添加下圖中標注的AR Session Origin和AR Session
寫個測試腳本(AppController.cs),我掛到了AR Session Origin物體上了。
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.XR.ARFoundation;
using UnityEngine.XR.ARSubsystems;[RequireComponent(typeof(ARRaycastManager))]
public class AppController : MonoBehaviour
{public GameObject spawnPrefab;private List<ARRaycastHit> Hits;private ARRaycastManager mRaycastManager;private GameObject spawnedObject = null;private void Start(){Hits = new List<ARRaycastHit>();mRaycastManager = GetComponent<ARRaycastManager>();}void Update(){if (Input.touchCount == 0)return;var touch = Input.GetTouch(0);if (mRaycastManager.Raycast(touch.position, Hits, TrackableType.PlaneWithinPolygon | TrackableType.PlaneWithinBounds)){var hitPose = Hits[0].pose;if (spawnedObject == null){spawnedObject = Instantiate(spawnPrefab, hitPose.position, hitPose.rotation);}else{spawnedObject.transform.position = hitPose.position;}}}
}
Spawn Prefab 就是一個小方塊,目的是檢測到平面后顯示在平面上
然后保存場景,打包到真機上測試
相關網(wǎng)址:
1、AR Foundation的官方文檔:點擊跳轉鏈接
2、谷歌ARCore 的官方例子(不是Unity的工程,可以用Android Studio打開,打包到真機上測試):點擊跳轉Git;可以下載谷歌官方例子,打包到真機上測試官方案例是否可以正常運行。
3、AR Foundation的例子工程,ARFoundation Samples:點擊跳轉Git;下載到本地后,用Unity打開,可能會報錯,但是解決一下相應的錯誤就好,是一個很完整的例子工程。