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);
        }
    }
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: GameObjectUnity最基本的对象,它代表了场景的一个实体,可以包含各种组件,如Transform、Mesh Renderer、Collider等。GameObject可以通过代码或编辑器创建、修改和销毁。 Transform是GameObject的一个组件,它包含了游戏对象的位置、旋转和缩放信息。通过Transform组件,我们可以在游戏运行时动态地修改游戏对象的位置、旋转和缩放等属性,实现游戏的移动、旋转和缩放效果。 ### 回答2: UnityGameObject和Transform是两个非常重要的概念,它们是构建游戏场景的基本组成部分。 首先,GameObject是游戏的基本对象,所有游戏的元素都是以GameObject的形式存在的。它是一个空的容器,可以添加各种组件以实现不同的功能。例如,一个GameObject可以是玩家,可以添加控制器组件、动画组件、碰撞器组件、声音组件等,以实现玩家的移动、攻击、物理碰撞和音效等功能。 在GameObject的基础上,Transform是一个用于控制GameObject位置、旋转和缩放的组件。每个GameObject都有一个Transform组件,它定义了GameObject在场景的位置、方向和大小。使用Transform可以让我们改变GameObject的位置、旋转和缩放,实现游戏的各种动态效果。 除此之外,Transform还可以作为父子关系的重要手段。当一个GameObject作为另一个GameObject的子物体时,它的Transform组件可以实现相对于父GameObject的位置、旋转和缩放。这种父子关系可以使我们在游戏场景更加方便地管理各种元素,以及实现游戏的各种逻辑和效果。 总的来说,GameObject和Transform是Unity非常重要和基础的概念,掌握它们的使用方法和相关技巧,可以让我们更加高效和精确地构建游戏场景,实现更加丰富的游戏体验。 ### 回答3: UnityGameObject和Transform是游戏对象的两个重要组成部分。GameObjectUnity最基本和最重要的对象,是所有场景任何物体的父类。Transform则是GameObject的一个组件,它控制GameObject在空间的位置、旋转和缩放。 GameObject表示场景的实体,包括人物、怪物、场景等等。每个GameObject都有一个名称和一个唯一的标识符,可以在代码通过标识符或名称来访问和操作GameObject。除此之外,GameObject还可以包含其他组件,例如脚本、碰撞器、渲染器等等。 Transform组件则是控制GameObject在三维空间的位置、旋转和缩放的重要组件。它包含了三个重要属性:Position、Rotation和Scale,分别控制对象的位置、旋转和缩放。在代码,我们可以通过Transform组件的属性来访问和控制当前GameObject的位置、旋转和缩放等属性。 UnityGameObject和Transform在游戏开发非常重要。在创建游戏场景和实体时,我们需要创建和处理GameObject对象,并通过Transform组件来控制它们在场景的位置和状态。在编写游戏逻辑代码时,我们需要通过GameObject对象和Transform组件来访问和操作游戏实体。因此,了解和掌握GameObject和Transform是游戏开发必不可少的技能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值