位置: 编程技术 - 正文

unity动态加载之AssetBundle原理(unity加载gif)

编辑:rootadmin
Assetbundle 是Unity Pro提供提供的功能,它可以把多个游戏对象或者资源二进制文件封装到Assetbundle中,提供了封装与解包的方法使用起来很便利。1.预设

推荐整理分享unity动态加载之AssetBundle原理(unity加载gif),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:unity 动态加载,unity动态加载预制体,unity 动态添加组件,unity动态加载预制体,unity动态加载fbx,unity webgl 动态加载,unity动态加载模型和贴图,unity动态加载fbx,内容如对您有帮助,希望把文章链接给更多的朋友!

unity动态加载之AssetBundle原理(unity加载gif)

Assetbundle可以将Prefab封装起来,这是多么方便啊! 而且我也强烈建议大家将Prefab封装成Assetbundle,因为Prefab可以将游戏对象身上带的游戏游戏组件、游戏脚本、材质都封装在一起。当从服务器上将Assetbundle下载以后直接Instantiate就可以放入游戏中。

试想一下,如果只能将原始的二进制资源文件放在服务器上下载,当资源文件下载完毕后,需要动态的创建游戏对象、然后动态的将脚本绑定在游戏对象、动态的将贴图赋予游戏对象等等各种动态的操作。。所以强烈建议使用Prefa,不解释!!!!! 另外,我在举个例子,因为模型有可能会带很多动画文件,那么这样一组模型资源就可能是多个FBX 文件 和 若干png贴图文件 材质文件。这时我只需要把原始模型放入Prefab中,它就会包含这个模型的所有组件、甚至包括它的动画资源、贴图。那么如下图所示,Mode就是模型的Prefab文件,那么我仅仅只需要把Mode这个预设打包成Assetbundle即可。 当我在服务器上下载这个Assetbundle并且载入游戏中就可以直接使用了,切换动画、换贴图都可以。。2.二进制文件 也并不是Assetbundle中全都要用预设,Assetbundle它也可以将二进制文件直接封装在里面,比如图片、声音、文本信息等等。 3.场景文件 在Unity中可以将一个场景保存在Scene中,Scene就会包含这个场景中的所有,那能不能把Scene也封装成Assetbundle中?答案是能,但是它不能在移动平台上用,因为移动平台上是不能更新脚本的,换句话来说就是即使将脚本绑定在Prefab中,然后下载Assetbundle后,所有脚本是不会执行的,后面说另外一种巧妙用法。4.移动平台 上面MOMO已经将Assetbundle 的使用原理大致介绍了一下 ,我们在谈谈移动平台。脚本不能更新是移动平台下最大的伤,这就意味着开发者无法绕过App store和 google Play这种在线商店升级应用程序。唯一能做到的就是更新资源、举个例子,游戏中在处理版本升级时,一般会有个大版本号和一个小版本号,大版本号就是 2.0、3.0这种 版本需要在AppStore中更新,大版本主要是升级游戏脚本,然后当小版本号,比如2.0.1 或2.0.2这种只是更新游戏中的资源,通过自己游戏的服务器就可以完成,通过Assetbundle在自己服务器上下载,然后适应在游戏中。如果非要更新脚本,或不得不更新脚本那么只能在Appstore或者google Play去更新大版本。 移动平台上不能更新脚本,那么Prefab上绑定的脚本怎么办?在任何平台上都可以把脚本添加到Prefab上,然后打包成Assetbundle,只有移动平台上有点特殊,比如将Test.cs这条脚本绑定在Prefab中,最后程序通过服务器下载这个Assetbundle ,当载入工程中这条脚本是不会被执行的。 但是如果本地工程有Test.cs这条脚本,那么Unity会自动将这条脚本绑定在下载的Prefab中,并且他们执行的非常好。如果本地工程中没有Test.cs这条脚本,那么Prefab上的脚本是永远都不会执行的。有时我们会在脚本中写一些Public的变量,有可能不同的Prefab上绑定的是相同的脚本,只是Inspector 脚本中的public参数不同。别担心这一点Assetbundle 中的Prefab也是没问题,所以说只要大版本中的脚本没问题,在小版本中只更新游戏资源是一点问题都么有的。5.移动优化 之前我们说过可以将游戏中的某个游戏对象封装成Assetbundle,也可以将游戏中的整个场景也封装成Assetbundle。但是我认为需要巧妙的使用封装场景,因为场景中肯定有很多公用的模型,如果打包场景的话那么内存与size就是 公用模型的size * N个场景,想想其实挺恐怖的。其实我们可以巧妙的使用,首先把场景中公用的部分和私有的部分统统放入Unity, 然后烘培整个场景。 当场景烘培完毕后把公用的模型部分在拿出去,场景只只保留私有的模型。还可以做一个工具将公用模型在场景中的坐标保存在XML中(每个场景文件会对应一个公用模型的XML信息),最后在将公用的模型分别封装在别的Assetbundle中。 服务器上提供每个场景的Assetbundle ,和公用模型的Assetbundle,一般公用模型的Assetbundle可以放在常驻内存中(可能使用频繁、根据项目的不同而定)场景Assetbundle下载完毕后,现载入场景然后在根据场景对应的XML信息将公用模型部分动态的在添加到场景中,这样就完成了一个场景的构建。6.总结对游戏中所有资源进行打包,比如按类型分为五个大部分 界面,模型,特效,声音,场景,脚本。界面部分:公用资源包(可复用的资源包)和 每个界面独有得资源包(不可复用的资源包)统一使用Prefab 打包成.assetbundle 二进制&#;式。模型部分:按角色分类,统一使用Prefab 打包成.assetbundle 二进制&#;式。 模型部分包括模型文件与动画文件,每一个模型文件对应一组动画文件。(如果模型需要换装还需提供对应换装的模型与贴图) ,因为unity4的重定向动画不支持动态加载,所以目前不需要考虑 不同大小 不同规&#; 不同性别 的模型重定向动画。特效部分: 统一使用Prefab 打包成.assetbundle 二进制&#;式。 声音部分: 统一使用Prefab 打包成.assetbundle 二进制&#;式。 场景部分:场景和前面的有点区别,场景需要导出烘培的光信息并且只能烘培场景之上永远不动的模型,但是这些永远不动的模型有可能会同时在多个场景中使用,所以场景烘培完毕后要把重复使用的对象删除,(运行游戏在动态的加载进来)场景中只保留该场景中永远不会变的模型,以及烘培的光照信息。 打包场景后会生成.unity3D 二进制&#;式,它和 assetbundle 打包方式是不同的。(另外,也可以考虑 json xml 二进制 来动态组装场景)。 脚本部分:如果Prefab上是带脚本打包Assetbundle的话 脚本是不会被运行的(移动平台), 但是unity有一个技巧,Prefab上的脚本 如果本地有的话它会把本地的同名脚本绑定在Prefab对象上,它会很好的执行。 Prefab打包技巧: Prefab打包时自身是不占多少空间的 <=1KB 但是Prefab上是可以关联 这五大部分 “界面,模型,特效,声音,场景,脚本”以及在Hierarchy视图中 坐标/缩放/旋转。 关联这些信息以后就会很大,所以为了避免资源的浪费尽量避免Prefab重复关联。一个prefab下面可以同时关联多个游戏对象 ,这里举个例子如果你的 Prefab下面放了一个模型 它的大小可能是k ,在 Prefab下面放了十个完全相同模型 它的大小可能是k 。 如果Prefab下面放了两个不同的模型,它的大小可能就会是 k x 2 的size ,也就是说Prefab与关联的数量是无关的 。 加密部分: assetbundle 是可以转换成 字节数组 ,客户端与服务器约定一组解密 字节数组的算法就可以实现资源加密。大版本升级: unity的版本升级其实主要是升级主程序中的脚本。 因为所有的资源都是assetbundle 和 .unity3d 这些资源放在本地或者服务器 解包的方式是完全一样,所以理论上我们的主程序包的大小可以做到很小,可以很好设置把多少资源放在包里 或者把所少资源放在服务器上。在运行的时候服务端应该把所有 assetbundle 和 .unity3d的资源文件的下载地址列表返回给客户端。小版本升级:小版本升级也就是更新资源,因为不能更新脚本, 在登陆的时候服务端应该把所有 assetbundle 和 .unity3d的资源文件的下载地址列表返回给客户端。还有个需要考虑的地方,比如现在大版本是2.0.0 ,小版本已经是2.0.5 ,用户的手机上是一个1.5.0的包。 此时用户在打开游戏的时候 应当强制它去appstore中去下载大版本2.0.0 ,当用户下载完毕后登陆游戏,此时服务器告诉客户端现在已经是2.0.5的小版本了,这时候客户端去下载对应小版本的所有 assetbundle 和 .unity3d文件地址列表。增量更新:理论上增量更新是可行的。因为unity不能更新脚本,所以在处理增量更新的话 需要在代码中做可以兼容增量更新的可能。 因为Assetbundle这块的代码比较多,我还是决定分成两篇文章来写,这篇文章先说原理、下篇文章说代码。欢迎大家来讨论!前几天我和Unity鑫哥聊天,他告诉我IOS上是无法运行时更新脚本、但是Android上是可以运行时更新脚本,我回家也试了一下但是没能成功,后来我考虑即使成功了项目中我也不打算那么做,因为这样Android和IOS 做起来的差别就太多了, 另外Unity商店中有一个处理运行时更新脚本的插件 unityLua 大家可以去研究研究。 本文固定链接: 雨松MOMO 年月日 于 雨松MOMO程序研究院 发表

