推荐视频讲师博客:http://11165165.blog.51cto.com/
预设体
预设体能够使游戏对象和资源重复使用
相同的游戏对象可以使用同一个预设体来创建
对预设体进行修改后,所有游戏对象都会相应改变
把预设体作为的一个模板原型,在使用的过程中,我们可以把预设体拖至场景中来创建一个新的游戏对象,能够让我们的游戏对象和资源能重复利用,并且对于预设体进行修改,可以对当前所以的游戏对象发生一样的修改。
接下来我们在Unity中来演示一下
1、预设体的创建——创建一个Cube——创建一个材质球——然后把Cube的演示改成红色——然后把Cube重命名Player——把Player拖拽到Project中(在此过程中鼠标会有变化)——在Project中就会出现一个Player.prefab(prefab就是预设体的意思)
预设体:可以快速方便的创建类似的对象,我们可以通过修改预设体来修改对象
2、使用脚本动态创建预设体对象——创建一个空对象命名为:GameController——在空对象上挂载一个Test的脚本——打开脚本,我们利用脚本创建预设体。
场景:当我们杀死5个骷髅怪之后,使用预设体创建新的骷髅怪!
using UnityEngine;
using System.Collections;
public class Test : MonoBehaviour {
public GameObject playerPrefab;
void Start () {
}
void Update () {
if(Input.GetKeyDown(KeyCode.P)){
//每当按下P键就会在场景中创建出一个Player游戏对象
}
}
}
using UnityEngine;
using System.Collections;
public class Test : MonoBehaviour {
public GameObject playerPrefab;
void Start () {
}
void Update () {
if(Input.GetKeyDown(KeyCode.P)){
//每当按下P键就会在场景中创建出一个Player游戏对象
//用预设体创建游戏对象
//Instantiate(playerPrefab);
//用预设体创建随机位置的游戏对象
Vector3 pos = new Vector3 ();
pos.y = 0.5f;
//使用Random.Range()方法来产生随机数
pos.x = Random.Range(-5f,5f);
pos.z = Random.Range (-5f,5f);
//Quaternion.identity 旋转值为0,Quaternion.AngleAxis()旋转不同角度
////随机角度
float angle=Random.Range(0,360);
//Quaternion.AngleAxis()——3个参数
//1——使用哪个预设体创建游戏对象
//2——创建出的游戏对象的初始位置
//3——创建出的游戏对象初始旋转角度
Instantiate (playerPrefab, pos, Quaternion.AngleAxis (angle, Vector3.up));
}
}
}
using UnityEngine;
using System.Collections;
public class Test : MonoBehaviour {
public GameObject playerPrefab;
void Start () {
}
void Update () {
if(Input.GetKeyDown(KeyCode.P)){
//每当按下P键就会在场景中创建出一个Player游戏对象
//用预设体创建游戏对象
//Instantiate(playerPrefab);
//用预设体创建随机位置的游戏对象
Vector3 pos = new Vector3 ();
pos.y = 0.5f;
//使用Random.Range()方法来产生随机数
pos.x = Random.Range(-5f,5f);
pos.z = Random.Range (-5f,5f);
//Quaternion.identity 旋转值为0,Quaternion.AngleAxis()旋转不同角度
////随机角度
float angle=Random.Range(0,360);
//Quaternion.AngleAxis()——3个参数
//1——使用哪个预设体创建游戏对象
//2——创建出的游戏对象的初始位置
//3——创建出的游戏对象初始旋转角度
GameObject p= Instantiate (playerPrefab, pos, Quaternion.AngleAxis (angle, Vector3.up)) as GameObject;
//获取组件
// p.GetComponent<> ();
//添加组件
p.AddComponent<CubeController>();
}
}
}