[转]Prefabs(预设)与 Instantiate(实例化)

解释:Prefabs(预设)是一种资源类型,可被重复使用的游戏对象。它可以被置入多个场景中,又或者能够在一个场景中被多次置入。当你在一个场景中增加一个Prefabs,你就实例化了一个Prefabs。所有Prefabs实例都是Prefab的克隆,只要Prefabs原型发生改变,所有的Prefabs实例都会产生变化。

Prefabs的用法:如果大家要创建一些想要重复使用的东西,那么就该用到它了。

接下来我们写个小例子,看看如何使用它

1 搭建如下场景:一个地板,一个下落的立方体,调整摄像机的角度和位置,加个平行光,位置参考下图的Scene窗口,效果如Game窗口展示的那样。同时给立方体加上刚体属性(Component -> Physics -> Rigidbody)

然后调整一下立方体的角度,运行一下,让它滚一下。

2  创建Prefabs

在Preject窗口,点Create-> Prefab。然后我们从Hierarchy窗口中将立方体拖到Project窗口新创建的Prefab上。当Hierarchy中的立方体变成了蓝色,Prefabs就完成了填充。

然后你从Preject窗口中将创建的Prefabs拖入Scene窗口中,运行一下。就完成了一次克隆。它们就像双胞胎一样。

3  接着我们配合Instantiate,来用代码创建多个Prefabs的实例。


Instantiate:克隆原始物体。设置位置,角度。
如果一个对象,组件,脚本实例被传入。将克隆整个对相爱难过的层次,以及所有子对象。

各位同学,让我们在Project窗口点Create -> Javascript创建一个脚本

我发现可以用as3的写法来写这里面的js,各位同学请看

public var Pre:GameObject;//在编辑器中用来绑定的Prefabs

private function Update ():void

{

var
instance:GameObject=Instantiate(Pre,transform.position,transform.rotation);

//Instantiate用法,注意参数

//Pre  用来克隆的Prefabs

//transform.position  脚本绑定对象的位置
就像this.transform….

//transform.rotation  脚本绑定对象的角度
就像this.transform….

}

是不是有很亲切的感觉?

4
写完脚本,我们要把它绑定到一个对象上。这时候,我们可以删除Hierarchy窗口中的立方体,然后创建一个空的游戏对象(GameObject->Create
Empty),放置到原来立方体的位置上。将脚本拖放到Hierarchy窗口中的新键的空对象上,让它来执行代码。

5
在Hierarchy窗口中单击空对象,在它的Inspector窗口中就能看到绑定的脚本。然后我们把早前创建的Prefabs拖到脚本Pre右边的框上,完成了脚本中变量的绑定。

6 按小三角运行一下,搞的像粒子效果一样,是不是很嗨?

出自blog: http://blog.sina.com.cn/s/blog_82b6aa3d0100w8sx.html

时间: 2024-10-15 01:05:02

[转]Prefabs(预设)与 Instantiate(实例化)的相关文章

unity Instantiate实例化物体后出现scale改变

最近在做的东西大部分都要用到instantiate, 实例化某个prefab物体,实例化的物体若没有指定父物体,就会自动生成到根目录下. 这是出现了一个问题,当实例化物体后,更改parent值,这时,实例化物体的scale值会产生相应的改变 有两种解决办法 1.instantiate本身可以有父物体参数  Instantiate<T>(T original, Vector3 position, Quaternion rotation, Transform parent), 这样实例化出来的物体

Unity学习笔记13——代码动态加载Prefab预设体

在进行一些功能开发的时候,我们常常将一些能够复用的对象制作成.prefab的预设物体,然后将预设体存放到Resources目录之下,使用时再动态加载到场景中并进行实例化.例如:子弹.特效甚至音频等,都能制作成预设体. 一.预设动态加载到场景: 一个预设体要能够通过代码控制在场景中进行显示,需要三个步骤,这里我们以动态加载怪物血条为例子分析一个常见的误区: 1.预设体资源加载: //加载预设体资源 GameObject hp_bar = (GameObject)Resources.Load("Pr

