在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
a替换每个MyTransform
),因此甚至不值得尝试。至少不仅仅是为了更好的语法。
但是是吗?或者还有其他方法可以实现吗?