再生中にC#スクリプトでこのパネルのオン/オフを切り替えたいです。これは可能ですか?このためのエディター API 関数は見つかりませんでした。
質問する
202 次
2 に答える
3
あなたは反射でそれを行うことができます。私がずっと前に行った同様の回答を修正しました。以下は、作業セット/統計取得関数です。Unity 5.4.0f1でテスト済み。Unity版は動かなくなっても文句を言わないようにしています。Unity の更新プログラムは、変数の名前を変更すると、いつでもこれを破ることができます。
GameView
= Editor で 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 に答える