Bad*_*Cat 1 c# generics unity-game-engine
我想编写一个 util 方法来获取给定游戏对象上的组件。它看起来像这样......
public static MonoBehaviour FindAndAssignComponent<T>(string name)
{
GameObject g = GameObject.Find(name);
if (g != null) return g.GetComponent<T>();
return null;
}
Run Code Online (Sandbox Code Playgroud)
问题出在GetComponent!我如何使用泛型T来理解它?<typeof(T)>不起作用,也不行GetComponent(T)或GetComponent(typeof(T))。
使用该where条款,并将您的回报固定为Component
public static Component FindAndAssignComponent<T>(string name) where T : Component
{
GameObject g = GameObject.Find(name);
if (g != null) return g.GetComponent<T>();
return null;
}
Run Code Online (Sandbox Code Playgroud)
此外,您的方法的名称有点误导......您并没有真正分配组件,您只是检索已经存在的组件。也许你打算这样做:
public static void FindAndAssignComponent<T>(string name) where T : Component
{
GameObject g = GameObject.Find(name);
if (g == null)
throw new ObjectNotFoundException(String.Format("GameObject '{0}' not found in hierarchy!", name));
g.AddComponent<T>();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2797 次 |
| 最近记录: |