关于AssetBundle禁用TypeTree之后的一些可序列化的问题

news2024/9/25 1:21:23

1)关于AssetBundle禁用TypeTree之后的一些可序列化的问题
2)启动Unity导入变动的资源时,Singleton ScriptableObject 加载不到
3)Xcode15构建Unity 2022.3的Xcode工程,报错没有兼容的iPhone SDK


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

AssetBundle

Q:如果AssetBundle禁用了TypeTree,Unity在加载的时候会对其引用的脚本进行“签名”校验(Property Hash和FulIName),而包内的脚本信息只在打包的时候生成,并不能直接更新。因此,在禁用TypeTree的时候,貌似不能对可序列化脚本进行变动更新。

于是,想要咨询两个问题:
1、包内的脚本“签名”信息存放在哪里,存放了什么内容? 猜测是在assets/bin/Data,但具体的位置与内容不清楚。

2、能否在禁用TypeTree的情况下实现可序列化脚本的变化更新(自行保证代码与资源一致)。

A:1、脚本“签名”信息是存在MonoScript上,保存了Assembly、Namespace、Class的名称,以及它的可序列化字段的Hash128,用AssetStudio可以看到。

2、在支持热更动态库的平台上(安卓)直接热更libil2cpp.so及元数据应该就可以。若寻求通用方案,恐怕要上HybridCLR这种深度定制IL2CPP的方案,因为引擎需要使用IL2CPP的API以类似反射的方式获取脚本的可序列化字段。

注意:HybridCLR对禁用TypeTree的情况参考以下说明:
MonoBehaviour支持 | HybridCLR

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


Asset

Q:当有资源变动时,启动Unity,在导入资源时,Singleton ScriptableObject 加载不到,有解决办法么?

问题出现:
把ScriptableObject封装成单例,当配置文件,在别的资源导入的时候需要读单例配置。

已知现象:
加载不到的原因是当有新资源变化时,Asset Database要等新资源初始化完才能初始化完成,这个阶段,很多东西都加载不上来;Resource接口也是不能用的。

A1:可以参考Spine的做法:
https://github.com/EsotericSoftware/spine-runtimes/blob/b09e189c6438cb9358005771c3304b8f52bc4e30/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Utility/AssetUtility.cs#L114

见这段注释:

public static void HandleOnPostprocessAllAssets (string[] imported, List<string> texturesWithoutMetaFile) {
    // In case user used "Assets -> Reimport All", during the import process,
    // asset database is not initialized until some point. During that period,
    // all attempts to load any assets using API (i.e. AssetDatabase.LoadAssetAtPath)
    // will return null, and as result, assets won't be loaded even if they actually exists,
    // which may lead to numerous importing errors.
    // This situation also happens if Library folder is deleted from the project, which is a pretty
    // common case, since when using version control systems, the Library folder must be excluded.
    //
    // So to avoid this, in case asset database is not available, we delay loading the assets
    // until next time.
    //
    // Unity *always* reimports some internal assets after the process is done, so this method
    // is always called once again in a state when asset database is available.
    //
    // Checking whether AssetDatabase is initialized is done by attempting to load
    // a known "marker" asset that should always be available. Failing to load this asset
    // means that AssetDatabase is not initialized.
    AssetUtility.assetsImportedInWrongState.UnionWith(imported);
    if (AssetDatabaseAvailabilityDetector.IsAssetDatabaseAvailable()) {
        string[] combinedAssets = AssetUtility.assetsImportedInWrongState.ToArray();
        AssetUtility.assetsImportedInWrongState.Clear();
        AssetUtility.ImportSpineContent(combinedAssets, texturesWithoutMetaFile);
    }
}

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

A2:将ScriptableObject序列化(例如json)保存到本地,资源导入时候直接读取本地配置反序列化。

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


Platform

Q:最近不小心升级了Mac的版本,随之Xcode也要求升级到15.0,然而升级后,Unity 2022.3构建的Xcode工程无法构建,报错如下图所示,就是找不到兼容的iPhone SDK,这个问题尝试了很多方法无法解决,求问除了降低版本之外还有没有其他解决方案,万分感谢!

A:建议尝试将/Applications/Xcode.app/Contents/version.plist里的

<key>ProjectName</key>
<string>IDEApplication</string>

改成

<key>ProjectName</key>
<string>IDEFrameworks</string>

