您现在的位置是:首页 >其他 >Unity中GameObject的使用网站首页其他
Unity中GameObject的使用
简介Unity中GameObject的使用
GameObject游戏物体
1.创建方式
(1).使用构造函数(声明+实例化) 创建一个空的游戏对象
void Start()
{
GameObject myGo = new GameObject("MyGameObject");
//运行unity后会在Hierarchy窗口创建一个"MyGameObject"游戏对象
}
(2).根据现有的预制体(游戏物体)资源或者游戏场景已有的游戏物体来实例化,相当于克隆(clone)
操作提示:需要在Hierarchy窗口创建一个GameObject并拖拽对象到脚本。
public class No3_GameObject : MonoBehaviour
{
public GameObject gb;
void Start()
{
GameObject.Instantiate(gb);
//运行unity后会在Hierarchy窗口创建一个游戏对象(clone)
}
}
(3).使用特别的API创建一些基本的游戏物体类型(原始几何体)
void Start()
{
GameObject.CreatePrimitive(PrimitiveType.Plane);
//运行unity后会在Hierarchy窗口创建一个Plane物体
}
2.游戏物体的获取和查找
(1)对自己(this.gameObject)
void Start()
{
Debug.Log("当前脚本挂载到的游戏物体名称是:" + gameObject.name);
//运行unity后会在控制台输出当前脚本所挂载的游戏对象名称
Debug.Log("当前游戏物体标签是:"+gameObject.tag);
//运行unity后会在控制台输出当前脚本所挂载的游戏物体标签
Debug.Log("当前游戏物体层级是:"+gameObject.layer);
//运行unity后会在控制台输出当前脚本所挂载的游戏物体层级
}
(2)有引用,对其他游戏物体(有对象被脚本引用)
public class No3_GameObject : MonoBehaviour
{
public GameObject gb;
void Start()
{
//有引用,对其他游戏物体
Debug.Log("gris游戏物体的状态是:" + gb.activeSelf);
//运行unity后会在控制台输出gb游戏物体的状态
}
}
(3)未直接引用,对其他游戏物体
注意!对其他游戏物体查找(这时游戏物体必须是激活状态)
a.通过名称查找
void Start()
{
GameObject mainCameraGo= GameObject.Find("Main Camera");
Debug.Log("mainCamera游戏物体的标签是:" + mainCameraGo.tag);
//运行unity后会在控制台输出MainCamera物体的标签
}
b.通过标签查找
void Start()
{
GameObject mainCameraGo = GameObject.FindGameObjectWithTag("MainCamera");
Debug.Log("mainCamera游戏物体的名字是:" + mainCameraGo.name);
//运行unity后会在控制台输出MainCamera物体的名称
}
c.通过类型查找
类型指的是当前组件的名称,在这里是类名,通过类名查找
注意:这里需要创建一个脚本类,这里创建的是no2_EventFunction类
void Start()
{
No2_EventFunction no2_EventFunction= GameObject.FindObjectOfType<No2_EventFunction>();
Debug.Log("no2_EventFunction游戏物体的名字是:" + no2_EventFunction.name);
}
d.多数查找与获取
注意:
第一段:这里需要创建一个标签,并在创建好的游戏对象中设置标签,这里创建的是Enemy标签。
第二段:需要选中几个游戏对象添加BoxCollider组件
void Start()
{
//将查找到的标签为Enemy的游戏对象放入enemyGos数组
GameObject[] enemyGos= GameObject.FindGameObjectsWithTag("Enemy");
for (int i = 0; i < enemyGos.Length; i++)
{
//遍历查找到的游戏物体名称并输出
Debug.Log("查找到的敌人游戏物体名称是:"+enemyGos[i].name);
}
Debug.Log("--------------------------------------------------");
//将查找到的类型为BoxCollider的游戏组件放入colliders数组
BoxCollider[] colliders= GameObject.FindObjectsOfType<BoxCollider>();
for (int i = 0; i < colliders.Length; i++)
{
Debug.Log("查找到的敌人碰撞器名称是:" + colliders[i].name);
}
}
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。