zoukankan      html  css  js  c++  java
  • U3D prefab

    1,prefab相当于一个类,字面意思就是预设,预先设计好的类。把一个prefab拖放到场景中就生成了一个实例,把二个prefab放到场景中就生成了两个实例。

    不同的实例独立动作,拥有自己独立的状态与数据,不受其它实例的影响。

    2,磁盘上有多个物体d1.fbx, d2.fbx, dn.fbx,将它们拖放到场景中做成一个prefab X,X中保存的是对这些资源的引用,而不是实际资源。当有X的多个实例 x1, x2, xn时,修改任何一个实例中物体d的材质,其它实例也会看到修改的效果;

    或者直接在dn.fbx的inspector面板修改材质,也会同时影响所有引用了dn的预设实例。

    实例的属性哪些是独有的,不受其它实例影响的,哪些是指向引用的,会与其它实例相互影响的?

    生成属性是独有的:由U3D生成的运行时组件,如transform, meshfiler, meshrender等。

    如:更改一个实例的坐标不会影响其它实例,一个实例不开启meshrender也不影响其它实例

    原始数据文件的属性是共有的:材质,动画,顶点,法线等。

    如:更改一个实例的材质,其实是在更改磁盘上的数据文件,会导致所有引用都跟着更改。

    3,由于prefab中保存的只是对实际资源的引用,因此它很小,往往是几kb,随着引用的增多缓慢的增加。

    增加的只是对引用物体的引用字符串而已。

    尽管引用占用的空间比较小,在游戏开发还是应该防止prafab重复引用的问题,以减少打包的尺寸。

     

     

     

     

     

     

     

  • 相关阅读:
    Qt的网络通信(以一对一聊天室为例)
    C/C++中的const ,static
    Qt的认识与相关问题的解决
    Qt的简单介绍,发展和由来
    STL模板的基础与了解
    malloc与new,C++中的指针与引用,C++struct与class的区别
    Qt的常用控件及控件的使用
    Qt的环境与工具、信号与槽
    学习Qt前你需要知道的
    模板与STL小结--vector、list、map等各类容器
  • 原文地址:https://www.cnblogs.com/timeObjserver/p/5996174.html
Copyright © 2011-2022 走看看