Unity与Android交互 转载自

unity开发炉石传说系列英雄的水晶代码部分代码 炉石里面英雄的水晶代码:usingUnityEngine;usingSystem.Collections;publicclassHerocrystal:MonoBehaviour{//本例假设最大个水晶,处理玩家拥有水晶数量,可用水晶数量

unity开发炉石传说系列卡牌生成代码部分代码 usingUnityEngine;usingSystem.Collections;usingSystem.Collections.Generic;//生成卡牌publicclassgeneratcard:MonoBehaviour{privateTransformfromcard;//生成卡牌的地方privateTransformtocard;//生

标签: unity加载gif

本文链接地址:https://www.jiuchutong.com/biancheng/369411.html 转载请保留说明!

上一篇:Unity3D 事件

下一篇:Unity与Android交互(unity接入安卓sdk)

  • 财务往来账对账制度
  • 血液制品3%增值税税率
  • 工程产值是怎么计算的
  • 企业注销其他应付款可以转入未分配利润吗
  • 二手房屋增值税税率
  • 收到前欠销货款290000元,存入银行的会计分录怎么写
  • 政府奖励金怎么用
  • 员工报销增值税
  • 税控服务费的账务处理
  • 银行存款收款凭证
  • 零售环节销售金额标准
  • 买材料的仓储费会计分录
  • 以前年度不合规发票怎么处理
  • 物流公司赔付款会计分录
  • 企业接受固定资产投资
  • 招商引资政府返税政策不兑现
  • 注册资本 变更
  • 税务要求企业所得税预缴申报更正
  • 公司缴纳社保部分从个人扣除 犯法吗
  • 固定资产出售后净残值怎么处理
  • 质保金怎么挂账
  • 员工住院押金会计处理
  • win101703怎么看
  • 2023个人出租房屋房产税
  • 个人所得税应该计入什么科目
  • sgbhp.exe - sgbhp是什么进程 有什么用
  • 房屋租赁合同中租金大写
  • php文库系统
  • 阿里云 ide
  • php imagettftext()函数
  • 收不回的应收账款会计分录
  • 递延收益与递延所得税资产的区别
  • php生成随机6位数
  • ZED2跑ORB-SLAM3+双目相机、IMU联合标定+显卡驱动与cuda/cudnn安装
  • react中路由有哪些常用组件
  • python uiautomator2的点击操作
  • 公司注册完成以后需要做哪些事情
  • 公司的注册资本是什么意思
  • 自产自销的农产品可以抵税吗
  • 固定资产清理是什么意思
  • 免税农产品的范围有哪些
  • 母子公司关联交易规定
  • 产品广告费属于什么会计科目类别
  • 无形资产的后续支出,金额较大的应增加无形资产的价值
  • 先确认收入后开票怎么做分录
  • 一般纳税人福利费
  • 个人转租房屋需要交房产税吗
  • 关联公司代缴社保劳动者怎么处理
  • 附加税 减免
  • 购入不需要安装的固定资产会计科目
  • 记账凭证审核的内容
  • 开专票需要什么条件呢怎么开
  • 分红做什么会计分录
  • 营业收入要包括什么
  • 旅游应当提示参加团队旅游的旅游者按照规定购买什么
  • 项目成本的估算与预算有什么区别和联系?考试资料网
  • 会计师事务所工作怎么样
  • mysql使用命令
  • mysql索引的使用和原理
  • win10预览版21277
  • u盘装好系统后重启无法进入系统
  • ubuntu18.04 设置静态ip
  • linuxwindows差别
  • win11注意
  • 苹果官网入口
  • 磁盘限制
  • 关于windows的开始菜单,叙述错误的是
  • win8怎么设置开始
  • linux怎么禁用用户
  • debian linux教程
  • 桌面预览怎么设置
  • bootstrap响应式导航条模板使用详解(含下拉菜单,弹出框)
  • opengl 渲染yuv
  • unity服务器端
  • windows下使用什么命令查看监听端口
  • 使用jquery实现表单验证
  • js的自定义属性
  • jquery表单事件实例
  • 企业年度总收入指的是什么意思
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设