簡體   English   中英

顯示菜單使光標消失

[英]Showing menu make the cursor disappear

單擊時光標消失,如下所示:

在此處輸入圖片說明

繁殖方法:

  • 獲取Game Jam菜單模板: https : //www.assetstore.unity3d.com/zh/#!/ content/ 40465
  • 使用從標准資產導入的FPS控制器添加另一個場景。
  • 在用戶界面->開始選項組件中,勾選“更改場景”。

  • 按Escape鍵並觸摸滑塊,任何單擊都會使光標消失。

看起來像這樣: https : //imgur.com/a/hefmP

如果我勾選FPS控制器中的鼠標外觀->鎖定光標,則不會發生這種情況,但是我也可以在FPS游戲中看到光標。

我試圖添加Cursor.lockState = CursorLockMode.Locked; Cursor.visible = false; Cursor.lockState = CursorLockMode.Locked; Cursor.visible = false; 暫停和取消暫停時相反,但這無濟於事。 可能是因為MouseLook.cs也正在更新它們:

在此處輸入圖片說明

我寧可不要將FPSController和暫停菜單耦合在一起,它們也處於不同的場景中。

那么進入暫停菜單后還能如何解鎖光標? 這里有可以使用的事件模式嗎?

它也使場景變暗,但這是另一個問題。

它已由FirstPersonController腳本中使用的MouseLook腳本修改。 一種解決方案是修改MouseLook腳本,但是簡單的Asset更新將MouseLook該修改。

解決此問題的適當方法是,在打開任何菜單時禁用FirstPersonController腳本,然后在關閉該菜單時將其重新啟用。 另外,禁用它時,請將Cursor.lockState手動設置為None ,並將光標設置為visible。

下面是一個簡單的函數來處理。 菜單的每個打開關閉按鈕都應鏈接到下面的功能。 調用它時,請使用打開按鈕將false傳遞給它,使用關閉按鈕將true傳遞給它

void enableFPS(bool enable)
{
    GameObject fpsObj = GameObject.Find("FPSController");
    FirstPersonController fpsScript = fpsObj.GetComponent<FirstPersonController>();

    if (enable)
    {
        //Enable FPS script
        fpsScript.enabled = true;
    }
    else
    {
        //Disable FPS script
        fpsScript.enabled = false;
        //Unlock Mouse and make it visible
        Cursor.lockState = CursorLockMode.None;
        Cursor.visible = true;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM