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的,应该是递归引用的时候出问题了。<br/>
解决方案:
- 设置SBP中BuildParameters的NonRecursiveDependencies为false。
修改方法:
a. 将Library\PackageCache夹子下SBP的组件移动到Packages下变为本地组件,即可编辑代码。
b. 使用SBP非兼容模式接口构建,new出BuildParameters,然后可修改此属性。<br/>- 将脚本信息都写入到一个独立的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
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。