首页 > 其他分享 >使用SBP打AssetBundle时脚本引用丢失

使用SBP打AssetBundle时脚本引用丢失

时间:2024-09-23 16:48:12浏览次数:7  
标签:SBP 社区 AssetBundle UI 丢失 UWA uwa4d

1)使用SBP打AssetBundle时脚本引用丢失
2)在UE 5.3中连接Power节点为何10的3次幂等于1009
3)如何在Widget中倾斜一张纹理贴图
4)如何在打开关卡蓝图时更改游戏模式


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

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

AssetBundle

Q:最近项目实验升级ScriptableBuildPipeline打包AssetBundle(之前使用的是Built-in构建管线)。使用的Unity为2022.3,SBP版本为2.1.4。

结果发现打出的UI AssetBundle中,部分NGUI的脚本丢失引用了,丢的最多的是UIButton。但也不是所有UI都会丢失,有的就正常,Built-in管线打包也正常。

真机上加载资源的时候会报错:
Error: A scripted object (script unknown or not yet loaded) has a different serialization layout when loading. (Read 32 bytes but expected 8136 bytes)

Did you #ifdef UNITY_EDITOR a section of your serialized properties in any of your scripts?

UnityEngine.AssetBundle:LoadAsset(String)

使用AssetStudio解包AssetBundle,发现脚本的m_PathId为0。这可能是哪儿的问题?

 

 

A:后续:
针对出问题的文件单独导出独立工程Demo去调试。发现出问题的情况是AssetBundle的引用也包含了相同的脚本且这个引用也是打AssetBundle的,应该是递归引用的时候出问题了。

解决方案:

  1. 设置SBP中BuildParameters的NonRecursiveDependencies为false。
    修改方法:
    a. 将Library\PackageCache夹子下SBP的组件移动到Packages下变为本地组件,即可编辑代码。
    b. 使用SBP非兼容模式接口构建,new出BuildParameters,然后可修改此属性。
  1. 将脚本信息都写入到一个独立的Bundle中,这样所有Bundle都引用它即可,这种方式需要启用CreateMonoScriptBundle。
    修改方法:
    在SBP组件中的DefaultBuildTasks脚本Create接口内
    return AssetBundleCompatible(false, true);

感谢题主mr.Tian@UWA问答社区提供了回答


Script

Q:在UE 5.3中,我连接Power节点计算10的3次幂,得到的结果是1009,这是为什么呢?

 

A:幂函数计算非常慢,因此会使用近似值来加快计算速度,所以可能会出现这种情况。可以改用Multiply多次相乘计算结果,或者用Material Expression Custon输入公式进行计算,手动造一个计算节点。

 

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


UI

Q:我想在Widget中倾斜一张纹理,就像Photoshop中的效果那样,有什么方法可以做到吗?

 

A:可以使用材质蓝图实现,基本原理是调整UV来实现倾斜的效果。也可以直接下载UE官方项目UI Material Lab,有一个Skew的倾斜材质,核心的实现方式可以重点参考其中名为MF_UI_Skew的Material Function。

 

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


Blueprint

Q:当角色触发On Component Begin Overlap(StaticMesh)时我调用Open Level(by Name)来打开新场景,同时我还想改变游戏模式,例如从BP_ThirdPersonGameMode类型的第三人称视角变为BP_FirstPersonGameMode的第一人称射击游戏,请问该怎么做呢?

A:由于每个关卡都可以在World Setting中设置单独的Game Mode,因此只要设置好在切换场景时切换游戏模式也是很自然的事情。另外可以用Trigger Box直接在关卡蓝图获得OnActorBeginOverlap,比Static Mesh使用更方便。

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

封面图来源于网络


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

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

标签:SBP,社区,AssetBundle,UI,丢失,UWA,uwa4d
From: https://www.cnblogs.com/uwatech/p/18427297

相关文章

  • dnsclientpsprovider.dll文件丢失导致程序无法运行问题
    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个dnsclientpsprovider.dll文件(挑选合适的版......
  • dmwappushsvc.dll文件丢失导致程序无法运行问题
    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个dmwappushsvc.dll文件(挑选合适的版本文件)......
  • dmpushproxy.dll文件丢失导致程序无法运行问题
    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个dmpushproxy.dll文件(挑选合适的版本文件)把......
  • dmoleaututils.dll文件丢失导致程序无法运行问题
    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个dmoleaututils.dll文件(挑选合适的版本文件)......
  • dmloader.dll文件丢失导致程序无法运行问题
    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个dmloader.dll文件(挑选合适的版本文件)把它......
  • 不小心删除了一条短信,或者丢失了所有短信?下面介绍几个方法。
    短信通常都是非正式和无关紧要的,但短信中可能包含非常重要的信息。因此,如果您删除了一些短信以清理iPhone上的空间,却意外删除了一条重要短信,或者清空了iPhone并发现恢复时短信已不复存在,请不要惊慌。您有机会在iPhone上恢复已删除的短信。 这个过程有六种可能的途径,我......
  • 意外删除文件或丢失数据?10大免费数据恢复工具
    意外删除文件或丢失数据可能会非常令人沮丧,尤其是当这些文件很重要时。无论是珍贵的相册、重要的工作文档还是重要的软件文件,丢失数据都会感觉像一场灾难。幸运的是,有很多数据恢复工具可以帮助您恢复丢失的文件。最好的部分是什么?其中许多工具都是免费提供的!在本文中,我们将探......
  • 致态长江存储固态硬盘正常使用,突然损坏数据丢失修复
    当致态长江存储固态硬盘在正常使用过程中突然损坏导致数据丢失时,可以尝试以下几种修复和恢复方法:一、检查与初步诊断1.检查连接与电源:确保固态硬盘的连接线插紧,接口无松动或氧化。检查电源供应是否稳定,避免电源问题导致的损坏。2.使用系统工具检查:在Windows系统中,可以通过右击SSD驱......
  • 致态长江存储固态硬盘正常使用,突然损坏数据丢失修复
    当致态长江存储固态硬盘在正常使用过程中突然损坏导致数据丢失时,可以尝试以下几种修复和恢复方法:一、检查与初步诊断1.检查连接与电源:确保固态硬盘的连接线插紧,接口无松动或氧化。检查电源供应是否稳定,避免电源问题导致的损坏。2.使用系统工具检查:在Windows系统中,可以通过右......
  • 消息队列:如何确保消息不会丢失?
    引言对业务系统来说,丢消息意味着数据丢失,这是无法接受的。主流的消息队列产品都提供了非常完善的消息可靠性保证机制,完全可以做到在消息传递过程中,即使发生网络中断或者硬件故障,也能确保消息的可靠传递,不丢消息。绝大部分丢消息的原因都是由于开发者不熟悉消息队列,没有正......