本系列基于:BDFramework 、Unity3D 2018.4.0

BDFramework:Simple! Easy! Beautiful! This is a powerful Unity3d game workflow!

框架地址:

GayHub: yimengfan/BDFramework.Core,

码云 : yimengfan/BDFramework.Core欢迎赏星。

第九艺术 、第十艺术讨论群 : 763141410

爬坑关键字,方便其他小伙伴搜索: Assetbundle Shader异常, keyword Assetbundle打包。

进入今天的主题,如果你问我,人能不能改变自己的命运,我不晓得,我只晓得出包就是我的命.

0x001:问题引出

很早以前,我们遇到了这样的问题 : 打包成AssetBundle后,移动端现实的效果异常,具体怎么个异常法,比较随机:

于是乎我们开始苦逼排查:

1.Shader的平台性问题(此时的shader并没打成ab):经过我们验证,pc端切换到Android平台,加载Android的ab包,显示正常。此时就很纳闷,why?

当时我们认为,shader没有带进包体。

2.于是乎我们就提出第二个问题:Android上Shader怎么打进包体,并被正常引用的?

无论怎么百度,你都会得到下面的结果:

大家都会一堆的,往这上面答。当时我想,这个是打包时候需要带进包体的shader。当时我就内心一顿mmp,发出灵魂3问:莫非在我发完版本之后就不能使用新shader了?使用新shader只能重新发包?Shader不能打Assetbundle?

于是乎,半小时后,enmmmm,我觉得能用就行了,解决包要紧,包要紧.

即使这样,也是接着狗带 ,再次尝试失败。

3.于似乎,我只能去google搜shader和Assetbundle的问题了。

当时我内心各种wtf,老外不做热更的么?老外不打 Assetbundle的么?

终于我在Unity的社区里,找到了关键字Keyword。

0x010: Keyword

首先,想看到keyword,你需要在inspector下进行卐解:

这时候 你打开材质球,就能看到 keyword

keyword,你可以看成是Shader中的一种特殊宏。一般内置shader会在面板上很多选项,选项开关,就产生一个shader变体。而我们打包shader时候,并没有打包正确的shader变体,所以shader会 显示,但是不正常,是因为keyword丢失。

关于Keyword又要解释:multi_compile与shader_feature,

关于更多的解读,看下面这个链接:

https://blog.csdn.net/RandomXM/article/details/88642534​blog.csdn.net

我们主要关心怎么解决这个问题。

问题找到后,我们就更好处理了,顺便还解决我们上面两个疑问:

1.shader可以单独打包成ab,所以建议把unity内置shader全部放到项目工程中 !!!(这个很重要)

像这样的当个勇士!!!

2.关于keyword怎么打包进AB。首先你需要一个.ShaderVariant 文件,这个可以自行百度。然后选择Shader 自己手撸Keyword完事~

然后需要把这个ShaderVariant 和对应shader打包到一个ab包中,会自动加载。这样keyword就正常了~~

最后:

你以为这样就完事了?太天真了吧!!!

一个项目中,百来个Shader总要用的吧,然后 每个shader,多少变体,特别 unity内置shader,一堆keyword,总计变体几十万个,你还需要一个个手撸?

当然BDFramework,送了你一个大礼包啊~

一键收集 Keyword,0冗余~

关于编辑器过程 ,还是比较复杂的,先是刷了所有使用到的keyword,然后和shader本身求交集,再把keyword 输出到ShaderVariant文件。

中间,还有很多坑,比如获取shader keyword的接口是私有的,只能反射调用。

....

然后BD默认策略,是收集所有使用的shader和keyword,打包成一个ab,游戏启动一次性加载~

有兴趣的小伙伴可以去看源码,这里就不赘述,

主要记住Shader打包Assetbundle的问题,方便各位小伙伴排查错误~

最后,祝大家天天不用加班!!!!!

