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;
}