关于Unity的transform使用

【一】

大家来看看如下代码:

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),花费了额外的性能。

你可能感兴趣的:(关于Unity的transform使用)