一、GameObject是unity的基本对象
二、创建游戏物体的三种方法
  1. 创建一个空对象
new GameObject("gameObject name");
  1. 通过其他物体(场景对象、预制体)复制对象。
// 四个参数分别为:源对象,位置坐标,旋转坐标,父对象。
GameObject.Instantiate<GameObject>(GameObject, Vector3, Quaternion, GameObject);
  1. 创建一个系统内置对象预制体。
// PrimitiveType内包含系统内置的一些游戏对象
GameObject.CreatePrimitive(PrimitiveType);
三、从本地加载资源的方法
// 获取的资源文件必须在Assets下的Resources中,
// 入参string为路径,写路径只需要写Resources下的子路径。
Resources.Load(path);
四、游戏组件

使用AddComponent为对象添加组件

GameObject obj = new GameObject();
// 这里添加一个刚体组件
obj.AddComponent<Rigidbody2D>();

使用Destroy为对象移除组件

Destroy(GetComponent<Rigidbody2D>());

获取组件的几种方法
注:组件有方法enabled,可以控制组件是否启用

方法

描述

GetComponent<CS>();

获取当前对象的对应组件

GetComponentInChildren<CS>();

获取当前对象及子对象中第一个对应组件

GetComponentInParent<CS>();

获取当前对象及父对象中第一个对应组件

GetComponents<CS>();

获取当前对象的所有对应组件

GetComponentsInChildren<CS>();

获取当前对象及子对象中所有对应组件

GetComponentsInParent<CS>();

获取当前对象及父对象中所有对应组件

五、GameObject的成员变量

成员变量

说明

activeInHierarchy

游戏对象在场景中是否处于激活状态。(只读)

自身和父物体都要处于激活状态

activeSelf

游戏对象自身在场景中是否处于激活状态。(只读)

仅仅自身是否处于激活状态

isStatic

游戏对象是否是静态的

layer

游戏对象在第几图层

scene

游戏对象所属场景(只读)

tag

游戏对象的标签

如要设置,只能设置已经预定义的标签

transform

游戏对象的位置组件

name

游戏对象的名字

六、禁用和启用一个游戏物体

使用SetActive来启用或禁用游戏物体

GameObject obj = new GameObject();
// 禁用新生成的游戏物体
obj.SetActive(false);
七、GameObject的静态成员

静态成员

说明

Destroy(GameObject, float);

在若干秒后消除一个对象

DestroyImmediate(GameObject);

立即消除一个对象,(不建议使用)

DontDestroyOnLoad(GameObject);

允许一个对象留存到下一个场景

FindObjectOfType<CS>();

查找第一个拥有该组件的对象

不查找未激活的对象

FindObjectsOfType<CS>();

查找所有拥有该组件的对象

不查找未激活的对象

GameObject.Find(string);

查找与入参相同名字的一个物体

GameObject.FindGameObjectsWithTag(string);

查找与入参相同标签的所有物体

GameObject.FindGameObjectWithTag(string);

查找与入参相同标签的一个物体

八、游戏物体间消息的发送和接收

方法

描述

SendMessage()

只发送给自身的所有组件

SendMessageUpwards()

发送给自身和所有父组件

BroadcastMessage()

发送给自身的所有子组件

参数

参数

描述

string

目标函数名

object

入参(多个参数用数组入参以及接收)

SendMessageOptions

没有接受者时是否报错