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

推荐视频讲师博客: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>();

}
    
    }
}

时间: 2024-11-05 11:53:23

【蓝鸥Unity开发基础三】课时12 预设体的相关文章

蓝鸥Unity开发基础二——课时12 递归

一.递归 递归-在方法体内,再次调用方法本身 递归必须有出口 using System; namespace lesson_12{    public class Math{ //递归就是在方法内部调用方法本身        //1.递归必须有结束条件        //2.将大的复杂的问题分解为与原问题类似的小问题来问题,并且小问题和原问题是同一件事并且更简单 //递归本身是一种算法    public  int F(int n){            //结束条件            i

蓝鸥Unity开发基础二——课时2 结构体

一.定义结构体类型 结构体相当于一个复合型的容器 结构体是由一系列不同类型的数据构成的集合 Struct结构体名{ 访问修饰符 类型 变量命: 访问修饰符 类型 变量命: -- 访问修饰符 类型 变量命: } 结构体声明和使用举例: using System; namespace Lesson_02{    class MainClass    { //定义一个结构体        struct Peraon{            public string name;            

【蓝鸥Unity开发基础三】课时3 Terrain地形系统【未完】

[蓝鸥Unity开发基础三]课时3  Terrain地形系统[未完] 推荐视频讲师博客:http://11165165.blog.51cto.com/ 一.Terrain地形系统 Terrain地形系统 资源包的导入 场景漫游 立方体是:长宽高1m 二.Terrain地形系统 1.Terrain组件:提升地形/沉降地形工具 点击左键-- 提升地形 点击左键+Shift--沉降地形 选择笔刷的形状.笔刷的大小,笔刷的硬度--绘制地形 2.Terrain:平坦地形工具:设置地形目标高度 平滑地形工具

【蓝鸥Unity开发基础三】课时2 游戏对象和基本操作

[蓝鸥Unity开发基础三]课时2 游戏对象和基本操作 一.首先,让我们先看一下下面的图片--金字塔架构 推荐视频讲师博客:http://11165165.blog.51cto.com/ 一个游戏有多个场景组成, 场景是由多个游戏对象组成, 每一个游戏对象身上由多个组件组成的, 每个组件都是为了完成某个特定的功能! 二.创建一个游戏环境--01 1.快捷键--CTRL+S 2.创建的环境会在视图中显示 3.在Create视图中邮件--选3D Object 4.创建一个--Plane 5.创建一个

蓝鸥Unity开发基础二——课时6 方法

蓝鸥Unity开发基础二--课时6 方法 推荐视频讲师博客:http://11165165.blog.51cto.com/ 对象.方法名(实际参数); Person p=new Person(); P.Say(); 1.带有参数的方法举例 using System; namespace Lesson_06{    class MainClass    {        public class Car{        //l跑        //访问说明符  返回值类型 方法名(参数列表){语句

蓝鸥Unity开发基础二——课时3 访问修饰符

[蓝鸥Unity开发基础二]课时3 访问修饰符 一.访问修饰符 public --公共的,在哪里都能用 private  --私有的,只能够在当前机构体重使用,其他任何地方都不能 访问修饰符举例说明 using System; namespace Lesson_03{           struct Point2{        //public--公共的,在哪里都能用        public float x;        //private  --私有的,只能够在当前机构体重使用,其他

【蓝鸥Unity开发基础三】课时5 Unity组件开发

推荐视频讲师博客:http://11165165.blog.51cto.com/ Unity组件开发 本节课我们来学习Unity组合,首先需要先了解一下Unity的工程和应用程序的关系: 一.Unity的工程和应用程序 Assets里面放的是项目所需要的资源 Library里面存放的是所需要的库文件 ProjectSettings里面存放的是工程设置文件 Temp里面存放的是临时文件 Lesson_05项目文件夹内容 二.项目框架 二.组件开发 回到Unity中来演示一下: Transform组

【蓝鸥Unity开发基础三】课时9 Vector3

一.Vector3 using UnityEngine;using System.Collections; public class Test : MonoBehaviour { //Vector3就是一个类,表示向量,向量即有大小又有方向的量    void Start () {        Vector3 v = new Vector3 ();        //x,y,z分别是三个方向上的分量        float x = v.x;        float y = v.y;    

【蓝鸥Unity开发基础三】课时16 碰撞和触发事件

推荐视频讲师博客:http://11165165.blog.51cto.com/ 一.碰撞和触发事件 之前我们已将学习了刚体和碰撞器,今天要学习的是碰撞和触发事件. 碰撞事件 发生碰撞的两个物体必须都带有Collider 发生碰撞的两个物体至少有一个带有刚体 发生碰撞的两个物体必须有相对运动 1.首先先创建一个Plane,重置一下Transfrm,然后把Scale的 x z改成10 2.创建一个Cube1,把Transform重置一下,然后把Position y改成0.5,让Cube1而处于地面