재생하는 동안 C# 스크립트로이 패널을 켜거나 끕니다. 이것이 가능합니까? 이를위한 편집기 API 함수를 찾지 못했습니다. 당신이 영구적 인 해커가 아니라면재생하는 동안 편집기에서 통계 패널을 켜고/끄는 방법?
0
A
답변
2
아니 그것은 불가능합니다. GameView는 내부 클래스이므로 편집기 스크립팅에 액세스 할 수 없습니다. 그러나 이봐, 언제나 좋은 반성의 옵션이있다. 이 질문을 통해 올바른 방향으로 이동하게됩니다. http://answers.unity3d.com/questions/179775/game-window-size-from-editor-window-in-editor-mode.html
3
리플렉션을 통해이를 수행 할 수 있습니다. 수정 된 similar 대답은 오래 전에 만들었습니다. 아래는 working set/get stats 함수입니다. 으로 테스트 됨 Unity 5.4.0f1. Unity 버전을 설치하여 사람들이 작동을 멈추었을 때 불평하지 않을 것입니다. Unity의 업데이트는 의 이름을으로 변경하면 언제든지이를 깨뜨릴 수 있습니다.
GameView
는 편집기에서 유니티 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();
이것은 좋은 옵션처럼 보인다! 그러나 어떻게 그들이하는 일을하는 방법의 정확한 이름을 알아 냈습니까? 필요한 방법의 이름을 찾을 수있는 방법은 무엇입니까? 방법 또는 뭔가 목록이 있습니까? – Dmitry
오, 나는 대답 할 수 없다. 나는 gameView를 파고 들려고하지 않았다. –