从Unity引擎过度到Unreal4引擎

 前言 寒假回家到现在已经有十多天了,这些天回家不是睡就是吃....哎╮(╯▽╰)╭,今天早上一觉醒来,突然得知,UE4免费了,这绝对是个好消息,前不久我还在纠结怎么申请校园账号呢o(╯□╰)o.迫不及待打开电脑下载了UE引擎的一个类似管理的客户端,在里面最醒目的一栏,看到一个令人哭笑不得的导航,如下图: EPIC这是要逆天的节奏吗?不过不管他了,接下来,我们便一同学习一下EPIC提供给我们的这篇从Unity过渡到UE4的经验之谈吧.说明一下,下面我将对这篇文章中的重点内容做翻译和一些自己的见解

U3D对象池

一个对象池类 using System.Collections; using System.Collections.Generic; using UnityEngine; public class ObjectPool { #region 单例 private static ObjectPool instance; private ObjectPool() { Pool = new Dictionary<string, List<GameObject>>(); Prefabs =

Unity常见面试题大全

1.       [C#语言基础]请简述拆箱和装箱. 答: 装箱操作: 值类型隐式转换为object类型或由此值类型实现的任何接口类型的过程. 1.在堆中开辟内存空间. 2.将值类型的数据复制到堆中. 3.返回堆中新分配对象的地址. 拆箱操作: object类型显示转换为值类型或从接口类型到实现该接口值类型的过程. 1.判断给定类型是否是装箱时的类型. 2.返回已装箱实例中属于原值类型字段的地址. 2.        [.NET(C#)] attribute,property,markup,ta

【Unity】2.3 项目浏览器和资源的组织

分类:Unity.C#.VS2015 创建日期:2016-03-29 一.Project-工程浏览器 前面我们说过,Unity中的Project View(称为工程浏览器)相当于VS2015中的解决方案资源管理器(Solution),Unity的每个工程中可包含多个关卡(*.unity),每个关卡都是一个可独立运行的项目,根据发布的目标平台不同,编译后生成的可执行程序的扩展名也不同,例如对于Windows平台生成的可执行程序是(.exe文件),对于在Windows平台下运行的浏览器(Web)生成

Unity -----一些可能存在的错误

关于Unity中的资源管理,你可能遇到这些问题 张鑫 8 个月前 原文链接:关于Unity中的资源管理,你可能遇到这些问题 - Blog 在优化Unity项目时,对资源的管理可谓是个系统纷繁的大工程.鉴于Unity独特又绝(cao)妙(dan)资源打包的AssetBundle管理机制,不同资源的属性适合于不同的存储和加载方式.此外,要处理好成百上千个资源之间的相互依赖关系也非易事.谁说良好的资源管理不是个艺术呢?:) ------------------ 关键字 AssetBundle资源制作

[Unity-21] Prefab详解

1.什么是Prefab? Prefab又被称为预设,下面部分来自官网:预置是一种资源类型--存储在项目视图中的一种可重复使用的游戏对象.预置可以多次放入到多个场景中.当你添加一个预置到场景中,就创建了它的一个实例.所有的预置实例链接到原始预置,基本上是它的克隆.不管你的项目存在多少实例,当你对预置进行任何更改,你将看到这些更改将应用于所有实例. 当预置源发生变化,这些变化将应用于所有已链接的游戏对象.例如,如果添加一个新的脚本到预置,所有已链接的游戏对象都将立刻包含该脚本.但是,它有可能改变一个

unity 面试题(答案)

一.什么是渲染管道?是指在显示器上为了显示出图像而经过的一系列必要操作.渲染管道中的很多步骤,都要将几何物体从一个坐标系中变换到另一个坐标系中去.主要步骤有:本地坐标->视图坐标->背面裁剪->光照->裁剪->投影->视图变换->光栅化. 二.如何优化内存?有很多种方式,例如1.压缩自带类库:2.将暂时不用的以后还需要使用的物体隐藏起来而不是直接Destroy掉:3.释放AssetBundle占用的资源:4.降低模型的片面数,降低模型的骨骼数量,降低贴图的大小: