Unity基础(7)-GameObject类
2018-01-27 本文已影响118人
元宇宙协会
01-Unity下的GameObject类
引擎下的GameObject菜单引擎下的GameObject菜单
02-Unity下的GameObjcet类属性
Name
对象名,可以重复,无限数量
Tag
对象的标签,在Tags&Layer面板中设置
当物体可能是空物体时,(游戏开发中,常用空物体去保存一些位置信息,空物体没有渲染,这时给物体添加一个图标,便于寻找与查看)
Layer
标记对象渲染组名字,常用于射线碰撞,摄像机裁剪,最多只能有32组
activeInHierarchy
判断对象在层级视图是否隐藏,隐藏为false,反之True
acticveSelf
只读属性,得到当前对象的状态(隐藏/启用)
isStatic
是否静态对象(静态对象表明只有一个)
transform
对象的位置,旋转,大小信息
scene
场景,获得当前对象的场景相关的信息
03-Unity下的GameObjcet类属性使用
// 打印当前游戏对象的名字
print(Cube.name);
// 表示当前游戏对象是否隐藏
print(Cube.activeInHierarchy);
// 表示当前游戏对象的状态
print(Cube.activeSelf);
// 设置对象不隐藏
Cube.active = false;
// 设置当前游戏对象为静态对象
Cube.isStatic = true;
// 打印游戏对象所在的层
print(Cube.layer);
// 获取层的索引
print(Convert.ToInt32(Layer.water));
//打印Tag值
print(Cube.tag);
// 获得当前场景
Scene s = Cube.scene;
// 打印当前场景的名字
print(s.name);
// 设置游戏对象是否需要特殊设置
print(Cube.hideFlags);
//// 设置当前游戏对象不保存该对象移动后的信息
Cube.hideFlags = HideFlags.DontSave;
04-Unity下的GameObjcet类方法
官方文档SetActive 调用此方法,传入bool参数(true/false)可以使当前物体显示或者隐藏
AddComponent 为游戏对象添加组件,脚本
CompareTag 调用此方法,传入字符串参数(“TagName”)当前游戏对象的tag值是否为参数TagName,名字一样返回True,反之False。
GetComponent 获取游戏对象的组件,脚本
GetComponentInChildren 返回此游戏对象或者它的所有子对象上(深度优先)的类型为type的组件。
GetComponentInParent 从父对象查找组件。
GetComponents 返回该游戏对象所有type类型的组件列表。
GetComponentsInChildren *返回此游戏对象与其子对象所有type类型的组件。*
GetComponentsInParent 返回此游戏对象与其父对象所有type类型的组件。
BroadcastMessage 对此游戏对象及其子对象的所有MonoBehaviour中调用名称为methodName的方法。
SendMessage 在这个游戏物体上的所有MonoBehaviour上调用名称为methodName的方法。
SendMessageUpwards 在这个游戏物体及其祖先物体的所有MonoBehaviour中调用名称为methodName的方法。
静态方法
静态方法05-Unity下的GameObjcet类中的方法使用
- 静态方法
// 创建游戏对象
GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
// 动态创建实例化游戏对象(针对预制物,资源包内模型等)
GameObject sp = GameObject.Instantiate(Sp, Vector3.zero, new Quaternion(0,0,0,1));
// 设置游戏对象的位置,不设置默认是原点位置
//cube.transform.position = new Vector3(0, 1, 1);
// 根据名字查找游戏对象
GameObject sp = GameObject.Find("Sphere");
sp.transform.position = new Vector3(0, 0, 0);
// 通过Tag,找到Tag值为“Player”的物体
GameObject obj = GameObject.FindGameObjectWithTag("Player");
//Debug.Log(obj.name);
// 通过Tag,找到Tag值为“Player”的所有物体
GameObject[] objs = GameObject.FindGameObjectsWithTag("Player");
for (int i = 0; i < objs.Length; i++)
/{
Debug.Log(objs[i].name);
if (objs[i].name == "CCCC")
{
ccc = objs[i];
ccc.transform.position = new Vector3(0, 0, 0);
ccc.tag = "Playwes";
}
}
// 查找某种类型,返回Object对象
// 注意:要查找具化的游戏对象
System.Object o1 = GameObject.FindObjectOfType(typeof(People));
Debug.Log(o1);
System.Object[] os = GameObject.FindObjectsOfType(typeof(GameObj));
for (int i = 0; i < os.Length; i++)
{
Debug.Log(os[i].ToString());
}
// 删除游戏对象
GameObject.Destroy(Cube,5);
GameObject.DestroyObject(Cube, 5);
// 不要在加载的时候删除后面的游戏对象
DontDestroyOnLoad(Cube);
GameObject.DestroyImmediate(Cube);
- 公开方法
// 设置隐藏对象
//Cube.SetActive(true);
// 判断当前对象的Tag是否为“Player”
bool b = Cube.CompareTag("Player");
// 给游戏对象添加组件
Cube.AddComponent<BoxCollider>();
// 给游戏对象添加一个People脚本
Cube.AddComponent(typeof(People));
// 获取游戏对象身上的People脚本
Cube.GetComponent(typeof(People));