using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using UnityEditor; using UnityEngine; using VketCloudGUITools.Runtime; namespace VketCloudGUITools.Editor { public class CopyComponentChecker { private static List checkedInstanceIDs = new List(); private static bool initialized = false; //コピペor複製時にVCButtonのGUIActionの初期化を行う処理 [InitializeOnLoadMethod] public static void InitializeEditor() { EditorApplication.hierarchyWindowItemOnGUI += OnHierarchyWindowItemOnGUI; EditorApplication.delayCall += () => initialized = true; } private static void OnHierarchyWindowItemOnGUI(int instanceID, Rect selectionRect) { string commandName = Event.current.commandName; if (checkedInstanceIDs.Contains(instanceID)) return; var instance = EditorUtility.InstanceIDToObject(instanceID); checkedInstanceIDs.Add(instanceID); if (!initialized) return; //新しいinstanceIDを持つオブジェクト //コンポーネントのチェックを行い、VCButtonがある場合はクローン。 var gameObject = instance as GameObject; if (instance != null) { var vcButtons = gameObject.GetComponents(); foreach ( var button in vcButtons ) { button.Reset(); } } } } }