微信扫一扫 分享朋友圈

已有 1626 人浏览分享

开启左侧

【转载】Unity Spine插件使用

[复制链接]
1626 0

Unity Spine插件使用 Spine是针对游戏开发的2D骨骼动画。Unity本身并不支持播放spine文件需要安装 Unity Spine插件才能支持。

Spine插件下载安装 Spine插件可以再Spine官方文档中找到.

注意:需要确保spine-unity组件包与美术使用的Spine版本能对应上。如果版本无法对应上可能无法正常使用。 版本文件可以在Spine插件目录下的version.txt找到。 文件内容大概如下:

This Spine-Unity runtime works with data exported from Spine Editor version: 3.8.xx Package version: spine-unity-3.8-2020-10-28.unitypackage

Spine资源导入 Spine资源在导出的时候可以选择 Json 格式或者二进制格式。在导出的时候需要进行一些设置,否则需要在SkeletonDataAsset中手动拖拽Skeleton JSON和Atlas Assets.

Json导出 使用Json导出默认是会产生 .png .json .atlas 这三个文件。 由于Spine插件无法正常识别到.atlas 文件所以我们需要在导出时设置其后缀名为 .atlas.txt(手动改也是可以的)。

二进制导出 二进制导出和上面的类似,会生成 .png .skel .atlas 这三个文件。为了方便Spine插件识别我们需要将其变更为 .png .skel.bytes .atlas.txt 。

按照上面设置完成后就可以直接从文件夹中拖放到 Unity 的 Project 窗口。

注意:以二进制格式而不是JSON格式导出,会使文件体积更小,加载更快.

Spine资源导入源码 Spine插件中的 SpineEditorUtilities 这个类继承自 AssetPostprocessor. 这样会在我们进行资源导入的时候触发对应函数。 我们可以看到spine插件是在所有资源被导入后调用。

public partial class SpineEditorUtilities : AssetPostprocessor {
    // ...
    // Auto-import post process entry point for all assets
    static void OnPostprocessAllAssets (string[] imported, string[] deleted, string[] moved, string[] movedFromAssetPaths) {

        // ...
        AssetUtility.HandleOnPostprocessAllAssets(imported, texturesWithoutMetaFileCopy);

        // ...
    }
}

然后在 AssetUtility 这个类中对文件的后缀名进行了处理。 可以从源码看到Spine插件会根据后缀名来识别到是否要进行加载. 我们也可以修改代码来匹配我们需要的后缀名(虽然不太推荐)。

public static class AssetUtility {
    // ...
    public static void ImportSpineContent (string[] imported, List<string> texturesWithoutMetaFile,
    bool reimport = false) {

    // ...

    foreach (string str in imported) {
        string extension = Path.GetExtension(str).ToLower();
        switch (extension) {
            case ".atlas":
                if (SpineEditorUtilities.Preferences.atlasTxtImportWarning) {
                    Debug.LogWarningFormat("`{0}` : If this file is a Spine atlas, please change its extension to `.atlas.txt`. This is to allow Unity to recognize it and avoid filename collisions. You can also set this file extension when exporting from the Spine editor.", str);
                }
                break;
            case ".txt":
                if (str.EndsWith(".atlas.txt", System.StringComparison.Ordinal))
                    atlasPaths.Add(str);
                break;
            case ".png":
            case ".jpg":
                imagePaths.Add(str);
                break;
            case ".json":
                var jsonAsset = AssetDatabase.LoadAssetAtPath<TextAsset>(str);
                if (jsonAsset != null && IsSpineData(jsonAsset, out compatibilityProblemInfo))
                    skeletonPaths.Add(new PathAndProblemInfo(str, compatibilityProblemInfo));
                break;
            case ".bytes":
                if (str.ToLower().EndsWith(".skel.bytes", System.StringComparison.Ordinal)) {
                    if (IsSpineData(AssetDatabase.LoadAssetAtPath<TextAsset>(str), out compatibilityProblemInfo))
                        skeletonPaths.Add(new PathAndProblemInfo(str, compatibilityProblemInfo));
                }
                break;
        }
    }

    // ...
}
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

0

关注

0

粉丝

12

主题
精彩推荐
热门资讯
网友晒图
图文推荐
  • iOS App

  • 安卓App

Archiver|手机版|小黑屋|技你太美101

GMT+8, 2024-11-21 16:38 , Processed in 0.144822 second(s), 30 queries .

Powered by 技你太美101

© 2024 JNTM101 Team