📜  Unity GameObjects

📅  最后修改于: 2021-01-11 13:30:40             🧑  作者: Mango

Unity游戏对象

GameObject是Unity编辑器中最重要的东西。游戏中的每个对象都是一个GameObject。这意味着您认为所有包含在您的游戏中的东西都必须是GameObject。但是,GameObject不能自己做任何事情;您必须先赋予它属性,才能使其成为字符,环境或特殊效果。

GameObject是一个容器;我们必须向GameObject容器中添加片段,以使其变成字符,树,灯光,声音或您想要的其他任何形式。每一块称为一个组件。

根据您要创建的对象类型,将不同的组件组合添加到GameObject。您可以将GameObject与一个空锅和具有不同成分的组成部分进行比较,以构成您的游戏玩法。 Unity具有许多不同的内置组件类型,您还可以使用Unity Scripting API制作自己的组件。

要记住的三个要点:

  • 游戏对象可以包含其他游戏对象。此行为允许组织和关联彼此的GameObjects。更重要的是,对父级GameObjects的更改可能会影响其子级?稍后,将对此进行更多介绍。
  • 将模型转换为GameObjects。 Unity为模型的各个部分创建GameObject,您可以像其他任何GameObject一样对其进行更改。
  • 层次结构中包含的所有内容都是一个GameObject。甚至诸如灯光和照相机之类的东西都是GameObjects。如果它在层次结构中,则它是一个受您命令约束的GameObject。

创建和销毁游戏对象

有些游戏可以处理场景中的许多对象,但是我们也可以在玩游戏时创建和删除宝藏,字符和其他对象。

在Unity中,我们可以使用Instantiate函数创建一个GameObject,该函数将创建一个现有对象的新副本:

public GameObject enemy;

void Start() {
    for (int i = 0; i < 6; i++) {
        Instantiate(enemy);
    }
}

Unity还可以提供销毁功能,该销毁函数用于在帧更新完成后或经过短暂的延迟后销毁对象:

void OnCollisionEnter(Collision otherObj) {
    if (otherObj.gameObject.tag == "Missile") {
        Destroy(gameObject,.5f);
    }
}

请注意,销毁函数还用于销毁单个组件,而不会影响GameObject本身。一个常见的错误是编写如下内容:

Destroy(this);