Unityで指定したコンポーネントの種類をGameObjectからすべて削除する関数を作りたいです。
ジェネリックというものを使用してできそうなのですが、エラーがでて上手く動きませんでした。
ジェネリックを使用しないと動作するのですが、コンポーネントごとに適用できるようにしたいです。
こういった関数を書いたことがないため、どのようにすればよいかアドバイス頂けないでしょうか。
エラー内容
ArgumentException: GetComponent requires that the requested component 'Type' derives from MonoBehaviour or Component or is an interface.
UnityEngine.GameObject.GetComponents[T] ()
gameObject
-- Sample.cs
-- Sample.cs
-- Sample.cs
C#
1 // 引数に設定したobjからpramで設定したコンポーネントを削除したい 2 public void RemoveAllComponents<T> (GameObject obj, T param) { 3 4 //object[] array = obj.GetComponents<param>(); 5 T[] array = obj.GetComponents<T>(); 6 foreach (var val in array) { 7 Destroy(val as UnityEngine.Object); 8 } 9 } 10 11 RemoveAllComponents(gameObject, typeof(Sample));
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/04 08:27