【问题标题】:Unity3D mouse cursor visibility - C#Unity3D 鼠标光标可见性 - C#
【发布时间】:2015-07-07 21:07:53
【问题描述】:

我想在游戏运行时将光标设置为不可见并锁定在屏幕中间,但在库存或菜单中时我希望光标可见并解锁。我做了这样的事情:

if (tribe == game) {
            Cursor.lockState = CursorLockMode.Locked;
            Cursor.visible = false;
            Time.timeScale = 1;
        } else if (tribe == menu) {
            Cursor.lockState = CursorLockMode.Confined;
            Cursor.visible = true;
            Time.timeScale = 0;
        } else if (tribe == inventory) {
            Cursor.lockState = CursorLockMode.Confined;
            Cursor.visible = true;
            Time.timeScale = 0;
        }

条件已正确设置并且可以正常工作(除非我应该在每一帧中调用它),但锁定状态和可见性存在问题。有时有效,有时无效(可能是因为我在 Unity 编辑器中运行它),而且它的行为很奇怪。 我应该每帧都调用它还是我用错了?

【问题讨论】:

  • 尝试每帧调用一次?也许您在其他地方的代码正在设置光标锁定状态?您是否尝试过每帧记录 Cursor.lockState 等的状态?
  • 我把它称为everyframe,但也没有用。但我感觉有些不对劲——菜单没有正确暂停我的游戏。也许这里有错误,但我不这么认为,所以如果有人知道如何解决,请回答。
  • 你检查 if 语句吗?我认为输入登录语句以查看它的应用程序是否正确到达它。
  • 我将 print () 放在其中一个 if 语句中,它打印了我想要的内容,但光标可见性无法正常工作。

标签: c# unity3d cursor mouse visibility


【解决方案1】:

您的更新循环是否会引发未捕获的错误并阻止您的逻辑运行?我们看到了一些发生错误但未在控制台中显示的问题,我们在整个更新块周围放置了一个 try catch 并从那里缩小范围。

【讨论】:

  • 我认为这是不可能的。我测试了很多时间,这不是错误。这里唯一的问题是我在某个地方的错,但是当我使用它时它只是脚本,所以我不知道。
【解决方案2】:

所有光标内容都必须发生在脚本的“OnGUI”方法中。 例如:

void OnGUI()
{
    Cursor.visible = false;
    Cursor.lockState = CursorLockMode.Locked;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多