目录
一、前言
应该只有刚开始学习的人才会在乎这个问题,在最开始学习的时候,我总是不知道该用哪一个,甚至我觉得,为什么要分成两个,一个就够了。
以下内容用到了上面链接中的表达方式,如果下面有看不懂的地方,可以去找找看。
unity | 核心类图讲解_菌菌巧乐兹的博客-CSDN博客
二、gameobject(物体的灵魂)
或者说,他是物体本身。
当我们在unity里面建立物体的时候就会直接存在,如果用哲学的词汇来描述,更像物质,只要出现了,就存在,下图都是物体。(如图1所示)
从代码的角度来看:我们有一些可以实现的方法,它可以执行的部分功能如下:
gameObject.name //你的名字
gameObject.activeSelf //活着还是死了(激活or未激活)
gameObject.layer //生活在哪(所在层级)
gameObject.tag //它的标签
上述方法没有写完整,但如果你把它比作成人,可以看出,这都是和自己本身有关系的,也像你刚开始玩一个游戏的时候,需要决定的事情:名字,身份,标签。。。等等
我们再看看其他可以执行的常用的方法:
gameObject.SetActive //设定它是否活着
gameObject.GetComponents //去拿个组件
gameObject.GetComponentInChildren //去拿个孩子的组件
gameObject.GetComponentInParen //去拿个爸爸的组件
方法还有很多,没有写完,但都是自己能决定的事情,不需要别人帮忙。
三、transform(物体的社会关系)
和gameobject一样,我们也从他可以从代码的角度去看,它常用的方法如下:
transform.position //它的地理位置
transform.rotation //它的角度
transform.parent //它的爸爸
transform.childCount //它孩子的数量
从这些方法你可以看出,这是在说社会关系,有点类似于家谱,或者家族,一定要把它放到社会上之后,才会存在位置,关系。
我们再看看其他可以执行的常用的方法:
transform.GetComponents //去拿个组件
transform.GetComponentInChildren //去拿个孩子的组件
transform.GetComponentInParen //去拿个爸爸的组件
transform.Rotate //旋转
transform.SetParent //设置它爸爸
transform.SetSiblingIndex //设置它是它家第几个孩子
依旧没有写完,我们可以和gameObject做一下对比,transform和gameObject有重合的地方。
例如:
transform.GetComponents //去拿个组件
因为有些事情并不是只有你才能做,你家人(transform)也能帮你(gameObject)干很多事情,但是也有很多不能做的,例:它们没办法决定你是否活着(gameObject.SetActive)。
反之,你自己(gameObject)可以做很多事情,但是不能决定,你家(transform)里有几个孩子,你有几个亲戚。
所以,从代码重合的角度上讲,他们各自有完全独立的方法,又有重合的方法。(如图2所示)
四、两者互相转换
transform.gameObject
gameObject.transform
这个也很好理解,我们可以通过你找到你周围的关系,也可以通过你周围的关系,找到你。
所以,在代码里,你可以通过转换来最终达成想要完成的事情。