在使用 ARCore Extensions for AR Foundation 的 ARAnchorManager.HostCloudAnchor(anchor) 方法时,如果返回 null,可能是由于未正确初始化 ARCore 的 Cloud Anchor 相关服务所导致的。
要解决此问题,可以参考以下代码示例,在开始使用 Cloud Anchor 服务之前,确保 ARCore 的 Cloud Anchor 相关服务已经正确初始化:
using Google.XR.ARCoreExtensions;
using UnityEngine;
public class CloudAnchorManager : MonoBehaviour
{
private ARSession m_Session;
private ARAnchorManager m_AnchorManager;
private void Awake()
{
m_Session = GetComponent();
m_AnchorManager = GetComponent();
}
private void Start()
{
StartCloudAnchorServices();
}
private void StartCloudAnchorServices()
{
if (ARCoreExtensions.CheckAvailability() == ARCoreExtensions.Availability.SupportedNotInstalled)
{
ARCoreExtensions.RequestInstall();
return;
}
if (ARCoreExtensions.CheckAvailability() == ARCoreExtensions.Availability.SupportedApkTooOld)
{
// Prompt the user to update Google Play Services for AR.
return;
}
m_Session.enabled = false;
ARCoreExtensions.Start();
m_Session.enabled = true;
}
// ...
}
这里的 StartCloudAnchorServices() 方法会检查 ARCore 的 Cloud Anchor 相关服务是否可用,如果可用则启动服务,否则提示用户安装或更新相关服务。启动服务后,再调用 ARAnchorManager.HostCloudAnchor(anchor) 方法,应该就能正常返回 Cloud Anchor 了。