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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 我们来详谈Unity的transform使用,这里所说的tansform不是类UnityEngine命名空间下的T...
    LunarShade阅读 10,020评论 0 0
  • 一:什么是协同程序?答:在主线程运行时同时开启另一段逻辑处理,来协助当前程序的执行。换句话说,开启协程就是开启一个...
    CrixalisAs阅读 6,362评论 1 7
  • 第一部分 1.请简述值类型与引用类型的区别答:区别: 1.值类型存储在内存栈中,引用类型数据存储在内存堆中,而内存...
    为什么你不觉得幸福啊阅读 3,938评论 0 1
  • 雨后山多翠, 蓝天云更白。 欲投青山中, 永做一青松。
    北塔雪松阅读 2,435评论 16 59
  • 原因:系统字体大小调整造成的显示问题
    CharlesCheng阅读 3,106评论 0 0

友情链接更多精彩内容