GameObject意指游戏对象
下面这些都是游戏对象
1 GameObject标识
1.1 Name
对象名,可以重复,无限数量
//我们可以通过名字寻找对象
GameObject.Find(string name);//此方法每次都会遍历整个场景来寻找匹配的游戏物体,比较消耗资源
1.2 Tag
对象的标签,在Tags&Layer面板中设置
当物体可能是空物体时,(游戏开发中,常用空物体去保存一些位置信息,空物体没有渲染,这时给物体添加一个图标,便于寻找查看)
//我们可以通过Tag标签来寻找游戏对象
GameObject.FindGameObjectWithTag(string tag);//查找一个对象
GameObject.FindGameObjectsWithTag(string tag);//查找所有挂载此标签的对象,并返回一个GameObject数组
1.3 Layer
标记对象渲染组名字,常用于射线碰撞,摄像机裁剪,最多只能有32组
所在位置如下图
2 动态创建物体
方法1 利用GameObject.CreatePrimitive创建
此方法创建一个带有基本网络渲染器和相应碰撞器的游戏物体
方法2 利用GameObject.Instantiate创建
public GameObject obj1;
void Start () {
GameObject game1 = GameObject.Instantiate(obj1);
game1.name = "Player2";
game1.transform.position = new Vector3(2, 2, 0);
}
3 动态添加物体组件
//例子
//Sphere.AddComponent<Rigidbody>();//泛型
Sphere.AddComponent(typeof(Rigidbody));//非泛型
4 删除游戏对象
Destroy(Object obj);//立刻删除对象
Destroy(Object obj,float 1f);//延时删除
5 发送消息
(1)向上发送消息,向物体自身和父物体发送消息,如果消息没有被任何一个组件处理,则会打印一个错误。
方法为:SendMessageUpwards("父物体方法名");//例子如下图
(2)广播消息,对物体自身和所有子物体发送消息。如果消息没有被任何一个组件处理,则会打印一个错误。
方法为:BroadcastMessage("字物体方法名");//例子如下图
打印结果如下
(3)向同级发送消息,如果消息没有被任何一个组件处理,则会打印一个错误
方法为:Obj.SendMessage("同级物体方法名");//例子如下图
球的脚本
胶囊的脚本
在unity的操作
打印结果如下