serializefild serializable

一。unity文件结构。

     asset / projectsetting / library  三个以及如果使用monodevelopment产生的obj,以及unity运行时产生的temp文件夹。以及其他的vs或者mono产生的工程文件如163905_3lv0_3332153.png等。

   真正有用的文件都在asset和projectsetting中,其他都是可以用unity打开后自动生成的。所以版本控制只需要这两个文件夹。

   project文件夹中存储的数据是: 存放工程设置。包括物理、标签、玩家设置等。换句话说,你在菜单Edit → Project Settings中做过的所有设置都放在这个目录下。

   library文件夹中存储的数据是: Unity会把Asset下支持的资源导入成自身识别的格式,以及编译代码成为DLL文件,都放在Library文件夹中。导入过程中会将源资源转换为匹配Unity编辑器中选定的目标平台的格式。导入过程可能会牵涉一些重量级操作,例如纹理压缩。如果每次打开Unity编辑器时都要执行这些操作,那效率就太低了。为了解决这一问题,我们将资源导入的结果缓存在Library文件夹中。具体就是,导入进程的结果将会存储在以资源文件GUID头两位作为名称的文件夹中。这些文件夹位于 Library/metadata/ 目录下。各个不同的对象会被序列化后存储在一个二进制文件中,文件使用资源文件的GUID来命名。

    asset即是工程中asset文件夹中的东西。

二。什么是序列化,什么是反序列化。作用是什么。

      序列化是将对象转化为流。流分为字节流和字符流。对象转化为流,可以使对象数据在网上传输,和在硬盘读写。unity使用的mono机制几乎实现了所有.net类库,也包含.net的I/O库。filestream,stream,netstream等,都可以将对象流化并传输。反序列化,将字节流或者字符流转化为对象int,float,string等对象。

       除了以上作用,在unity中序列化还有一个作用是在inspector中查看。凡是已经序列化的类都可以在inspector中查看。unity关于序列化的四个关键词是:SerializeField  HideInInspector NonSerialized  Serializable。默认情况下 public 的是序列化的 private等不显示在inspector中的不能序列化,如果要让private序列化就要用到 SerializeField.如果要序列化一个自定义类,就要用到Serialzable.在public class T 类前加关键字Serialzable,后就可以在其他类中引用并序列化了。gameobject加上序列化的脚本后,序列化数据都在gameobject的prefab中。

        另一重要作用是游戏数据的序列化。我们要保存游戏进度,或者开始重建关卡都要用到序列化数据。此时如何把对象转化为可保存的数据流就很重要。方法有unity自带的scripsobject.或者转化为json,xml,csv等。这个以后再说。

三。资源和对象的区别。

      资源是asset里的纹理,材质,模型等甚至包括脚本。资源都有一个关联的meta文件,此文件给出了资源的guid用于加载唯一定位。如果是纹理还会有纹理的格式信息等。还会有assetbundle信息。(这里会有assetbundle的问题)。资源更改成force text。你用记事本打开资源会看到资源的唯一ID,本地ID。如果是prefab,在文件夹中打开prefab会看到所有序列化的信息,这些信息来自各种组件以及自己写的序列化脚本。不是序列化的数据不会留下。

     guid和id虽然保证了资源会被正确加载。但是效率低下。于是产生一个实例ID。unity维护着一个资源对应列表的缓存。如果运行时加载了新的资源,缓存表会记录下来。如果卸载了资源。缓存表会删除记录。产生的问题是,如果显存强行卸载了某个资源,而恰巧程序又卸载了这个资源。这样unity就再也无法再加载这个资源了。导致shader丢失或者网格丢失。

     对象是对资源的引用,是运行时的概念。是对资源的实例化。

 

 参考: http://blog.sina.com.cn/s/blog_532f6e8f0101ft3b.html

http://blog.csdn.net/su9257/article/details/53690411

http://blog.csdn.net/momo_da/article/details/71427924

http://blog.csdn.net/nicholas_nick/article/details/51011622

http://blog.csdn.net/u011215133/article/details/51177843

https://www.cnblogs.com/zhaoqingqing/p/5823927.html

http://www.manew.com/thread-47790-1-1.html

转载于:https://my.oschina.net/u/3332153/blog/1589401

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值