diff --git a/Assets/Editor/Window/AnimationClipData.cs b/Assets/Editor/Window/AnimationClipData.cs index 10e632702..ab5b64739 100644 --- a/Assets/Editor/Window/AnimationClipData.cs +++ b/Assets/Editor/Window/AnimationClipData.cs @@ -74,8 +74,6 @@ namespace AibisDream.SystemEditor public AsepriteSize size; public string scale; public List frameTags; - public List layers; - public List slices; } // Aseprite JSON的包装类(因为Unity JsonUtility不支持Dictionary) diff --git a/Assets/Editor/Window/AnimationClipGeneratorCore.cs b/Assets/Editor/Window/AnimationClipGeneratorCore.cs index b11bb081c..a275d8160 100644 --- a/Assets/Editor/Window/AnimationClipGeneratorCore.cs +++ b/Assets/Editor/Window/AnimationClipGeneratorCore.cs @@ -2,6 +2,7 @@ using System; using System.Collections.Generic; using System.IO; using System.Linq; +using System.Text.RegularExpressions; using UnityEditor; using UnityEditor.U2D.Sprites; using UnityEngine; @@ -57,8 +58,7 @@ namespace AibisDream.SystemEditor int metaBraceEnd = FindMatchingBrace(jsonContent, metaBraceStart); string metaJson = jsonContent.Substring(metaBraceStart, metaBraceEnd - metaBraceStart + 1); - // 移除可能的尾随逗号 - metaJson = metaJson.TrimEnd(',', ' ', '\n', '\r'); + metaJson = SanitizeJsonForUnity(metaJson); AsepriteMeta meta = JsonUtility.FromJson(metaJson); @@ -173,7 +173,7 @@ namespace AibisDream.SystemEditor try { - AsepriteFrameInfo frameInfo = JsonUtility.FromJson(frameDataJson); + AsepriteFrameInfo frameInfo = JsonUtility.FromJson(SanitizeJsonForUnity(frameDataJson)); if (frameInfo.frame != null) { frames.Add(new FrameData @@ -215,6 +215,14 @@ namespace AibisDream.SystemEditor return int.MaxValue; // 如果无法解析,放在最后 } + /// + /// Unity JsonUtility 不支持尾随逗号,Aseprite 导出时偶尔会带上。 + /// + private static string SanitizeJsonForUnity(string json) + { + return Regex.Replace(json, @",(\s*[}\]])", "$1"); + } + private static int FindMatchingBrace(string str, int startIndex) { if (startIndex < 0 || startIndex >= str.Length) return -1;