我正在制作的游戏中有四个GameObject,单击每个对话框都会打开一个对话框。

我的问题是我使用的是OnMouseDown,第一个总是需要单击两次。它发生在OnMouseDown上,我在游戏上有一些可以正常工作的按钮。

public static GameObject selectedClient;
public bool isBuying;

private Manager manager;

private void Start()
{
    manager = GameObject.FindObjectOfType(typeof(Manager)) as Manager;
}

private void OnMouseDown()
{
    if (isBuying == true)
    {
        selectedClient = this.gameObject;
        manager.Talk();
    }
    else if (isBuying == false)
    {
        manager.NotTalk();
    }
}


Talk()和NotTalk()如下:

    public void Talk()
{
    dialogueBox.SetActive(true);
    Time.timeScale = 0f;
    actualClient = Client.selectedClient;
}

public void NotTalk()
{
    dialogueBox.SetActive(false);
    Time.timeScale = 1f;
}


有人知道为什么会这样吗?

提前致谢。

最佳答案

如果我理解正确,似乎在第一次单击鼠标时成功调用了OnMouseDown()Talk(),但是需要再次单击鼠标才能显示dialogueBox

如果dialogueBox.SetActive(true)被成功调用,则可以查看Unity Scene Hierarchy窗口,看看它是否如您期望的那样在第一次单击鼠标后就变为活动状态。如果是这样,则可以检查该对象以查看为什么它没有出现在屏幕上。 (如另一幅海报所述,它可能与dialogueBox初始化有关。)

此外,这些问题可能有助于我们调试并找出问题所在:


当您“单击一个对象然后再单击另一个对象”时,会出现什么错误?
如果以不同顺序单击按钮会怎样?如果有4个按钮,是始终受影响的第一个按钮还是您单击的第一个按钮?


通常,如其他发布者所建议的那样,使用Debug.LogDebug.Assert应该可以帮助您缩小问题的范围。同样,您可以在代码中设置断点,然后逐步查看代码是否按预期运行。正如我在本文中提到的,Unity Scene Hierarchy窗口对于调试也很有用。

关于c# - Unity-双击OnMouseDown,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49555147/

10-11 18:20