如何将不同的预制件分配给不同的图像?
现在,我的所有预制件都加载在彼此之上,但是我如何获得它,以便每个预制件仅在一个图像之上加载一次,因此每个图像都有不同的预制件?
我已经修改了示例代码(框架角)以加载到我自己的预制件中,并使用字典将预制件与数据库中的图像配对,但是当程序运行时,它会将所有预制件放在同一个地方而不是放置一个预制件在每张图片上,它将所有预制件放在每张图片上 - 这是我一直在使用的代码:
public GameObject obj1, obj2, obj3, obj4;
Dictionary<int, GameObject> imagePrefabPairs;
public AugmentedImage Image;
void Start()
{
instantiateDictionary();
}
// TODO: make initialisation dynamic, to match the size of the db.
public void instantiateDictionary()
{
imagePrefabPairs = new Dictionary<int, GameObject>
{
{ 0, obj1 },
{ 1, obj2 },
{ 2, obj3 },
{ 3, obj4 }
};
}
public void Update()
{
if (Image == null || Image.TrackingState != TrackingState.Tracking)
{
obj1.SetActive(false);
obj2.SetActive(false);
obj3.SetActive(false);
obj4.SetActive(false);
return;
}
Pose _centerPose = Image.CenterPose;
imagePrefabPairs[Image.DatabaseIndex].transform.localPosition = _centerPose.position;
imagePrefabPairs[Image.DatabaseIndex].transform.localScale = new Vector3(0.1f, 0.1f, 0.1f);
imagePrefabPairs[Image.DatabaseIndex].SetActive(true);
}
我认为我需要某种 if 语句来询问是否加载了一个预制件,然后选择加载下一个预制件并让他们一次实例化一个,但我不知道该怎么做,或者如果有更直接的方法可以做到这一点......?