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

news2024/9/24 13:20:51

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


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

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输入公式进行计算,手动造一个计算节点。

针对以上问题,有经验的朋友欢迎转至社区交流:
UWA问答 | 游戏开发者互动问答社区 | 侑虎科技


UI

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

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

针对以上问题,有经验的朋友欢迎转至社区交流:
UWA问答 | 游戏开发者互动问答社区 | 侑虎科技


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使用更方便。

针对以上问题,有经验的朋友欢迎转至社区交流:
UWA问答 | 游戏开发者互动问答社区 | 侑虎科技

封面图来源于网络


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

UWA官网:www.uwa4d.com
UWA社区:community.uwa4d.com

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2160441.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

uni-app快速入门

目录 一、什么是 uni-app二、快速创建 uni-app 项目1.创建 uni-app2.运行 uni-app 三、uni-app 相对传统 H5 的变化1.网络模型的变化2.文件类型变化3.文件内代码架构的变化4.外部文件引用方式变化5.组件/标签的变化6.js的变化(1)运行环境从浏览器变成v8引…

MCU自动测量单元采集振弦式应变计测值的过程

振弦式应变计是一种广泛应用于土木工程、地质勘探等领域的高精度传感器,用于测量结构的应变变化。近年来,随着微控制器单元(MCU)的发展,自动化测量技术得到了极大的提升,使得振弦式应变计的测值采集更加高效和精确。本文将详细介绍…

关于 mybatis-plus-boot-starter 与 mybatis-spring-boot-starter 的错误

不是知道你是否 出现过这样的错误 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): 经过各种度娘,无非就是让你检查三种情况 情况一:mapper.xml没有按照传统的maven架构进行放置 情况二:mybatis的配置信…

C语言实现简单凯撒密码算法

**实验2:传统密码技术 【实验目的】 通过本次实训内容,学习常见的传统密码技术,通过编程实现简单代替密码中的移位密码算法,加深对传统密码技术的了解,为深入学习密码学奠定基础。【技能要求】 分析简单代替密码中的移…

R语言机器学习遥感数据处理与模型空间预测技术及实际项目案例分析

随机森林作为一种集成学习方法,在处理复杂数据分析任务中特别是遥感数据分析中表现出色。通过构建大量的决策树并引入随机性,随机森林在降低模型方差和过拟合风险方面具有显著优势。在训练过程中,使用Bootstrap抽样生成不同的训练集&#xff…

LeetCode 每日一题 ---- 【2207. 字符串中最多数目的子序列】

LeetCode 每日一题 ---- 【2207. 字符串中最多数目的子序列】 2207.字符串中最多数目的子序列方法:贪心 一次遍历 2207.字符串中最多数目的子序列 方法:贪心 一次遍历 从题意中可以看出来,对于 pattern.charAt(0) 一定是插入到最左侧是最优…

什么是SSL证书?它能保护你的网络安全!

相信大家在浏览网页时经常会看到一些网址前面有个“小锁”图标,它代表的网站是安全的,而这背后的秘密就是SSL证书。那SSL证书到底是什么?它有什么用呢? 什么是SSL证书? SSL证书的全称是Secure Sockets Layer证书&…

php发送邮箱教程:如何实现邮件发送功能?

php发送邮箱性能优化策略?怎么使用PHPMail发送邮箱? 无论是用户注册验证、密码重置,还是系统通知,邮件发送都是不可或缺的一部分。AokSend将详细介绍如何使用PHP实现邮件发送功能,帮助开发者快速掌握这一技能。 php发…

高效驱动,掌控动力:TB67H400AFNG 马达驱动器

在如今智能设备和自动化应用领域中,驱动器的性能直接决定了系统的可靠性与效率。东芝的TB67H400AFNG有刷直流马达驱动器凭借其卓越的性能,成为众多行业解决方案中的关键部件。无论是工业控制、自动化设备还是消费类电子产品,TB67H400AFNG都能…

一小时拿下鸿蒙应用开发者高级证书!(二)

鸿蒙应用开发者高级认证,是华为自家研发的硬核操作系统,现在它在市场上的名声也越来越响亮。你手上要是有了鸿蒙的认证小本本,那就等于是掌握了这行里的独门秘籍,找工作的时候,妥妥的加分项。 一个小时刷刷题&#xf…

玩机进阶教程----MTK芯片杂牌机 小品牌机型以及其他mtk设备导出分区的另外一种方法解析

在前面多期博文中都是通过工具来导出分区 制作线刷包的。今天我们以另外一种方法备份系统分区。mtk芯片较多。具体机型适合哪种方法需要自测。多种方法多条思路。遇到机型善用工具。目前一些wifi网卡 点读笔以及有些其他mtk芯片设备。通常分区都较小。可以参考教程 通过教程了…

amr文件怎么转换成mp3?这几种方法超多人在用!

amr文件怎么转换成mp3?AMR音频格式,作为音频领域的一个相对边缘角色,其应用范围相对狭窄,这背后深藏着多重内在限制,首要挑战在于AMR的音质瓶颈,它难以逃脱声音失真与杂音干扰的阴影,这对于追求…

通过企业微信群机器人 发送群消息

1、添加群机器人,复制的webhook地址 2、 public static void main(String[] args) { String reqUrl "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key6xdexxxxxxxxxxxxxxxxxxxxxxxxxxx"; String title "填…

数据结构 - 查找算法

一.查找的概念 二.顺序表查找 特点: 1.记录的数据可以是无序的 2.当数据量较大时,查找效率低,需要依次遍历 /*** description: 顺序表查找算法,从后往前查找* param - a : 要操作的数组的指针* param - k…

OpenCV_自定义线性滤波(filter2D)应用详解

OpenCV filter2D将图像与内核进行卷积,将任意线性滤波器应用于图像。支持就地操作。当孔径部分位于图像之外时,该函数根据指定的边界模式插值异常像素值。 卷积核本质上是一个固定大小的系数数组,数组中的某个元素被作为锚点(一般…

安霸cv22平台移植采坑记录

主要分为3部分: 1.数据输入部分: 1.因原始测试代码只是单张测试图片(测试格式:安霸平台离线转的bin文件),现在的问题是:如何输入数据流?会不会涉及到字节对齐问题,如何…

ROS第六梯:ROS+VSCode+C++消息发布和订阅

第一步:创建ROS工作空间,并在工作空间下创建名为srr_pkg的功能包,具体步骤参考第二章。 第二步:在src下创建publisher.cpp作为发布节点代码文件,创建subscriber.cpp作为订阅节点代码文件: 主要步骤是&#…

这几个方法轻松压缩ppt文件大小,操作起来很简单的压缩PPT方法

这几个方法轻松压缩ppt文件大小。在当今信息化迅速发展的时代,PPT已成为工作和学习中必不可少的工具。然而,随着内容的增加,文件体积常常变得庞大,影响了分享和传输的便利性。过大的文件不仅占用存储空间,还可能导致演…

Nat Med|机器学习+高通量筛选,发现用于治疗胶质母细胞瘤的神经活性药物|顶刊精析·24-09-23

小罗碎碎念 今日顶刊:Nat Med 这篇文章是2024-09-20发表在《Nature Medicine》上的一篇研究型论文,标题为“High-throughput identification of repurposable neuroactive drugs with potent anti-glioblastoma activity”。 先打个提前量,发…

Java刷题知识总结(一)

1.局部变量参与运算前是必须要初始化的,比如下面的代码就会编译出错,提示y必须要初始化。 public static void main(String[] args) {int x 1;int y;int z x y; } 2.ArrayList和Vector主要区别是什么? A Vector与ArrayList一样&#xf…