我有一个场景,其中包含3个对象(刚体)和1个触发器。我已经将脚本附加到具有GameObjects数组的EventSystem上,应该执行以下操作。可以移动数组的第一个对象,并且当它与触发对象碰撞时,与数组中的下一个对象形成对比,它就不能再移动了。当第二个对象与触发器碰撞时,我们可以移动下一个对象,依此类推。
这是我的剧本
public class SystemMove : MonoBehaviour
{
public float moveSpeed = 5;
public GameObject[] objects;
int number = 0;
void Update()
{
// It still prints 0 despite being incremented in OnTriggerEnter()
//Debug.Log("Number in UPDATE is : " + number);
// Prints 3
//Debug.Log("objects.length in UPDATE: " + objects.Length);
objects[number].transform.Translate(moveSpeed * Input.GetAxis("Horizontal") * Time.deltaTime, 0f, moveSpeed * Input.GetAxis("Vertical") * Time.deltaTime);
}
private void OnTriggerEnter(Collider other)
{
if(other.name == "Trigger")
{
number++;
// Prints 0 WHY??????
Debug.Log("objects.Length: " + objects.Length);
// Prints 1
Debug.Log(" Number: " + number);
}
}
}
那么,为什么OnTriggerEnter()
为number
打印1,而0
为objects.lenght
打印,而Update()
为{{1 }}和0
代表number
。
为什么他们不被sygonated?
我不知道3
是否是附加此脚本的正确对象。也许是问题所在,但是同步问题确实出乎意料