unity3d Transform和 GameObject 区别

分类栏目:unity3d教程

109

在Unity中,TransformGameObject 是两个关键的概念,它们用于表示场景中的物体及其变换信息。以下是它们的主要区别:

  1. GameObject(游戏对象):

    • GameObject 是场景中的基本实体,可以包含各种组件,例如渲染器、碰撞器、脚本等。
    • 它是一个可以在场景中实例化和操控的对象,可以是玩家、敌人、道具等等。
    • GameObject 本身并不包含有关位置、旋转和缩放等变换信息,这些信息存储在与之相关联的 Transform 组件中。
  2. Transform(变换组件):

    • TransformGameObject 的一个组件,用于存储和管理位置、旋转和缩放信息。
    • 一个 GameObject 必须至少有一个 Transform 组件,用于确定其在场景中的位置和方向。
    • 通过修改 Transform 组件的属性,如 positionrotationscale,可以改变 GameObject 的外观和行为。

示例代码,演示了如何通过 Transform 组件来改变 GameObject 的位置:


using UnityEngine;

public class ExampleScript : MonoBehaviour
{
    // 获取当前 GameObject 的 Transform 组件
    private Transform myTransform;

    void Start()
    {
        // 获取 Transform 组件的引用
        myTransform = GetComponent<Transform>();
        
        // 移动 GameObject 到新的位置
        myTransform.position = new Vector3(0f, 2f, 0f);
        
        // 旋转 GameObject
        myTransform.rotation = Quaternion.Euler(0f, 45f, 0f);
        
        // 缩放 GameObject
        myTransform.localScale = new Vector3(2f, 2f, 2f);
    }
}
总体来说,GameObject 是场景中的实体,而 Transform 则是决定实体在场景中位置、旋转和缩放的组件。在大多数情况下,您将与 Transform 交互,以控制和操作场景中的物体。