【Unity编辑器扩展实践】升级Unity2021版本后新加图片打图集异常

文章描述了在Unity从2018版升级到2021版后,遇到图集中的图片内部ID变为0,进而影响Prefab保存图片信息的情况。作者提出了一个修改策略,通过遍历和修改Sprite的内部ID和SpriteID,使用自定义的GUID生成方式,更新meta文件来修复这个问题。代码示例提供了具体的实现步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题: Unity2018升级到Unity2021后,打图集时新增图片的internalID为0(图1),左边是未修改之前的meta文件信息。导致将图片推拽到预制之后,预制没有正确保存图片信息(图2),游戏运行后加载预制图片为空。

版本:Unity 2018.4.36f1  升级到 Unity 2021.3.19f1

图集工具:TexturePacker

图1、图片meta修改前后对比
图2、预制修改前后对比

 修改思路:因为未找到InternalID为0的具体原因,所以在准备修改该internalID。在图集数据生成之后,遍历Sprite,如果m_SpriteID为00000000000000000800000000000000,用GUID.Generate()生成一个m_SpriteID。如果m_InternalID为0,用m_SpriteID.GetHashCode()生成一个m_InternalID。循环遍历修改过的SerializedProperty,修改m_InternalIDToNameTable和nameFileIdTable,保存meta文件。

具体代码:

private static void DoApply()
    {
       
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值