Arrays 在数组中实例化下一个和上一个预置的问题(Unity 3D)
我正在开发一个简单的虚拟漫游应用程序,在这个应用程序中,我将一个摄像头放在一个球体内,用360度的照片映射球体,然后单击箭头对象(精灵)向前和向后导航。下面的脚本在销毁当前球体的同时实例化阵列中的下一个球体(用下一张360照片映射),模拟应用程序中的向前移动。它似乎工作正常Arrays 在数组中实例化下一个和上一个预置的问题(Unity 3D),arrays,unity3d,reverse,instantiation,destroy,Arrays,Unity3d,Reverse,Instantiation,Destroy,我正在开发一个简单的虚拟漫游应用程序,在这个应用程序中,我将一个摄像头放在一个球体内,用360度的照片映射球体,然后单击箭头对象(精灵)向前和向后导航。下面的脚本在销毁当前球体的同时实例化阵列中的下一个球体(用下一张360照片映射),模拟应用程序中的向前移动。它似乎工作正常 public void Update() { if(Input.GetMouseButtonDown(0)) { 雷卡斯特击中; Ray-Ray=Camera.main.screenpointoray(输入.鼠标位置); 如
public void Update()
{
if(Input.GetMouseButtonDown(0))
{
雷卡斯特击中;
Ray-Ray=Camera.main.screenpointoray(输入.鼠标位置);
如果(物理.光线投射(光线,出击))
{
if(hit.collider!=null)
{
销毁(当前对象);
currentIndex++;
currentIndex=currentIndex>=球体。长度?0:currentIndex;
currentObject=实例化(球体[currentIndex]);
}
}
}
}
我的问题是如何颠倒数组的顺序,以便单击“后退”箭头来实例化数组中先前的预置
我认为这是一个简单的ascurrentIndex--代码>但我无法让它工作。非常感谢您的帮助
只需使用
currentIndex--;
如果(currentIndex<0)currentIndex=Spheres.Length-1;
您还希望对++
方式执行相同的操作,顺便说一句:
currentIndex++;
如果(currentIndex>Spheres.Length-1)currentIndex=0;
注意-1
!您的索引不应达到Spehres.Length
,因为索引基于0
。因此,数组中的最后一个元素始终具有index=array.Length-1
一个稍微简单一点的方法是以积极的方式进行环绕,顺便说一句
currentIndex=(currentIndex+1)%Spheres.Length;
只需使用
currentIndex--;
如果(currentIndex<0)currentIndex=Spheres.Length-1;
您还希望对++
方式执行相同的操作,顺便说一句:
currentIndex++;
如果(currentIndex>Spheres.Length-1)currentIndex=0;
注意-1
!您的索引不应达到Spehres.Length
,因为索引基于0
。因此,数组中的最后一个元素始终具有index=array.Length-1
一个稍微简单一点的方法是以积极的方式进行环绕,顺便说一句
currentIndex=(currentIndex+1)%Spheres.Length;
谢谢您的帮助。奇怪的是,我遇到了一个问题,通过单击一个箭头,我似乎同时触发了两个脚本。我用引用适当标记的脚本标记了每个箭头,但它仍然同时执行这两个箭头。这是raycast的问题吗?我在原来的帖子中添加了一张图片,这样你就可以看到我的布局了。我刚刚调试了我的光线投射,出于某种原因,它会同时触发两个箭头,无论我点击哪个箭头。。。例如,您应该将代码放入OnMouseDown
,而不是Update
OnMouseDown
仅在对象上调用,鼠标实际上在上方,没有看到您的帖子。我试试看。谢谢你。奇怪的是,我遇到了一个问题,通过单击一个箭头,我似乎同时触发了两个脚本。我用引用适当标记的脚本标记了每个箭头,但它仍然同时执行这两个箭头。这是raycast的问题吗?我在原来的帖子中添加了一张图片,这样你就可以看到我的布局了。我刚刚调试了我的光线投射,出于某种原因,它会同时触发两个箭头,无论我点击哪个箭头。。。例如,您应该将代码放入OnMouseDown
,而不是Update
OnMouseDown
仅在对象上调用,鼠标实际上在上方,没有看到您的帖子。我试试看。