c# - Unity 中的光标未解锁

if (Gameplay_UI.activeInHierarchy == true && isActive == true && Loose.activeSelf == false)
    {
        Cursor.lockState = CursorLockMode.Locked;
        Cursor.visible = false;
    } else
    {
        Cursor.lockState = CursorLockMode.None;
        Cursor.visible = true;
    }

这是我用来锁定/解锁光标的代码,它在大多数情况下都可以正常工作,除非玩家松动(当玩家松动时,玩家的游戏对象被取消激活并且松散的游戏对象被激活),isActive bool 是假设检查玩家是否在场景中处于活动状态,但像 .activeself 或 .activeinhierachy 一样,当玩家在场景中被停用时它实际上并没有更新,如果我检查 Loose 游戏对象是否处于活动状态,这也是一样的,.activeself 或.activeinhierachy 从不更新。当玩家松动时,我希望能得到一些帮助来解锁光标,谢谢。

回答1

您可以解锁 OnDisable 内的光标。

https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnDisable.html 在对象被禁用或不活动时被调用。

例如。

private void OnDisable()
{
    UnlockCursor();
}

private void UnlockCursor()
{
    Cursor.lockState = CursorLockMode.None;
    Cursor.visible = true;
}

相似文章