Unity Prefabs
通过上一期的学习,我们知道为了如何向场景中添加一个物体。问题来了,如果需要对这个立方体进行修改应该怎么做呢?那我们肯定就得修改这段代码,能不能将立方体本身从我们的开发中单独提出来呢?这就涉及到我们今天要学习的一个的概念——Prefab。
Prefabs
Prefab是一种可以重复使用的asset,一旦一个Prefab创建出来,它就是一种存储在ProjectView的GameObject,在游戏开发中,我们可以在任意多个场景中去创建已经生成的GameObject实例对象,或者在同一个场景中创建多个。
不论是上面提到的哪种,我们需要做的是将创建的GameObject类型实例化就好了。所有实例化的Prefab都是与原始的Prefab相关联的,我们可以把实例化的Prefab看做原始Prefab的一个拷贝,也就是说,无论场景中存在多少个Prefab的实例,如果我们对原始的Prefab进行修改,那么所有有关它的拷贝都会被修改。
Prefab的创建
在使用Prefab之前,我们必须创建它,如下图所示,在Project窗口右键点击选择create,子菜单中选择Prefab即可。这样我们就创建了一个空得Prefab,接下来需要的就是把我们之前编辑好的GameObject拖拽到该空Prefab上松开鼠标即可,这个时候,空的Prefab就会变成蓝色。当然我们可以按照自己的需要修改该Prefab的名字。
【Unity开发】Prefabs
图 1
Prefab的实例化
有了创建好的Prefab,就可以在以后的开发中直接使用了。
创建Prefab实例的一种方式是直接向场景中目标节点拖拽创建好的Prefab即可,这样就在场景中完成了实例化。
可能有人就会说,如果我要在程序运行中动态创建一个Prefab的实例,应该怎么做呢?这就涉及到我们这里要提到的第二种创建方式——通过Script(C#、JavaScript等等)动态创建Prefab的实例。
例子一——这里我们考虑一种情况,我们需要向场景中添加一个立方体,并且为这个立方体添加一些属性(比如刚体、碰撞等等)。
如果我们直接通过代码来实现,应该怎么做呢?
【Unity开发】Prefabs
图 2
如图所示,运行之后我们可以看到,一个立方体开始向下降落。表明我们已经创建成功了。
好的,那现在我们通过创建Prefab的方式来实现这个效果。方法很简单,就像前面说的那样,创建一个cube并对它进行编辑,然后在Project窗口中创建一个空的Prefab并将之前创建的cube拖拽到这个空的Prefab上完成Cube的Prefab创建。有了创建好的Prefab,接下来呢我们就在需要的时候通过代码将Prefab实例化到场景中即可。如图3所示,按照上面的步骤,我们可以得到一个立方体的Prefab(注意:动态加载Prefab需要存放在一个名为Resources的目录下,否则load会找不见)
【Unity开发】Prefabs
图 3
下图是我们使用代码来动态加载一个Prefab的代码清单。
【Unity开发】Prefabs
图 4
运行之后,我们可以看到窗口中有一个立方体(这个立方体就是我们之前创建编辑的一个Prefab的实例)向下掉落直到掉出屏幕,有了这种方式我们就可以在游戏需要的时候去动态加载一个已经创建的好的Prefab实例了。
【Unity开发】Prefabs
图 5
Prefab的编辑
当然,我们在实际开发中也会面临Prefab需要修改的问题。这就涉及到Prefab的继承属性,Unity允许我们对已存在的Prefab进行修改,然后只要我们点击Inspector中的Apply按钮,我们所做的修改都会被该Prefab的实例所继承。(如下图所示)
【Unity开发】Prefabs
图 6
OK,关于Prefab的学习就结束了~~
Unity Prefabs的更多相关文章
- 从Unity引擎过度到Unreal4引擎(最终版)
原文地址:http://demo.netfoucs.com/u011707076/article/details/44036839 前言 寒假回家到现在已经有十多天了,这些天回家不是睡就是吃....哎 ...
- 转:Oculus Unity Development Guide开发指南(2015-7-21更新)
http://forum.exceedu.com/forum/forum.php?mod=viewthread&tid=34175 Oculus Unity Development Guide ...
- Unity -- 材质-Material和预设体-Prefabs
材质(Materials)用来把网格(Mesh)或粒子渲染器(Particle Renderers)贴到游戏对象上.他们在定义对象怎么被显示发挥重要组成部分.材质包括用于呈现网状或颗粒着色器的参考,所 ...
- Unity 最佳实践
转帖:http://www.glenstevens.ca/unity3d-best-practices/ 另外可以参考:http://devmag.org.za/2012/07/12/50-tips- ...
- 在Unity环境下使用抽象和接口
http://gamasutra.com/blogs/VictorBarcelo/20131217/207204/Using_abstractions_and_interfaces_with_Unit ...
- Unity进阶技巧 - 动态创建UGUI
前言 项目中有功能需要在代码中动态创建UGUI对象,但是在网上搜索了很久都没有找到类似的教程,最后终于在官方文档中找到了方法,趁着记忆犹新,写下动态创建UGUI的方法,供需要的朋友参考 你将学到什么? ...
- Gvr SDK for Unity 分析(一)
Gvr SDK概述 通过谷歌VR SDK for unity 为Android和iOS 构建虚拟现实应用程序 unity SDK在Android上支持构建应用程序for daydream 和 card ...
- Unity Standard Assets 简介之 Utility
决定写这个系列起因于刚才的偶然所见,我发现当前版本的Unity有一个 Utility 标准资源包,里面有一个 FPSCounter 脚本提供了显示游戏运行帧率的基本功能,而我几周前刚刚写过一个同样功能 ...
- unity htc vive使用
本文介绍如何在Unity中使用HTC vive设备,当前VR作为市场比较火热的热点,HTC VIVE设备作为三大供应商之一,许多人购买了该设备,却不知道如何使用,本文通过图文并茂的形式,进行手把手的讲 ...
随机推荐
- C语言,简单计算器【上】
由于工作需要最近在研究PHP扩展,无可避免的涉及到了C语言.从出了学校以后C语言在实际工作中还没有用到过,所以必须要先进行一点复习工作.个人认为对于熟悉一样东西说最好的方法是上手实践.于是便想起了当时 ...
- ComboBox在WPF中的绑定示例:绑定项、集合、转换,及其源代码
示例1.Selector(基类) 的示例Controls/SelectionControl/SelectorDemo.xaml <Page x:Class="Windows10.Con ...
- Android 一键清理动画
版本号:1.0 日期:2014.7.29 2014.7.30 版权:© 2014 kince 转载注明出处 一键清理是非常多Launcher都会带有的功能,其效果也比較美观.实现方式或许有非常多 ...
- 百度之星2016资格赛D,水题
很简单的题,主要是要用字符串哈希,把字符串处理成整数.接下来可以继续用hash,也可以像我一样用个map就搞定了. /* * Author : ben */ #include <cstdio&g ...
- go签名算法设计
Go by Example 中文:Base64编码 https://books.studygolang.com/gobyexample/base64-encoding/
- java之冒泡排序
//冒泡排序(Bubble Sorting)的基本思想是:通过对待排序序列从后向前(从下标较大的元素开始),依次比较相邻元素的排序码,若发现逆序则交换,使排序码较小的元素逐渐从后部移向前部(从下标较大 ...
- 使用YOURAPP做移动应用开发
一.简单介绍: YourAPP是一款执行在智能设备上的程序和模块. 它将设备底层的某些操作封装成能够供JavaScript语言调用的方式.同一时候将界面的设计和开发以Web的形式开放给使用者. 从而将 ...
- Shell之内容匹配与格式输出
对于大文本或者有些特定格式的文本,有时我们要查找特定内容或定位指定的区域,这样就需要内容匹配. 关于内容匹配,我们常使用的有几个命令: grep,支持正则,查找包含有匹配项的行. cut,提取指定的列 ...
- Bestcoder BestCoder Round #28 A Missing number(查找缺失的合法数字)
Problem Description There is a permutation without two numbers in it, and now you know what numbers ...
- UVALive - 4867 —— dp
题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_ ...