一、GameObject是unity的基本对象
二、创建游戏物体的三种方法
- 创建一个空对象
new GameObject("gameObject name");
- 通过其他物体(场景对象、预制体)复制对象。
// 四个参数分别为:源对象,位置坐标,旋转坐标,父对象。
GameObject.Instantiate<GameObject>(GameObject, Vector3, Quaternion, GameObject);
- 创建一个系统内置对象预制体。
// 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 | 没有接受者时是否报错 |