【一】
大家来看看如下代码:
private Transform myTransform;
void Awake() {
myTransform = transform;
}
看起来稀松平常,波澜不惊,但是下面水还是蛮深的。
使用myTransform替代this.transform。如果你不知道u3d内部实现获取方式你肯定会以为这人脑抽水了,有直接的不用,还自己保存起来。
this.transform并不是变量,而是一个get/set属(property)
他是一个C++写的代码,在Mono中被调用。调用是intenal method的调用,其效率本身不是高。
比如,transform 经常需要保存在本地,然后在使用。
namespace UnityEngine
{
public class Component : Object
{
public extern Transform transform
{
[WrapperlessIcall]
[MethodImpl(MethodImplOptions.InternalCall)]
get;
}
}
}
值得注意的是这个调用方法略慢,因为你需要调用外部的CIL(aka interop),花费了额外的性能。
网友评论