assetbundle能不能删除_Unity3d爬坑篇(2)之Assetbundle、Shader和Keyword相关推荐

  1. (2/2)Canvas的交互存为图片-爬坑篇

    需求介绍 page2上的canvas可交互,并实时显示交互结果: 点击下一步,page2消失,page3显示: page3显示的是一张图片,图片有canvas交互区和另外的一些元素组成. 实现思路 c ...

  2. Unity AssetBundle 爬坑手记

    本文原创版权归 博客园 深圳-宝爷 所有,此处为转载,如有再转,请自觉于篇头位置标明原文作者及出处,以示尊重! 作者:深圳-宝爷 原文:http://www.cnblogs.com/ybgame/p/ ...

  3. Unity3d资源反编译. AssetBundle格式简析+简单应用+爬坑

    ===================  Unity3d资源反编译工具 DisUnity ================ 源码:https://github.com/ata4/disunity 需要 ...

  4. Unity AssetBundle爬坑手记 - 夜阑卧听风吹雨

    http://www.tuicool.com/articles/ieYJBf 这篇文章从AssetBundle的打包,使用,管理以及内存占用各个方面进行了比较全面的分析,对AssetBundle使用过 ...

  5. Vue 爬坑之路(六)—— 使用 Vuex + axios 发送请求

    Vue 原本有一个官方推荐的 ajax 插件 vue-resource,但是自从 Vue 更新到 2.0 之后,官方就不再更新 vue-resource 目前主流的 Vue 项目,都选择 axios ...

  6. Android爬坑之旅:软键盘挡住输入框问题的终极解决方式

    本文由BarryZhang原创,同一时候首发于diycode.cc.barryzhang.com .github.com/barryhappy.非商业转载请注明作者和原文链接. 前言 开发做得久了.总 ...

  7. JWT 入坑爬坑指南

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | 公众号「程序新世界」 越来越多的开发者开始学习 ...

  8. 【转载】python3安装scrapy之windows32位爬坑

    python3安装scrapy之windows32位爬坑 原创 2016年11月06日 01:38:08 标签: scrapy / windows / python / 开源框架 / 网络爬虫 早就听 ...

  9. Android爬坑之旅:软键盘挡住输入框问题的终极解决方案

    前言 开发做得久了,总免不了会遇到各种坑. 而在Android开发的路上,『软键盘挡住了输入框』这个坑,可谓是一个旷日持久的巨坑--来来来,我们慢慢看. 入门篇 Base 最基本的情况,如图所示:在页 ...

最新文章

  1. “我付了钱,为何要说谢谢?”
  2. Linux 基础知识----shell
  3. jsp uri=http://java.sun.com/jsp/jstl/core报错解决
  4. Linux安装rpc监控系统资源
  5. 如何利用openSsl来计算一个文件的md5值?
  6. 2018.9.10.Matlab实验二:Matlab基本运算
  7. html5网页制作代码_好程序员HTML5大前端常用开发工具大集合
  8. maven snapshot和release版本号之间的差
  9. 计算机网络考试难吗,网络教育统考中的计算机考试难不难,
  10. 白话 Golang 协程池
  11. php多条件查询统计,PHP-----多条件查询
  12. Jeecg弱口令后台上传getShell渗透测试
  13. 2022年版中国石油焦市场运行现状调研与前景动态分析报告
  14. laravel之生成PDF文档-TCPDF
  15. 如何将代码写的更加优雅?
  16. 【PS基础】-照片拼接基础
  17. 十一课堂|通过小游戏学习Ethereum DApps编程(1)
  18. android第三方应用商店,Android第三方应用商店成长迅猛
  19. 推荐10款设计软件,全是设计大牛收藏夹里的
  20. mysql natural join_MySQL STRAIGHT_JOIN 与 NATURAL JOIN

热门文章

  1. [导入]ASP.NET MVC框架开发系列课程(2):一个简单的ASP.NET MVC应用程序.zip(13.70 MB)...
  2. C++中重写与覆写(虚函数virtual)的区别
  3. python 读取excel表数据获取坐标_python读取并定位excel数据坐标系详解
  4. javascript array添加图片_史上最全的web前端面试题汇总及答案JavaScript之二(二)...
  5. STL 容器中的元素必须满足的条件
  6. Error:Internal error: org.gradle.tooling.BuildException: Could not run build action using Gradle dis
  7. A problem occurred starting process 'command 'G:\Android\sdk\ndk-bundle\toolchains\mips64el-linux-an
  8. pycharm 类型注释_学习Python第一步,变量与数据类型
  9. python2和python3如何共存,如何安装多版本python python2和python3共存以及pip共存
  10. Linux自学笔记——Centos系统安装