我想在播放时通过 C# 脚本打开/关闭此面板。这可能吗?尚未为此找到任何编辑器 API 函数。
问问题
202 次
2 回答
3
你可以通过反射来做到这一点。修改了我很久以前提出的类似答案。下面是一个工作集/获取统计功能。使用Unity 5.4.0f1测试。我放置了 Unity 版本,以便人们在它停止工作时不会抱怨。如果他们重命名任何变量,Unity 的更新可以随时打破这一点。
GameView
= 用于表示编辑器中 Unity GameView 选项卡的类。GetMainGameView
GameView
= 返回当前实例的静态函数。m_Stats
= 一个布尔变量,用于确定是否应显示统计信息。
代码:
//Show/Hide stats
void showStats(bool enableStats)
{
Assembly asm = Assembly.GetAssembly(typeof(Editor));
Type type = asm.GetType("UnityEditor.GameView");
if (type != null)
{
MethodInfo gameViewFunction = type.GetMethod("GetMainGameView", BindingFlags.Static |
BindingFlags.NonPublic);
object gameViewInstance = gameViewFunction.Invoke(null, null);
FieldInfo getFieldInfo = type.GetField("m_Stats", BindingFlags.Instance |
BindingFlags.NonPublic | BindingFlags.Public);
getFieldInfo.SetValue(gameViewInstance, enableStats);
}
}
//Returns true if stats is enabled
bool statsIsEnabled()
{
Assembly asm = Assembly.GetAssembly(typeof(Editor));
Type type = asm.GetType("UnityEditor.GameView");
if (type != null)
{
MethodInfo gameViewFunction = type.GetMethod("GetMainGameView", BindingFlags.Static |
BindingFlags.NonPublic);
object gameViewInstance = gameViewFunction.Invoke(null, null);
FieldInfo getFieldInfo = type.GetField("m_Stats", BindingFlags.Instance |
BindingFlags.NonPublic | BindingFlags.Public);
return (bool)getFieldInfo.GetValue(gameViewInstance);
}
return false;
}
用法:
//Show stats
showStats(true);
//Hide stats
showStats(false);
//Read stats
bool stats = statsIsEnabled();
于 2016-10-25T08:07:29.723 回答
2
不,这是不可能的,除非你是一个顽固的黑客。GameView 是一个内部类,编辑器脚本无法访问。但是,嘿,总是有一个很好的反思的选择。这个问题将使您走上正轨: http ://answers.unity3d.com/questions/179775/game-window-size-from-editor-window-in-editor-mode.html
于 2016-10-24T14:32:23.513 回答