【一】
大家來(lái)看看如下代碼:
private Transform myTransform;
void Awake() {
myTransform = transform;
}
看起來(lái)稀松平常繁堡,波瀾不驚,但是下面水還是蠻深的乡数。
使用myTransform替代this.transform椭蹄。如果你不知道u3d內(nèi)部實(shí)現(xiàn)獲取方式你肯定會(huì)以為這人腦抽水了,有直接的不用净赴,還自己保存起來(lái)绳矩。
this.transform并不是變量,而是一個(gè)get/set屬(property)
他是一個(gè)C++寫的代碼玖翅,在Mono中被調(diào)用翼馆。調(diào)用是intenal method的調(diào)用,其效率本身不是高金度。
比如应媚,transform 經(jīng)常需要保存在本地,然后在使用猜极。
namespace UnityEngine
{
public class Component : Object
{
public extern Transform transform
{
[WrapperlessIcall]
[MethodImpl(MethodImplOptions.InternalCall)]
get;
}
}
}
值得注意的是這個(gè)調(diào)用方法略慢中姜,因?yàn)槟阈枰{(diào)用外部的CIL(aka interop),花費(fèi)了額外的性能跟伏。