前情提要: 如果你的美术没有买正版spine的经济实力或者需求或者其他什么什么的理由 并且用的spine版本是3.8.75
那么恭喜你🎉 那你就得下spine-unity3.8了 因为没有什么spine-unity3.8.75这个unitypackage包
然后你就会遇到一堆问题 然后头就大了 所以我把这些可能遇到的问题给踩了一遍 如果你也遇到了 那么希望这个blog对你有帮助
这是一张吊图(美术发给我的 看完我欣慰的笑了)
问题1:
导入spine文件之后然后你点击了一下这个spine的SkeletonData 然后发现Inspector里面没法预览这个spine
就像这样
这是由于你美术发过来的spine里面的版本号是3.8.75 而你的spine-unity是3.8导致的 所以要去把
这个.json文件里面"spine": “3.8.75”
改成"spine": “3.8”
(前提是你的美术是用json格式导出的)
然后再去看这个spine的预览就有东西了
好了这个问题算是解决了 你可以让美术在导出之后就把这个改了 或者 你自己改
但后面我会给出一个批处理小脚本来解决改版本问题
问题2:
批量导入spine文件时SkeletonData有的没了有的还有
这个问题目前没法解决 我不到 就是这样 没法 所以一个一个导入把 可恶啊
问题3:
批量改版本小脚本
using System.IO;
using System.Text;
using UnityEditor;
using UnityEngine;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
public class ChageSpineVersion
{
[MenuItem("杂鱼工具~~~/ChageSpineVersion", false, 2)]
private static void ChageSpineVersion_()
{
// 这里的路径是你放spine的路径
string[] files = Directory.GetDirectories(Application.dataPath + "/Resources/Art/Spine");
foreach (string item in files)
{
Change(Directory.GetFiles(item));
}
}
/// <summary>
/// 改变.json文件里面spine版本
/// </summary>
/// <param name="p_files"></param>
public static void Change(string[] p_files)
{
foreach (string item in p_files)
{
if (item.EndsWith(".json"))
{
// 我这里用的是Newtonsoft来操作json文件你可以用其他的
JObject jo = JObject.Parse(File.ReadAllText(item, Encoding.UTF8));
JToken jt = jo["skeleton"]["spine"];
if (jt != null && jt.Type == JTokenType.String && jt.ToString() != "3.8")
{
jo["skeleton"]["spine"] = "3.8";
File.WriteAllText(item, JsonConvert.SerializeObject(jo, Formatting.Indented));
}
}
}
AssetDatabase.Refresh();
Debug.Log("Spine版本改变完成!!!");
}
}
所以唯一麻烦的是不能批量导入spine 所以愿天下没有用spine3.8.75的美术🙏🙏🙏(嘛 其实也没怎么 但就是挺麻烦的)