函数Input.GetMouseButtonDown id在Unity3D中连续两帧为true。为什么?

函数Input.GetMouseButtonDown id在Unity3D中连续两帧为true。为什么?,unity3d,Unity3d,我有如下代码: void Update() { if(Input.GetMouseButtonDown(1)) { Debug.Log("foo"); } } 问题是,如果我单击鼠标右键一次,“foo”被写入两次。怎么可能呢?正如Frohlich在评论中所说的,如果你在多个游戏对象上附加一个脚本,那么场景中的每个脚本每帧都会得到更新方法调用。因此,要检查是否应该使用Debug.Log()方法,如下所示: Debug.Log("foo",gameObjec

我有如下代码:

void Update()
{
    if(Input.GetMouseButtonDown(1))
    {
        Debug.Log("foo");
    }
}

问题是,如果我单击鼠标右键一次,“foo”被写入两次。怎么可能呢?

正如Frohlich在评论中所说的,如果你在多个游戏对象上附加一个脚本,那么场景中的每个脚本每帧都会得到更新方法调用。因此,要检查是否应该使用
Debug.Log()
方法,如下所示:

Debug.Log("foo",gameObject);

当您单击“登录控制台”窗口时,它会将您带到生成该日志的游戏对象。

看起来它连续两次为真。在您的场景中,只有一个游戏对象与此组件/脚本连接?如果场景中有两个具有相同行为的对象,它将打印2次,以此类推。。。检查此脚本是否在同一场景中出现两次;)对你们说得对!我的脚本连接到两个游戏对象,这就是为什么它每帧执行两次!