我正在尝试使我的游戏全屏显示,并且我在网上找到了一些脚本来实现这个目标。不幸的是,在2020版本(或2018+)中我无法执行它们。在编辑器模式下有没有启用全屏游戏窗口的方法?
从下面的脚本中,我在System.Object Res = GetMainGameView.Invoke (null, null);
处得到异常错误。当前 Unity 版本是否无法访问 GetMainGameView?
using UnityEditor;
using UnityEngine;
namespace FullScreenPlayModes {
[InitializeOnLoad]
public class FullScreenPlayMode : Editor {
//The size of the toolbar above the game view, excluding the OS border.
private static int toolbarHeight = 22;
static FullScreenPlayMode () {
EditorApplication.playModeStateChanged -= PlayModeStateChanged;
EditorApplication.playModeStateChanged += PlayModeStateChanged;
}
static void PlayModeStateChanged (PlayModeStateChange _playModeStateChange) {
if (PlayerPrefs.GetInt ("PlayMode_FullScreen", 0) == 1) {
// Get game editor window
EditorApplication.ExecuteMenuItem ("Window/General/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);
EditorWindow gameView = (EditorWindow) Res;
switch (_playModeStateChange) {
case PlayModeStateChange.EnteredPlayMode:
Rect newPos = new Rect (0, 0 - toolbarHeight, Screen.currentResolution.width, Screen.currentResolution.height + toolbarHeight);
gameView.position = newPos;
gameView.minSize = new Vector2 (Screen.currentResolution.width, Screen.currentResolution.height + toolbarHeight);
gameView.maxSize = gameView.minSize;
gameView.position = newPos;
break;
case PlayModeStateChange.EnteredEditMode:
gameView.Close ();
break;
}
}
}
[MenuItem ("Tools/Editor/Play Mode/Full Screen", false, 0)]
public static void PlayModeFullScreen () {
PlayerPrefs.SetInt ("PlayMode_FullScreen", 1);
}
[MenuItem ("Tools/Editor/Play Mode/Full Screen", true, 0)]
public static bool PlayModeFullScreenValidate () {
return PlayerPrefs.GetInt ("PlayMode_FullScreen", 0) == 0;
}
[MenuItem ("Tools/Editor/Play Mode/Window", false, 0)]
public static void PlayModeWindow () {
PlayerPrefs.SetInt ("PlayMode_FullScreen", 0);
}
[MenuItem ("Tools/Editor/Play Mode/Window", true, 0)]
public static bool PlayModeWindowValidate () {
return PlayerPrefs.GetInt ("PlayMode_FullScreen", 0) == 1;
}
}
}
WindowLayout.Mximize
可以用;) - derHugo