Unity3D Cursor.visible和OnEnable

时间:2018-02-23 14:40:27

标签: c# unity3d cursor

我在尝试启用游标时发现了一个奇怪的行为。

这项工作如期待

void Start()
{
    Debug.Log("enabled");
    Cursor.visible = true;
    Cursor.lockState = CursorLockMode.Locked;
    Cursor.lockState = CursorLockMode.None;
}

这根本不会

void OnEnable()
{
    Debug.Log("enabled");
    Cursor.visible = true;
    Cursor.lockState = CursorLockMode.Locked;
    Cursor.lockState = CursorLockMode.None;
}

同时打印到控制台,但在OnEnabled光标保持隐藏状态,脚本启用

我的最后一次尝试就是这个

void Start()
{
    EnableCursor();
}

void EnableCursor()
{
    Debug.Log("enabled");
    Cursor.visible = true;
    Debug.Log(Cursor.visible);
    Cursor.lockState = CursorLockMode.Locked;
    Cursor.lockState = CursorLockMode.None;
}

同样的工作

但是

void OnEnable()
{
    EnableCursor();
}

void EnableCursor()
{
    Debug.Log("enabled");
    Cursor.visible = true;
    Debug.Log(Cursor.visible);
    Cursor.lockState = CursorLockMode.Locked;
    Cursor.lockState = CursorLockMode.None;
}

无效

1 个答案:

答案 0 :(得分:0)

我做了一个快速修复,直到Unity解决了这个问题。

所以代码在这里

public bool enable = false;

void OnEnable()
{
    enable = true;
}

void LateUpdate()
{
    if (enable)
    {
        Debug.Log("enabled");
        Cursor.visible = true;
        Debug.Log(Cursor.visible);
        Cursor.lockState = CursorLockMode.Locked;
        Cursor.lockState = CursorLockMode.None;
        /*Your Cursor changing code*/
    } 
    enable = false;
}

说明:我似乎统一跟踪函数的调用 - 当从OnEnable调用函数时,所有Cursor代码都不起作用。