首页 > 其他分享 >如何在FBX剔除Lit.shader依赖

如何在FBX剔除Lit.shader依赖

时间:2024-02-01 11:13:01浏览次数:33  
标签:社区 keyword FBX shader Shader Lit Lua UWA

1)如何在FBX剔除Lit.shader依赖
2)Unity出AAB包(PlayAssetDelivery)模式下加载资源过慢问题
3)如何在URP中正确打出Shader变体
4)XLua打包Lua文件粒度问题


这是第371篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答、社区帖子等技术知识点,助力大家更全面地掌握和学习。

UWA社区主页:community.uwa4d.com
UWA QQ群:465082844

Asset

Q:测试发现只能通过后处理才能去掉Lit.shader依赖,尝试使用AssetDatabase.LoadAssetAtPath(fbxPath)然后执行下面代码,并不能去掉依赖。请问还有什么其他办法吗?

protected void OnPostprocessModel(GameObject model)
    {
        var renderers = model.GetComponentsInChildren<Renderer>();
        foreach (var renderer in renderers)
        {
            // 默认fbx会引用Lit.mat,会引起ab包冗余,导入时去掉
            foreach (var material in renderer.sharedMaterials)
            {
                if (material != null && material.name == "Lit")
                {
                    renderer.sharedMaterials = new Material[0];
                }
            }
        }

        // 去掉fbx默认自带的材质球
        ModelImporter importer = (ModelImporter)base.assetImporter;
        if (importer != null)
        {
            if (importer.materialImportMode != ModelImporterMaterialImportMode.None)
            {
                importer.materialImportMode = ModelImporterMaterialImportMode.None;
                importer.SaveAndReimport();
            }
        }
    }

  

针对以上问题,有经验的朋友欢迎转至社区交流分享:
https://answer.uwa4d.com/question/65aa21893625c22cffcb1ddd


AssetBundle

Q:Unity出AAB包(PlayAssetDelivery)模式下加载资源过慢问题。

环境:Unity 2021.3.32f1 ,Google工具使用的是com.google.play.assetdelivery-1.7.0版本。

1. 使用PlayAssetDelivery自定义模式下把AssetBundle分成了3个包:InstallTimePack(840mb)、FastFollowPack(430mb)、OnDemand(100mb)。

2. 打包完后使用7z压缩工具查看包体发现资源被进行了压缩。

 

 

3. 尝试在mainTemplate.gradle和launcherTemplate.gradle的AaptOptions中的noCompress中添加assetbundle的后缀(.ab),未解决问题。

4. 在Google打包工具中发现BundleToolHelper中可以添加未压缩匹配字符列表,进行添加:

"assets/**/*.ab","**/*.ab","assets/**"

  

 

添加完成后打包后仍未解决。

A:解决办法:
https://www.cnblogs.com/wangle/p/15440176.html

加载AssetBundle不使用官方的接口:

 

直接自己拼接出来路径进行加载即可:

 

assetPackFilePath:这个路径会变,所以我在资源包下载完毕后,根据资产包里肯定会存在的一个资产调用PlayAssetPackRequest.GetAssetLocation()获取AssetLocation对象,AssetLocation.Path是资产包的路径。

感谢题主白小白@UWA问答社区提供了回答


Shader

Q:现在将项目中使用的所有Shader打到一个AssetBundle里,svc收集材质用到的变体。但是在打包时发现一些URP官方的keyword丢失了,例如我在PipelineRenderer里开启了forward+,在Shader里定义了forward+相关keyword,那么应该在打包时会有这个keyword,但通过调试发现在OnProcessShader接口获取到的所有变体里都没有_FORWARD_PLUS这个keyword。但是如果完整打一个win64的包,却不会丢失这个keyword。

现在希望每次修改Pipeline文件的功能(例如开启forward+、开启主光阴影)时,将所有Shader打到一个AB包,都不会丢失这些依赖Pipeline功能的keyword(_FORWARD_PLUS、_MAIN_LIGHT_SHADOWS),请问正确的做法是怎样?

我自己测试了很久,也在网上找搜索过,或是删除Library/ShaderCache文件夹都不能解决,希望有经验的大佬能解答一下。

A:把URP自带的Shader用到的材质和变体集合放一起打一个包试试,我打HDRP也遇到过。

感谢萌呆瞎@UWA问答社区提供了回答


Lua

Q:目前项目中使用XLua,Lua文件一般是每个Lua文件都打一个AB包,还是所有Lua都打一个AB包里?直观感觉上每个Lua都单独打一个AB包比较方便热更新。

A1:打一个Bundle,然后发生过变化的Lua做一个单独的Patch Lua Bundle。加载Lua文件的时候先读Patch Lua Bundle再读Base包Bundle。

