Cawas的GetOrAddComponent扩展方法(http://wiki.unity3d.com/index.php/GetOrAddComponent)对我帮助很大(特别是如何创建泛型方法并向我介绍扩展方法),但我很好奇它如何更有效率比我的:
public static T GetOrAddComponent<T>(this GameObject obj) where T:Component
{
if(obj.GetComponent<T>() == null)
{
return obj.AddComponent<T>();
}
else
{
return obj.GetComponent<T>();
}
}
在我的例子中,一个变量没有被创建并存储在内存中,所以这不会使我的效率更高吗?还是有什么我错过的? (这很可能,我只是一个初学者:P)
答案 0 :(得分:1)
链接的方法调用GetComponent
;您在此处粘贴的代码会进行两次此类调用。这是一个足够大的差异,它可能会在重负荷下出现。
根据编译器的不同,比较一个局部变量的可能性与可比的匿名值不同,或者完全不同。最后,它们都在堆栈中处理。