• Unity中Shader和AssetBundle结合使用的注意事项


    之前遇到了一件事情就是打包安卓的ab后,unity在editor启动下,加载出来的abshader丢失,其实发布安卓后运行是正常的,当时还纠结了半天,还写了个重新赋值的脚本

    下面是unity开发的一些注意事项

    =======================================================================================

    1、我们一般把资源和代码作为两个工程。资源工程导出assetbundle供代码工程使用。这么做主要是防止资源过多导致代码工程启动速度慢,影响开发效率。

    2、尽量避免使用Resources文件夹。这个文件夹就相当于一个系统默认的AssetBundle。只不过不能增量更新。它会严重影响打包速度。我们把资源从Resources移出来后,打包时间从半个多小时,减少到2~5分钟。

    2、Shader都要加入到Proejct Settings--Graphics--Always Included Shaders中。否则代码工程中没有使用到的Shader可能会被裁剪,导致的问题是Shader丢失。

    3、Shader要打包到一个AssetBundle中,即Shader需要指定一个AssetBundle包名。如果Shader没有指定的话,那么每个AB包都会包含这个Shader。一方面造成资源浪费。另一方面当Shader被修改的时候,所有的模型都需要重新导出。另外由于我们代码工程里面肯定也维护了一份Shader,模型实际使用的Shader是它自己包内的,不是代码工程的Shader。

          这里要注意,2和3必须都要做。之前我认为加入到Always Included Shaders中,Unity打包ab的时候就不会打包Shader。然而并不是这样。这个列表只负责预先加载Shader。防止资源被裁剪,以及临时加载造成的卡顿。

    4、Unity打包后的Shader是平台相关的,Editor下是无法直接使用的。所以Editor下加载AB包中的模型或特效会出现Shader错误。这个时候需要重新指定一下Shader,即遍历所有的Render把Material的Shader重新附下值。

  • 相关阅读:
    mac 配置pycharm(2021.3版本) 和 clion(2019.3版本)
    深度学习神经网络backbone
    Windows获取CPU、内存和磁盘使用率脚本
    Unicode编码转换
    @ControllerAdvice全局数据预处理
    查看Linux系统内存、CPU、磁盘使用率和详细信息
    服务器nginx配置SSL证书后启动报错问题解决方案
    Inno Setup 寻找 AppId 的方法
    慢sql_查询条件加了函数导致索引失效
    k8s暂停一个pod
  • 原文地址:https://www.cnblogs.com/sanyejun/p/7652002.html
Copyright © 2020-2023  润新知