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


修改思路:因为未找到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()
{