在阵列中实例化下一个和上一个预制件的问题(Unity 3D)
Problems with Instantiating Next and Previous Prefab in Array (Unity 3D)
我正在开发一个简单的虚拟旅游应用程序,我将相机放在一个球体中,用 360 照片映射球体,然后单击箭头对象(精灵)来向前和向后导航。我下面的脚本在破坏当前球体的同时实例化数组中的下一个球体(映射到下一张 360 照片),模拟应用程序中的向前移动。好像还可以。
public void Update()
{
if (Input.GetMouseButtonDown(0))
{
RaycastHit hit;
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray, out hit))
{
if (hit.collider != null)
{
Destroy(currentObject);
currentIndex++;
currentIndex = currentIndex >= Spheres.Length ? 0 : currentIndex;
currentObject = Instantiate(Spheres[currentIndex]);
}
}
}
}
我的问题是如何反转数组的顺序,以便我可以单击 "back" 箭头来实例化数组中的前一个预制件。
我认为这很简单 currentIndex--;
但我无法让它工作。非常感谢任何帮助。
pic of virtual tour in editor
只需使用
反转环绕
currentIndex--;
if(currentIndex < 0) currentIndex = Spheres.Length - 1;
您还想对 ++
方式做同样的事情顺便说一句:
currentIndex++;
if(currentIndex > Spheres.Length - 1) currentIndex = 0;
注意- 1
!您的索引永远不会达到 Spehres.Length
,因为索引是基于 0
的。所以数组中的最后一个元素总是 index = array.Length - 1
.
顺便说一句,以积极的方式进行环绕的稍微简单的方法就是
currentIndex = (currentIndex + 1) % Spheres.Length;
我正在开发一个简单的虚拟旅游应用程序,我将相机放在一个球体中,用 360 照片映射球体,然后单击箭头对象(精灵)来向前和向后导航。我下面的脚本在破坏当前球体的同时实例化数组中的下一个球体(映射到下一张 360 照片),模拟应用程序中的向前移动。好像还可以。
public void Update()
{
if (Input.GetMouseButtonDown(0))
{
RaycastHit hit;
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray, out hit))
{
if (hit.collider != null)
{
Destroy(currentObject);
currentIndex++;
currentIndex = currentIndex >= Spheres.Length ? 0 : currentIndex;
currentObject = Instantiate(Spheres[currentIndex]);
}
}
}
}
我的问题是如何反转数组的顺序,以便我可以单击 "back" 箭头来实例化数组中的前一个预制件。
我认为这很简单 currentIndex--;
但我无法让它工作。非常感谢任何帮助。
pic of virtual tour in editor
只需使用
反转环绕currentIndex--;
if(currentIndex < 0) currentIndex = Spheres.Length - 1;
您还想对 ++
方式做同样的事情顺便说一句:
currentIndex++;
if(currentIndex > Spheres.Length - 1) currentIndex = 0;
注意- 1
!您的索引永远不会达到 Spehres.Length
,因为索引是基于 0
的。所以数组中的最后一个元素总是 index = array.Length - 1
.
顺便说一句,以积极的方式进行环绕的稍微简单的方法就是
currentIndex = (currentIndex + 1) % Spheres.Length;