首页 > 代码库 > 【蓝鸥Unity开发基础三】课时12 预设体

【蓝鸥Unity开发基础三】课时12 预设体

【蓝鸥Unity开发基础三】课时12 预设体

推荐视频讲师博客:http://11165165.blog.51cto.com/

预设体

预设体能够使游戏对象和资源重复使用

相同的游戏对象可以使用同一个预设体来创建

对预设体进行修改后,所有游戏对象都会相应改变

技术分享


把预设体作为的一个模板原型,在使用的过程中,我们可以把预设体拖至场景中来创建一个新的游戏对象,能够让我们的游戏对象和资源能重复利用,并且对于预设体进行修改,可以对当前所以的游戏对象发生一样的修改。

接下来我们在Unity中来演示一下

1、预设体的创建——创建一个Cube——创建一个材质球——然后把Cube的演示改成红色——然后把Cube重命名Player——把Player拖拽到Project中(在此过程中鼠标会有变化)——在Project中就会出现一个Player.prefabprefab就是预设体的意思)

技术分享

预设体:可以快速方便的创建类似的对象,我们可以通过修改预设体来修改对象

技术分享

技术分享

 

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 旋转值为0Quaternion.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 旋转值为0Quaternion.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>();

        }
    
    }
}

 

技术分享

 


【蓝鸥Unity开发基础三】课时12 预设体