Unity csharpでは、それぞれをGetOrAddComponent
簡素化するメソッドを作成したいと思います(正当な理由はないと思います)。GetComponent
AddComponent
通常の方法は次のとおりです。
// this is just for illustrating a context
using UnityEngine;
class whatever : MonoBehavior {
public Transform child;
void whateverMethod () {
BoxCollider boxCollider = child.GetComponent<BoxCollider>();
if (boxCollider == null) {
boxCollider = child.gameObject.AddComponent<BoxCollider>();
}
}}
今、私はこのクラスを作ることができました。. . :
public class MyMonoBehaviour : MonoBehaviour {
static public Component GetOrAddComponent (Transform child, System.Type type) {
Component result = child.GetComponent(type);
if (result == null) {
result = child.gameObject.AddComponent(type);
}
return result;
}
}
. . . したがって、これは機能します:
// class whatever : MyMonoBehavior {
BoxCollider boxCollider = GetOrAddComponent(child, typeof(BoxCollider)) as BoxCollider;
しかし、次のように書きたいと思います。
BoxCollider boxCollider = child.GetOrAddComponent<BoxCollider>();
私が思いつくことができる唯一のアイデアは、それを行うには複雑すぎるため(それぞれTransform
を に置き換えるMyTransform
)、試してみる価値さえありません。少なくとも、より良い構文のためだけではありません。
しかし、そうですか?または、これを達成できる他の方法はありますか?