感谢zzzzT@UWA问答社区提供了回答

A2:一般都是打一个包,Lua代码不大但文件多,每个都打IO开销会更大。

感谢王林@UWA问答社区提供了回答

封面图来源于网络


今天的分享就到这里。生有涯而知无涯,在漫漫的开发周期中,我们遇到的问题只是冰山一角,UWA社区愿伴你同行,一起探索分享。欢迎更多的开发者加入UWA社区。

UWA官网:www.uwa4d.com
UWA社区:community.uwa4d.com
UWA学堂:edu.uwa4d.com
官方技术QQ群:465082844

标签:社区,keyword,FBX,shader,Shader,Lit,Lua,UWA
From: https://www.cnblogs.com/uwatech/p/18000793

相关文章

  • Unity shader实现水波的技术原理
    Unityshader是Unity引擎中非常重要的一个部分,它可以用来实现各种各样的特效效果,其中包括水波效果。本文将详细讲解Unityshader实现水波的技术原理,并给出相关的Shader代码实现。对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习游戏的零基础小白,也有一些正在从事游戏......
  • CF138A Literature Lesson
    原题传送门分析既然题目要求求出所有四行诗共同的形态,那我们就想到可以用位运算。我们用二的次方来表示每一种形态,然后把每一篇诗的形态或起来,就可以得到最终的形态。输出的时候再拿个函数转一下就行了。有了基本框架,我们就可以开始构造特殊情况。题目中说到如果有aaaa这种......
  • A Literature Survey about Why Is Prompt Tuning for Vision-Language Models Robust
    I.SummaryOverviewBackground:Avision-languagemodelcanbeadaptedtoanewclassificationtaskthroughfew-shotprompttuning.Wefindthatsuchaprompttuningprocessishighlyrobusttolabelnoises.Interest:Studyingthekeyreasonscontributing......
  • Authentication vulnerabilities
    身份验证漏洞从概念上讲,身份验证漏洞很容易理解。但是,由于身份验证和安全性之间存在明确的关系,它们通常至关重要。身份验证漏洞可能允许攻击者访问敏感数据和功能。它们还暴露了额外的攻击面,以便进一步利用。因此,了解如何识别和利用身份验证漏洞以及如何绕过常见的保护措施非常重......
  • QSplitter 分割 组件之setStretchFactor方法
    原型:voidQSplitter::setStretchFactor(intindex,intstretch)翻译:将索引位置的部件的大小策略更新为具有拉伸因子stretch。stretch不是实际的拉伸因子;实际的拉伸因子是通过将部件的初始大小乘以stretch来计算的。根据实际情况可知,如果俩个控件默认大小一样,若下标0的拉伸因......
  • close annoying "--no-check-certificate" of wget utility
    如果想使用alias:aliaswgetncc='wget--no-check-certificate'请往下看:Trythis:(assumes*nix)echo"check_certificate=off">>~/.wgetrcTheneverafter,wgetwillactlikeyouspecifiedthe--no-check-certificateswitch.Moreinfoat......
  • 警惕!!券商EliteStrategies疑似存在跑路行为,其平台存在巨大风险!!
    最新消息,券商EliteStrategies在要懂汇交易商监管查询网站上,评分低至1.25分,是一家澳大利亚外汇和差价合约经纪商。该券商在网上的曝光风评褒贬不一,近日又有投资人评论称:“自己的账户在数周未登录,账户被禁止了”。目前EliteStrategies官网现状!!官网一:已经无法打开官网二:正常运行监管牌......
  • Shader实现模糊效果
    模糊效果一直是游戏当中用的比较多的,比如一些景深啊,FPS游戏震屏时的模糊,还有些剧情跳转都用到了模糊效果。我们在unity中可以使用Shader来处理模糊效果。一般我们有两种模糊方式,一种是比较简单直接的均值模糊,一种是比较高级当然也有些难度的高斯模糊。简单方式有它的缺陷,难的方式......
  • IEqualityComparer接口实现对象去重
    //Licensedtothe.NETFoundationunderoneormoreagreements.//The.NETFoundationlicensesthisfiletoyouundertheMITlicense.//SeetheLICENSEfileintheprojectrootformoreinformation.usingSystem;usingSystem.Collections;usingSyste......
  • Unity5.x shader打包AssetBundle总结
    unity5.x  shader打包AssetBundle总结最近比较忙,好久没有更新博客了,新项目切换到unity5.x后使用了新的打包机制,在打包shader的时候遇到了一些问题,这里来记录一下吧。 在上一个项目中,我们使用unity4.7,对于shader并没有进行依赖打包,而是由unity打包到了每个用到的AssetBundle......