【发布时间】:2016-10-20 10:06:03
【问题描述】:
在Unity中,假设你有class Explosion:MonoBehavior,使用GetComponent你可以很简单
List<Transform> result = new List<Transform>();
foreach (Transform t in here)
{
if ( t.GetComponent<Explosion>() )
result.Add( t );
}
该列表现在包含任何具有“爆炸”组件的直接活动或非活动子项。
我想做一个扩展,这样做,沿着线
List<Explosion> = transform.Tricky(typeof(Explosion));
所以,扩展看起来像...
public static List<Transform> Tricky(this Transform here, Type ttt)
{
List<Transform> result = new List<Transform>();
foreach (Transform t in here)
{
if ( t.GetComponent<ttt>() )
result.Add( t );
}
return result;
}
但是我完全没有弄清楚这一点。怎么做?
注意!
我确实知道如何使用泛型来做到这一点:
public static List<T> MoreTricky<T>(this Transform here)
{
List<T> result = new List<T>();
foreach (Transform t in here)
{
T item = t.GetComponent<T>(); if (item != null) result.Add(item);
}
return result;
}
(所以,List<Dog> d = t.MoreTricky<Dog>();)令人难以置信的是,我太跛脚了,我不知道如何“正常”地做到这一点,传递类型。
【问题讨论】:
标签: c# types extension-methods