赞
踩
这次在项目开发中,无意了解到ScriptableObject数据存储功能,在结合AssetBundle来实现资源和数据的热更新。当然这里只是资源和数据的更新,并没有做到代码的更新。因为本人项目中并没有去真正的使用,所以不去讲解代码的热更新,有机会在项目用使用时在进行详解。
在项目开发过程中,我一直想要将美术资源,以及一些数据配置抽离出来,方便以后进行更新,但是苦于自己那时候了解太少,所以在之前的项目中没有真正使用到。这次在新项目开发中,无意了解到这个ScriptableObject,在结合AssetBundle打包来实现数据资源更新,经过本人测试也是没有问题的,当然我的是将资源放在本地,不过本地与网络其实差别并不是特别大。
什么是ScriptableObject呢?在百度搜索有大量的ScriptableObject方面的资料和使用,这里我就不详细的去讲解了,毕竟我们这里是实战运用。
ScriptableObject就是“脚本化对象”,将这类作为存储结构化的数据来使用,并写入Unity的资源.asset文件去存储一组数据,取用的时候直接作为一个数据对象拿来用。
我们在项目开发中一直听网上说,将资源打包成.asset文件,我一直以为是AssetBundle等等,直到我接触了它原来是ScriptableObject。废话不多说,开始使用ScriptableObject。
新建一个C#类,只不过继承的不是MonoBehaviour,继承的是ScriptableObject类,所以新建的这个C#类他就不能添加到物体的组件中了,但是他可以作为一个变量对象供其他地方使用。
[注:因为所有的代码和资源都是我在真正项目中的运用,所以有些地方会打上马赛克,敬请谅解!!!][5]
AssetBundle讲解,在我之前的一篇博客中已经详细讲解了,这里就不进行阐述了。Unity5.x AssetBundle依赖项打包详解
通过AssetBundle读取并解析成.asset文件并转化为ScriptableObject
如果不知道怎么读取AssetBundle打包后的文件,可以参考我的博客:Unity5.x AssetBundle依赖项打包详解。
代码如下:
还有一部分没有展示出来,那一部分是AssetBundle的初始化以及读取。
当我们读取到ScriptableObejct对象时,就相当于回到了ScriptableObject的运用中了,拿到ScriptableObject对象后,就可以根据自身的情况获取这些数据,需要注意到的是这些数据你只能进行读取,是没办法在代码中进行更改的。同时当你要进行数据的更新时,比如说项目的背景图或者项目的某些数据你需要进行更新,那么你就可以直接替换这个通过AssetBundle的文件,你也不需要重新发布。当然前提是需要你把规则制定好,比如服务器的资源和本地资源的匹配,这个一般都是根据情况来进行处理的。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。