transform,RectTransform,gameObject 知识点总结

继承了monobehavior的类,里面的属性transform到底是什么?
1. MonoBehaviour.transform 是什么?
自动关联:当脚本附加到 GameObject 上时,Unity 会自动为 transform 属性赋值,指向该 GameObject 的 Transform 组件。

便捷访问:这是 Unity 提供的语法糖,相当于在脚本内部自动调用了 GetComponent()。

只读引用:你不需要手动获取或初始化它,Unity 会在运行时自动处理。

2.transform 和 RectTransform
而RectTransform 继承自transform ,是需要手动获取的。只有UI物体才有这个组件。

在 UI 对象上,transform 和 GetComponent() 指向同一个对象

但只有 RectTransform 能访问 UI 特有属性
锚点系统(Anchors)
轴心点(Pivot)
尺寸控制(SizeDelta)
基于父容器的布局

每个物体都有transform组件,但是对于UI节点,它被继承为了RectTransform。

3.transform 和 gameObject
gameObject 是指代对象本身,包含了所有它上面的组件,内存占用较大
transform 是指代对象上的transform组件,用来做一些位置上的变化
同时他们两个可以互相得到对方
`// 从 transform 获取所属对象
GameObject obj = transform.gameObject;

// 从 gameObject 获取变换组件
Transform trans = gameObject.transform;
`

  1. gameObject 属性
    是什么:当前脚本所附加的游戏对象实例
    访问方式:this.gameObject 或直接 gameObject
    主要功能:
    管理游戏对象的生命周期:Destroy(gameObject)
    控制激活状态:gameObject.SetActive(false)
    访问其他组件:gameObject.GetComponent()
    获取对象信息:gameObject.name, gameObject.tag, gameObject.layer

  2. transform 属性
    是什么:当前游戏对象的变换组件
    访问方式:this.transform 或直接 transform
    主要功能:
    空间变换:transform.position, transform.rotation, transform.localScale
    层级关系:transform.parent, transform.childCount, transform.GetChild(0)
    UI 特有功能 (如果是 RectTransform):anchoredPosition, sizeDelta 等

posted @ 2025-06-25 11:05  木土无心  阅读(93)  评论(0)    收藏  举报