階層を拡張した後の効果:
戦闘をデバッグするときは、階層インターフェイスで対応する将軍を選択し、ショートカット キーを操作して将軍を制御する必要があります。操作が複数あるので面倒だったので、階層メニューを展開する方法をネットで探しました。
コードは以下のように表示されます。
[InitializeOnLoadMethod]
private static void StartInitializeOnLoadMethod()
{
EditorApplication.hierarchyWindowItemOnGUI += OnHierarchyGUI;
}
private static void OnHierarchyGUI(int instanceID, Rect selectionRect)
{
if (!Application.isPlaying)
return;
var data = Selection.activeGameObject;
if (data == null)
{
return;
}
if (Event.current != null
&& selectionRect.Contains(Event.current.mousePosition)
&& Event.current.button == 1
&& Event.current.type <= EventType.MouseUp
&& CheckShow())
{
Vector2 mousePosition = Event.current.mousePosition;
EditorUtility.DisplayPopupMenu(new Rect(mousePosition.x, mousePosition.y, 0, 0), "Tools/战斗脚本控制", null);
Event.current.Use();
}
}
[MenuItem("Tools/战斗脚本控制/控制该武将")]
public static void SelectGameObject1()
{
if (Application.isPlaying)
{
var data = Selection.activeGameObject;
if (data != null)
{
var roleControll = data.GetComponent<RoleController>();
if (roleControll != null)
{
roleControll.PlayerControl = !roleControll.PlayerControl;
}
}
}
}
private static bool CheckShow()
{
var data = Selection.activeGameObject;
if (data != null)
{
var roleControll = data.GetComponent<RoleController>();
if (roleControll != null)
{
return true;
}
}
return false;
}
独自の条件を追加する必要があることに注意してください。追加しないと、Unity のネイティブ メニューが上書きされます。
参考:
Unity エディター階層拡張中国語チュートリアル - Chinar グラフィックスの詳細な説明 - ChinarCSDN のブログ - CSDN ブログ