zoukankan      html  css  js  c++  java
  • 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的学习就结束了~~
  • 相关阅读:
    Struts2拦截器(Interceptor)
    在ORACLE中实现SELECT TOP N
    eclipse搭配Resin开发Struts应用之环境篇
    Struts2中有关strutsdefault.xml,struts.xml,struts.properties文件详解
    iframe自适应加载的页面高度
    struts2的action中获得request response session 对象
    Win32环境下的Tomcat5.5.17与apache2.2的集群
    故事,幽默,脑筋急转弯
    5岁的女儿让老爸帮她做某事......
    解决WIN2003不能玩CS1.5
  • 原文地址:https://www.cnblogs.com/nafio/p/9137598.html
Copyright © 2011-2022 走看看