概要
using UnityEditor; using UnityEngine; [InitializeOnLoad] internal static class Example { static Example() { ObjectFactory.componentWasAdded += OnComponentWasAdded; } private static void OnComponentWasAdded( Component component ) { // 条件を満たしていない場合 if ( ... ) { // Add Component しようとしたコンポーネントを削除する // 1 フレーム遅らせないと下記のエラーが発生する // Assertion failed on expression: 'm_InstanceID != InstanceID_None' EditorApplication.delayCall += () => Object.DestroyImmediate( component ); } } }
- 例えば自作のコンポーネントを意図しないゲームオブジェクトに
アタッチできないようにすることができる