LOFTER for ipad —— 让兴趣,更有趣

点击下载 关闭
Unity-GameObject
Zeiod 2022-03-05

GameObject:

    1.GameObject是什么?

    2.组件中的gameObject

    3.GameObject常用属性和方法


1.GameObject是什么

        GameObject就是游戏对象或者说游戏物体,层级面板中可以选择的都是GameObject。同时,GameObject在代码中也是一个类型(可以在VS选中后F12查看定义),这个类型就代表着游戏物体在C#中可以通过公开字段(变量),在Inspector面板中设置该字段的值。

Tip:如图所示,在Inspector面板,字段的名字会被识别改写。比如g0,小写英文会大写。BoxCollider不同单词会识别出用空格隔开。

设置字段值:

1)点字段后小圆圈,然后在出现的窗口中单机选一个。

2)按住Hierarchy中的对象名,拖到Inspector字段处。

2.组件中的gameObject

        组件中可以使用来自基类继承的gameObject属性,直接访问脚本所在的游戏物体。类似transform。

        gameObject:组件所在物体

        transform:组件所在游戏物体的transform组件

大写的GameObject是类型,小写的gameObject是属性。gameObject这个属性来自(<-表示继承于):当前脚本<-MonoBehaviour<-Behaviour<-Component

来自于Component这个基类。

print打印控制台消息可见gameObject是带所在脚本游戏物体本身。

Tip:可以gameObject.gameObject.gameObject.gameObject。transform.transform.transform不过没有意义

gameObject.transform等价于transform

这是因为GameObject类定义有GameObject类型的gameObject。

Transform类继承自Component类,Component类定义有Transform类型的tranform。

而字段可以调用自己类型/基类可以调用它定义的字段。


GameObject类中定义有Transform类型的字段transform,因此我们有了GameObject类型的字段就可以通过调用transfrom得到物体的Transform组件。

可以print(g0.transform.position);打印获取游戏对象的transform组件的position

Tip:输出postion结果只保留1位小数,四舍五入。


3.GameObject常用属性和方法

        属性

        1.name:游戏物体名称,和层级面板中等同

        2.tag:游戏物体的标签

        3.activeInHierarchy:显示状态

        4.transform:这个游戏物体的变换组件

        5.static GameObject Find(string path):一个静态方法,查找游戏物体(参数是路径,"C"代表从根目录找"C","C/D"代表在C下面找"D")

        方法

        1.GetComponent<T>():获取游戏物体身上的组件,T代表要查找的类型,类似的方法有很多

        2.SetActive(bool):修改显示状态,参数为false隐藏,true显示

        

使用:

1.name

当前物体名字不是奥利给会打印指定消息

2.tag

Inspector的Tag设置

选择Add Tag...可以添加Tag。进入添加标签的面板。点+添加Tag名,点-删除Tag

点+添加Tag名

写完名字Save即可

如果当前物体的Tag是 奥利给!就打印 干就完辣!

设置Tag

小结:可以用tag区别类型,比如小兵造成伤害,英雄造成伤害的不同。

3.activeInHierarchy

4.

gameObject.transform.position;是世界坐标

gameObject.transform.localPosition;是本地坐标

世界坐标不一定是Inspector面板上的坐标,面板上的坐标如果有父物体会是相对父物体坐标。

本地坐标会显示Inspector面板上的坐标。

5.Find(string path)   path:路径,这里是相对路径

tip:

问题:Unity3d_can't add the script component "" because the script class cannot be found

原因:文件名与文件内容中的类名不相符。

6.GetComponent<T>()   T是什么类型,返回什么类型

Console报错是因为GameObject不是一个组件,所以不能GetComponent<GameObject>()得到GameObject

编译器没有报错是因为GetComponent<GameObject>()会得到none

用GetComponent<BoxCollider>()来获取BoxCollider对象,然后输出字段

7.SetActive(bool)    设置是否显示

gameObject.SetActive(false)隐藏



推荐文章
评论(0)
分享到
转载我的主页