transform跟Gameobject联系跟却别是什么
继承关系:
Transform : Component : Object
GameObject : Object
实例关系:
transform和gameObject 都是Component类中定义的。
gameObject :public GameObject gameObject { get; }
transform: public Transform transform { get; }
想直接明了区别,直接跟踪Transform 和GameObject 类,它们区别还是挺大的。
这就是为什么transform可以调用gameObject----gameObject又可以调用transform
初学者很容易迷失,特别是面向对象基础没打牢的道友迷茫无疑。
而一个游戏物体 GameObject 必须有一个 Transform 组件,所以我想,GameObjec 与 Transform 在表面上是一个从属关系,后者是前者的组件,依附前者而存在!
但是在引用中又表示出一种平等的可替代关系!
上面只是我个人理解!不过就这种语法的设计而言,我认为从 Transform 引用游戏物体的现象不应该发生,我表示不理解!
2013-06-23
2019-12-17
初学者好难啊...已经沦陷在 transform跟Transform ,Gameobject 跟gameobject ,transform跟gameObject, transfrom 跟Gameobject,Transform 跟gameObject,Transform跟Gameobject这种复杂的关系中。
谁是类,谁是对象,谁是实例,谁是节点,谁又是谁,谁又是谁的谁,为什么有transform 又有Transform ?为什么不能换个单词? 为什么transfrom 的f不用大写,gameObject O要大写?C#不是一个大小写敏感的语言吗,为什么好像这里一点不敏感?对象是什么,为什么讲C#要穿插java知识。啊!
回过来一想, 给你举个例子吧,对象就是你老婆。
//修仙回来了,补充一下我的理解。。。
Transform 跟 GameObject 是两个类
它们分别对应的实例是 transform,跟 gameObject。
(至于为什么我会理解成transform是Transform的实例。
所有的节点都带有Transform组件,看到好多教程说是transform组件。unity 上面明明是大写的Transform啊。。。)
game object (注意空格小写) 可以理解成节点。game object就是构成场景树中照相机,光源,你创建的cube,这样的对象。
每个节点都可以挂载组件。但是会挂载一个默认的Transform组件。
每个组件都有一个gameObject 数据成员,这个gameObject 指向的是所挂载的节点。
每个组件还有一个transform数据成员,这个数据成员是指向这个默认的Transform组件!
特殊的是Transform也是组件,所以它也有这个gameObject 数据成员。通过它也可
得到这个Transform所挂载的节点。比如 this.transform.gameObject.name。
大概的例子是,
你创建了一个对象名叫老大,老大有个默认跟班 叫 Transform。
每个跟班都带两个对讲机,一个叫 gameObject,一个叫 transform。
对讲机gameObject 用来联系你这个老大,对讲机transform用来联系Transform.
该死的Transform,这个默认跟班也带了这两个对讲机。
不知道对不对。。。我尽力了。
2013-06-23