我使用統一5.4.1f1個人在Windows 10 64位即使在獨立模式下,仍然無法使退出鍵退出遊戲。我如何解決它?
我會解釋我所做的所有步驟和我迄今嘗試的所有事情。
冷杉時間我創建了一個新的C#文件與原始代碼: 現在,當我按下Escape鍵它將回到編輯器,但不會退出遊戲!使用[InitializeOnLoad]時無法停止編輯器播放按鈕並退出遊戲。要退出遊戲,只能使用Build and Run in Standalone模式執行此操作,然後您可以創建Application.Quit();
using UnityEditor;
using UnityEngine;
using System.Collections;
[InitializeOnLoad]
public class FullscreenPlayMode : MonoBehaviour {
//The size of the toolbar above the game view, excluding the OS border.
private static int tabHeight = 22;
static FullscreenPlayMode()
{
EditorApplication.playmodeStateChanged -= CheckPlayModeState;
EditorApplication.playmodeStateChanged += CheckPlayModeState;
EditorApplication.update += Update;
}
static void CheckPlayModeState()
{
if (EditorApplication.isPlaying)
{
FullScreenGameWindow();
}
else
{
CloseGameWindow();
}
}
static EditorWindow GetMainGameView(){
EditorApplication.ExecuteMenuItem("Window/Game");
System.Type T = System.Type.GetType("UnityEditor.GameView,UnityEditor");
System.Reflection.MethodInfo GetMainGameView = T.GetMethod("GetMainGameView",System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Static);
System.Object Res = GetMainGameView.Invoke(null,null);
return (EditorWindow)Res;
}
static void FullScreenGameWindow(){
EditorWindow gameView = GetMainGameView();
Rect newPos = new Rect(0, 0 - tabHeight, Screen.currentResolution.width, Screen.currentResolution.height + tabHeight);
gameView.position = newPos;
gameView.minSize = new Vector2(Screen.currentResolution.width, Screen.currentResolution.height + tabHeight);
gameView.maxSize = gameView.minSize;
gameView.position = newPos;
}
static void CloseGameWindow(){
EditorWindow gameView = GetMainGameView();
gameView.Close();
}
static void Update()
{
if (Input.GetKey (KeyCode.Escape))
{
CloseGameWindow();
}
}
}
然後,因爲這不工作,因爲我想我嘗試了別的。 我刪除了這行:[InitializeOnLoad],但沒有改變腳本其餘部分的其他內容。
這次刪除行[InitializeOnLoad]後,我將腳本拖入ThirdPersonController。
現在,如果我將像之前一樣從編輯器開始遊戲並按下退出鍵,它將返回到編輯器,但不會退出遊戲!
但現在,如果我做的菜單File>構建&來看,我會得到兩個錯誤:
第一個錯誤是:
資產/ MyScripts/FullScreenPlayMode.cs(1 ,7):錯誤CS0246:無法找到類型或命名空間名稱「UnityEditor」。你是否缺少using指令或程序集引用?
第二個錯誤:
錯誤大樓的球員,因爲腳本有編譯器錯誤
讓我去這個解決方案有什麼假設是在這個環節的解決方案:
如果我將文件腳本移動到EDITOR目錄,然後我不能將腳本拖到ThirdPersonController,它會拋出一條消息,說腳本是編輯器腳本。
,如果我試圖鏈接中的第二個解決方案:
#if UNITY_EDITOR
// Editor specific code here
#endif
,所以我做它在腳本頂部:
#if UNITY_EDITOR
using UnityEditor;
#endif
和腳本文件不是在編輯器中的目錄! 這一次當我做構建&運行我得到一個新的另一個錯誤:
資產/ MyScripts/FullScreenPlayMode.cs(34,16):錯誤CS0246:類型或命名空間名稱'EditorWindow」找不到。你是否缺少using指令或程序集引用?
找不到EditorWindow出現這個錯誤。這個錯誤發生在我使用#if和#endif時
所以在我嘗試到目前爲止的所有方式中,我遇到了另一個問題。