なつねこメモ

主にプログラミング関連のメモ帳 ♪(✿╹ヮ╹)ノ 書いてあるコードは自己責任でご自由にどうぞ。記事本文の無断転載は禁止です。

Unity で GameObject の Duplicate を検出したい

Unity で Ctrl + D によるコピーを検出したい場合のやり方です。
といってもカンタンで、 hierarchyWindowItemOnGUI でヒエラルキーの OnGUI を受け取ってそこで処理してあげるだけ。
あとは、 delayCall で処理を遅延させないと activeGameObject がコピー元のままなので注意。

[InitializeOnLoad]
public static class DetectDuplicateEvent
{
    static DetectDuplicateEvent()
    {
        EditorApplication.hierarchyWindowItemOnGUI += OnHierarchyWindowItemOnGUI;
    }

    private static void OnHierarchyWindowItemOnGUI(int instanceId, Rect selection)
    {
        if (Event.current?.commandName == "Duplicate")
            EditorApplication.delayCall += OnDelayCall;
    }

    private static void OnDelayCall()
    {
        EditorApplication.delayCall -= OnDelayCall;

        var go = Selection.activeGameObject;
    }
}

ということで、メモでした。