我看了下我在2022.3.10f1里的相关逻辑,已经改为判断是否是IDE开头:

确认了下,2022.3.10f1确实有提及对Xcode15兼容的支持:
Unity 2022.3.10

Unity Issue Tracker - Building projects with IL2CPP scripting backend for Apple platforms fails with Xcode 15.0b6 or newer

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

封面图来源于网络


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

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

 

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

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

相关文章

EPSon打印机更换色带

1、打印机色带拆装视频 打印机色带更换 2、色带盒四周有多个卡扣&#xff0c;需从右到左依次轻微用力掰开&#xff0c;使盖板与盒体脱离&#xff0c;注意不要掰断卡扣。 3、如何将色带放入打印机色带盒&#xff1f; A、色带放入盒体时不可打乱打结&#xff0c;以免卡带&#x…

图解Spark Graphx基于connectedComponents函数实现连通图底层原理

原创/朱季谦 第一次写这么长的graphx源码解读&#xff0c;还是比较晦涩&#xff0c;有较多不足之处&#xff0c;争取改进。 一、连通图说明 连通图是指图中的任意两个顶点之间都存在路径相连而组成的一个子图。 用一个图来说明&#xff0c;例如&#xff0c;下面这个叫graph…

合理运用ChatGPT使用Python编写一个桌面便签应用

ChatGPT的编程能力也不差&#xff0c;本次我就一步一步提要求&#xff0c;让ChatGPT根据我的要求&#xff0c;编写出一个可用的&#xff0c;可打包运行的桌面便签。 代码 import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QMenu, QAction, QSystemTrayIco…

通信原理板块——时分复用

微信公众号上线&#xff0c;搜索公众号小灰灰的FPGA,关注可获取相关源码&#xff0c;定期更新有关FPGA的项目以及开源项目源码&#xff0c;包括但不限于各类检测芯片驱动、低速接口驱动、高速接口驱动、数据信号处理、图像处理以及AXI总线等 1、基本概念 复用的目的是为了扩大…

宏集新闻 | 虹科传感器事业部正式更名为宏集科技

致一直支持“虹科传感器”的朋友们&#xff1a; 为进一步整合资源&#xff0c;给您带来更全面、更优质的服务&#xff0c;我们非常荣幸地宣布&#xff0c;虹科传感器事业部已正式更名为宏集科技。这一重要的改变代表了虹科持续发展进程中的新里程碑&#xff0c;也体现了我们在传…

GitHub 报告发布:TypeScript 取代 Java 成为第三受欢迎语言

GitHub发布的2023年度Octoverse开源状态报告发布&#xff0c;研究围绕AI、云和Git的开源活动如何改变开发人员体验&#xff0c;以及在开发者和企业中产生的影响。报告发现了三大趋势&#xff1a; 1、生成式AI的广泛应用&#xff1a; 开发人员大量使用生成式AI进行构建。越来越…

智能座舱架构与芯片- (14) 测试篇 上

一、 验证平台概要 1.1 测试软件方法论 “软件定义汽车” 的时代&#xff0c;软件在整车制造中的重要性日渐凸显。但不同于其他行业的软件开发&#xff0c;汽车行业有自己独特的软件开发要求。首先是需求严谨、需求层次复杂、需要通过专业的工具进行管理&#xff1b;其次开发…

张弛声音变现,如此配音是一场史诗

在给战争剧进行配音的过程中&#xff0c;配音艺术家须突出剧中的紧迫气氛、战斗场面的惊心动魄以及人物的英雄气概。战争剧经常涉及密集的战斗描写、复杂的策略以及角色间深刻的情感纠葛。以下是为战争剧配音时的几点指导思路&#xff1a; 强烈且充满张力的语气 在配音时使用充…

【C++】string类的介绍与使用

&#x1f9d1;‍&#x1f393;个人主页&#xff1a;简 料 &#x1f3c6;所属专栏&#xff1a;C &#x1f3c6;个人社区&#xff1a;越努力越幸运社区 &#x1f3c6;简 介&#xff1a;简料简料&#xff0c;简单有料~在校大学生一枚&#xff0c;专注C/C/GO的干货分…

已完结7个,再启动1个新项目,嘎嘎强!

