运行时实例化预设 (Prefabs)
此刻您应当能够从根本层面上知道预设 (Prefabs) 的概念。它们是预界说游戏目标 (GameObjects) 和组件 (Components) 的调集,可在游戏中重复运用。假如您不知道预设 (Prefab),建议您阅览预设 (Prefabs) 页面,知道更多根本介绍。
在运行时想要实例化杂乱的游戏目标 (GameObjects),能够便利运用预设 (Prefabs)。实例化预设 (Prefabs) 的另一种挑选是运用代码从头开始创立游戏目标 (GameObjects)。比较代替办法,实例化预设 (Prefabs) 有多个优势:
能够运用一行代码实例化预设 (Prefab),并具有完好功用。运用代码创立等效游戏目标 (GameObjects),均匀需求五行代码,还有能够要更多。
可在场景 (Scene) 和检视器 (Inspector) 中轻松疾速设置、测验和修正预设 (Prefab)。
能够更改已实例化的预设 (Prefab),无需更改实例化预设的代码。一个简略的火箭能够更改成超级火箭,但无需更改代码。
通常状况
为阐明预设 (Prefabs) 的强壮,让咱们来看看可用得上预设的一些根本状况:
在不一样位置,多次运用单块“砖”预设 (Prefab) 创立一堵墙。
发射时,火箭发射器实例化一个飞翔的火箭预设 (Prefab)。预设 (Prefab) 包括一个网格 (Mesh)、刚体 (Rigidbody)、碰撞器 (Collider) 和带有自个的拖尾粒子体系 (Particle System) 的子游戏目标 (GameObject)。
机器人爆炸成许多碎片。完好的操作机器人已破坏,替换成一个残缺的机器人预设 (Prefab)。该预设 (Prefab) 包括分成多个有些的机器人,一切有些均设有自个的刚体 (Rigidbodies) 和粒子体系 (Particle Systems)。仅用一行代码,将一个目标替换成预设 (Prefab),该技能就可让您将机器人炸成许多碎片。
创立一堵墙
该示例阐明与运用代码创立目标比较,运用预设 (Prefab) 的优势。
首先,使用代码创建一堵砖墙:
要使用上方脚本,只需保存该脚本,然后将其拖到空游戏对象 (GameObject)。
通过游戏对象 (GameObject)->创建空游戏对象 (Create Empty) 创建一个空游戏对象。
进入播放模式 (Play Mode) 后,如果执行该代码,您将看到程序创建整堵砖墙。有两行与每块砖的功能相关:CreatePrimitive() 行和 AddComponent() 行。现在没有那么糟糕,只是每块砖没有纹理。想在砖上执行的每个附加操作,例如更改纹理、摩擦力或刚体质量,都是额外行。
如果创建预设 (Prefab) 并预先设置好&
此刻您应当能够从根本层面上知道预设 (Prefabs) 的概念。它们是预界说游戏目标 (GameObjects) 和组件 (Components) 的调集,可在游戏中重复运用。假如您不知道预设 (Prefab),建议您阅览预设 (Prefabs) 页面,知道更多根本介绍。
在运行时想要实例化杂乱的游戏目标 (GameObjects),能够便利运用预设 (Prefabs)。实例化预设 (Prefabs) 的另一种挑选是运用代码从头开始创立游戏目标 (GameObjects)。比较代替办法,实例化预设 (Prefabs) 有多个优势:
能够运用一行代码实例化预设 (Prefab),并具有完好功用。运用代码创立等效游戏目标 (GameObjects),均匀需求五行代码,还有能够要更多。
可在场景 (Scene) 和检视器 (Inspector) 中轻松疾速设置、测验和修正预设 (Prefab)。
能够更改已实例化的预设 (Prefab),无需更改实例化预设的代码。一个简略的火箭能够更改成超级火箭,但无需更改代码。
通常状况
为阐明预设 (Prefabs) 的强壮,让咱们来看看可用得上预设的一些根本状况:
在不一样位置,多次运用单块“砖”预设 (Prefab) 创立一堵墙。
发射时,火箭发射器实例化一个飞翔的火箭预设 (Prefab)。预设 (Prefab) 包括一个网格 (Mesh)、刚体 (Rigidbody)、碰撞器 (Collider) 和带有自个的拖尾粒子体系 (Particle System) 的子游戏目标 (GameObject)。
机器人爆炸成许多碎片。完好的操作机器人已破坏,替换成一个残缺的机器人预设 (Prefab)。该预设 (Prefab) 包括分成多个有些的机器人,一切有些均设有自个的刚体 (Rigidbodies) 和粒子体系 (Particle Systems)。仅用一行代码,将一个目标替换成预设 (Prefab),该技能就可让您将机器人炸成许多碎片。
创立一堵墙
该示例阐明与运用代码创立目标比较,运用预设 (Prefab) 的优势。
首先,使用代码创建一堵砖墙:
// JavaScript
function Start () {
for (var y = 0; y < 5; y++) {
for (var x = 0; x < 5; x++) {
var cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
cube.AddComponent(Rigidbody);
cube.transform.position = Vector3 (x, y, 0);
}
}
}
// C#
public class Instantiation :MonoBehaviour {
void Start() {
for (int y = 0; y < 5; y++) {
for (int x = 0; x < 5; x++) {
GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
cube.AddComponent<Rigidbody>();
cube.transform.position = new Vector3(x, y, 0);
}
}
}
}
要使用上方脚本,只需保存该脚本,然后将其拖到空游戏对象 (GameObject)。
通过游戏对象 (GameObject)->创建空游戏对象 (Create Empty) 创建一个空游戏对象。
进入播放模式 (Play Mode) 后,如果执行该代码,您将看到程序创建整堵砖墙。有两行与每块砖的功能相关:CreatePrimitive() 行和 AddComponent() 行。现在没有那么糟糕,只是每块砖没有纹理。想在砖上执行的每个附加操作,例如更改纹理、摩擦力或刚体质量,都是额外行。
如果创建预设 (Prefab) 并预先设置好&