首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >统一- OnMouseDown双击

统一- OnMouseDown双击
EN

Stack Overflow用户
提问于 2018-03-29 11:41:49
回答 3查看 1.4K关注 0票数 2

我有四个GameObjects在我正在制作的游戏,当我点击每一个对话框打开。

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

代码语言:javascript
复制
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()如下:

代码语言:javascript
复制
    public void Talk()
{
    dialogueBox.SetActive(true);
    Time.timeScale = 0f;
    actualClient = Client.selectedClient;
}

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

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

提前谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-03-29 15:07:27

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

如果dialogueBox.SetActive(true)被成功调用,您可以查看团结场景层次结构窗口,查看它是否像第一次鼠标单击后所期望的那样活动。如果是这样的话,那么您可以检查这个对象,看看它为什么没有出现在屏幕上。(正如另一张海报所提到的,它可能与dialogueBox初始化有关。)

此外,这些问题可能会帮助我们调试和解决问题:

  • 当您“单击一个对象,然后单击另一个对象”时,您会得到什么错误?
  • 如果按不同的顺序单击按钮会发生什么?如果有4个按钮,是总是受影响的第一个按钮,还是单击第一个按钮?

通常,正如其他海报所建议的那样,使用Debug.LogDebug.Assert可以帮助您缩小问题的范围。类似地,您可以在代码中设置断点,并逐步查看代码是否按预期运行。正如我在这篇文章中提到的,团结场景层次结构窗口对于调试也很有用。

票数 1
EN

Stack Overflow用户

发布于 2018-03-29 12:19:04

假设manager.Talk()打开对话框,那么isBuying一开始可能是假的,单击一次就会切换?

编辑:使用TalkNotTalk方法更新用户问题。

既然您一开始说,只有时间停止了,但是dialogueBox没有显示,这是因为它没有被填充,或者没有正确初始化吗?你能显示出你期望出现的东西的代码吗?

可能只是dialogueBox没有什么可显示的,因此,在第二次单击时,它就无法正确填充和显示。

票数 4
EN

Stack Overflow用户

发布于 2018-03-29 13:09:28

添加一个Debug.log (isBuying );上面(isBuying == true)。

然后,您将知道OnMouseDown()是否首先被调用,以及它是否按照您的预期进行。在那之后,你应该可以自己修复它,否则,请告诉我你发现了什么。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49555147

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档