作者&#xff1a;小傅哥 博客&#xff1a;https://bugstack.cn 沉淀、分享、成长&#xff0c;让自己和他人都能有所收获&#xff01;&#x1f604; 大家好&#xff0c;我是技术UP主小傅哥。 &#x1f490;又到了启动新项目的时候&#xff0c;死鬼开心嘛。小傅哥的星球&#xf…

六大排序详讲(直接插入排序+希尔排序+选择排序+堆排序+冒泡排序+快速排序)

文章目录 排序一、 排序的概念1.排序&#xff1a;2.稳定性&#xff1a;3.内部排序&#xff1a;4.外部排序&#xff1a; 二、插入排序1.直接插入排序2.希尔排序 三、选择排序1.直接选择排序方法一方法二直接插入排序和直接排序的区别 2.堆排序 四、交换排序1.冒泡排序2.快速排序…

C# Onnx 百度PaddleSeg发布的实时人像抠图PP-MattingV2

目录 效果 模型信息 项目 代码 下载 效果 图片源自网络侵删 模型信息 Inputs ------------------------- name&#xff1a;img tensor&#xff1a;Float[1, 3, 480, 640] --------------------------------------------------------------- Outputs -----------------…

梳理一名Go后端程序员日常用的软件~

大家好&#xff0c;我是豆小匠。 这期分享下我日常工作用到的软件和工具&#xff01; 省流版图片↓↓↓ 工具分为四类&#xff1a;编码软件、笔记/文档软件、开发工具和日常软件等。 1. 编码软件 1.1. Goland 出自JetBrain家族&#xff0c;IDE的王者&#xff0c;作为我的…

基于Towers of Binary Fields的succinct arguments

1. 引言 Ulvetanna团队Benjamin E. Diamond和Jim Posen 2023年论文《Succinct Arguments over Towers of Binary Fields》&#xff0c;开源代码见&#xff1a; https://github.com/recmo/binius&#xff08;Rust Sage&#xff09;【基于plonky3等库】 在该论文中&#xff1…

Unity中Shader反射环境

文章目录 前言一、制作反射环境的两种办法法1&#xff1a;属性面板接收一个 Cubemap 作为反射环境法2&#xff1a;把环境烘焙成一张Cubemap 二、在Unity中实现把环境烘焙成一张Cubemap1、先创建一个反射探针&#xff08;可以直接创建&#xff0c;也可以空物体增加组件&#xff…

【giszz笔记】产品设计标准流程【7】

&#xff08;续上回&#xff09; 今天来讨论下产品设计标准流程中&#xff0c;交互设计和视觉设计的内容。 想参考之前文章的&#xff0c;我把链接给到这里。 【giszz笔记】产品设计标准流程【6】-CSDN博客 【giszz笔记】产品设计标准流程【5】-CSDN博客 【giszz笔记】产品…

搭个网页应用,让ChatGPT帮我写SQL

大家好&#xff0c;我是凌览。 开门见山&#xff0c;我搭了一个网页应用名字叫sql-translate。访问链接挂在我的个人博客(https://linglan01.cn/about)导航栏&#xff0c;也可以访问https://www.linglan01.cn/c/sql-translate/直达sql-translate。 它的主要功能有&#xff1a;…

将kali系统放在U盘中插入电脑直接进入kali系统

首先准备一个空白的 U 盘。 Kali Linux | Penetration Testing and Ethical Hacking Linux Distribution 在 Windows 上制作 Kali 可启动 USB 驱动器 Making a Kali Bootable USB Drive on Windows | Kali Linux Documentation 1. 首先下载 .iso 镜像 Index of /kali-images…

释放C盘空间:WinSXS文件夹真实性大小判断及释放占用空间

文章目录 WinSxS文件分析判断WinSxS文件真实大小清理WinSxS文件夹推荐阅读 WinSxS文件分析 组件存储&#xff08;WinSxS 文件夹&#xff09;包含组成 Windows 并允许你操作系统的组件。 这些组件保存在此文件夹中&#xff0c;以防需要回滚更改或修复损坏的文件。 此文件夹中的…

第三方模块远程注入到软件中引发软件异常的若干实战案例分享

目录 1、概述 2、老版本的输入法导致软件CPU频繁跳高&#xff08;导致软件出现卡顿&#xff09;的问题 3、QQ拼音输入法注入到安装包进程中&#xff0c;导致安装包主线程卡死问题 3.1、多线程死锁分析 3.2、进一步研究 4、安全软件注入到软件中&#xff0c;注入模块发生了…