一、GameObject是unity的基本对象
二、创建游戏物体的三种方法
- 创建一个空对象
new GameObject("gameObject name");
- 通过其他物体(场景对象、预制体)复制对象。
// 四个参数分别为:源对象,位置坐标,旋转坐标,父对象。
GameObject.Instantiate(GameObject, Vector3, Quaternion, GameObject);
- 创建一个系统内置对象预制体。
// PrimitiveType内包含系统内置的一些游戏对象
GameObject.CreatePrimitive(PrimitiveType);
三、从本地加载资源的方法
// 获取的资源文件必须在Assets下的Resources中,
// 入参string为路径,写路径只需要写Resources下的子路径。
Resources.Load(path);
四、游戏组件
使用AddComponent为对象添加组件
GameObject obj = new GameObject();
// 这里添加一个刚体组件
obj.AddComponent();
使用Destroy为对象移除组件
Destroy(GetComponent());
获取组件的几种方法
注:组件有方法enabled,可以控制组件是否启用
| 方法 | 描述 |
|---|---|
| GetComponent(); | 获取当前对象的对应组件 |
| GetComponentInChildren(); | 获取当前对象及子对象中第一个对应组件 |
| GetComponentInParent(); | 获取当前对象及父对象中第一个对应组件 |
| GetComponents(); | 获取当前对象的所有对应组件 |
| GetComponentsInChildren(); | 获取当前对象及子对象中所有对应组件 |
| GetComponentsInParent(); | 获取当前对象及父对象中所有对应组件 |
五、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(); | 查找第一个拥有该组件的对象 不查找未激活的对象 |
| FindObjectsOfType(); | 查找所有拥有该组件的对象 不查找未激活的对象 |
| GameObject.Find(string); | 查找与入参相同名字的一个物体 |
| GameObject.FindGameObjectsWithTag(string); | 查找与入参相同标签的所有物体 |
| GameObject.FindGameObjectWithTag(string); | 查找与入参相同标签的一个物体 |
八、游戏物体间消息的发送和接收
| 方法 | 描述 |
|---|---|
| SendMessage() | 只发送给自身的所有组件 |
| SendMessageUpwards() | 发送给自身和所有父组件 |
| BroadcastMessage() | 发送给自身的所有子组件 |
参数
| 参数 | 描述 |
|---|---|
| string methodName | 目标函数名 |
| object value | 入参(多个参数用数组入参以及接收) |
| SendMessageOptions options | 没有接受者时是否报错 |
