变量在Unity的OnTriggerEnter()和Update()中不同步

时间:2019-08-14 09:44:10

标签: unity3d triggers updates

我有一个场景,其中包含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,而0objects.lenght打印,而Update()为{{1 }}和0代表number

为什么他们不被sygonated?

我不知道3是否是附加此脚本的正确对象。也许是问题所在,但是同步问题确实出乎意料

0 个答案:

没有答案