我使用的是2020.3.20f1版本的Unity,我想创建一个AR应用程序。在我的应用程序中,参考图像库通过添加项目文件夹中包含的一些图像来更改运行时。
这是我的代码:”
using UnityEngine;
using UnityEngine.XR.ARFoundation;
using UnityEngine.XR.ARSubsystems;
using System;
using System.IO;
public class RuntimeImageLoader : MonoBehaviour
{
public ARTrackedImageManager trackedImageManager;
public string imagesFolderName = "RuntimeImages";
private void Start()
{
// Get the runtime reference image library
var referenceLibrary = trackedImageManager.referenceLibrary;
// Load images from the specified folder
var imagesFolder = $"{Application.dataPath}/{imagesFolderName}";
var imageFiles = System.IO.Directory.GetFiles(imagesFolder);
foreach (var file in imageFiles)
{
// Load the image and add it to the reference library
var imageData = System.IO.File.ReadAllBytes(file);
var texture = new Texture2D(2, 2);
texture.LoadImage(imageData);
var imageGuid = System.Guid.NewGuid();
var guidBytes = imageGuid.ToByteArray();
var serializableGuid = new UnityEngine.XR.ARSubsystems.SerializableGuid(
BitConverter.ToUInt64(guidBytes, 8),
BitConverter.ToUInt64(guidBytes, 0)
);
var runtimeImage = new XRReferenceImage(
serializableGuid,
serializableGuid,
new Vector2(texture.width, texture.height) / 1000f, // Replace with the actual size of your image
Path.GetFileNameWithoutExtension(file),
texture
);
((XRReferenceImageLibrary)referenceLibrary).Add(runtimeImage);
}
}
但这会产生此错误:
Assets/RuntimeImageLoader.cs(43,57):错误CS1061:“XRReferenceImageLibrary”不包含“Add”的定义,并且找不到接受类型为“XRReferenceImageLibrary”的第一个参数的可访问扩展方法“Add”(是否缺少using指令或程序集引用?)
我也试过referenceLibrary.Add(runtimeImage
,但它不工作。
如何纠正此错误?
1条答案
按热度按时间ljo96ir51#
根据Unity文档,
XRReferenceImageLibrary
在运行时是不可变的集合。这意味着您不能更改数据。来自文档(here):
映像库在运行时是不可变的。要通过编辑器脚本创建和操作映像库,请参阅XRReferenceImageLibraryExtensions中的扩展方法。如果需要在运行时改变库,请参阅MutableRuntimeReferenceImageLibrary。
看起来有一种类型你可以在运行时修改,叫做MutableRuntimeReferenceImageLibrary。但是你的AR是否支持它并不一定。我建议你查看这些类型的文档,以确定你的AR是否支持它以及如何检索它。