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 JSONAtlas 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 assetsstatic 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;}}// ...
}

Unity Spine插件使用相关推荐

  1. MMD的unity导入插件

    2019独角兽企业重金招聘Python工程师标准>>> 存在一个mmd模型的unity导入插件: 导入了mmd的物理,将模型每个部位通过 custom的joint进行连接,设定物理属 ...

  2. Unity Spine SkeletonGraphic 动画重复播放 过度残影透明渐变Bug 解决方案

    Unity Spine SkeletonGraphic 动画重复播放 过度残影透明渐变Bug 解决方案 不推荐使用SetToSetupPose和Setup Pose相关,代码直接贴上 /// < ...

  3. 使用加密锁加密Unity工程插件源码

    使用加密锁加密Unity工程插件源码 最近在unity3D中开发了一款插件,需要卖给客户,但是公司需要隐藏插件的源码,而且保证客户只有指定的电脑才能使用该插件开发!针对这个问题,分为两个步骤:1.隐藏 ...

  4. Unity网页插件Embedded Browser(ZFBrowser)打包文件无法加载本地网页或网站网址解决方法

    Unity网页插件Embedded Browser(ZFBrowser)打包文件无法加载本地网页或网站网址解决方法 问题:最近使用ZFBrowser开发VR嵌入网页发现出现一个问题,在编辑器模式下场景 ...

  5. Unity常见插件汇总

    Unity常见插件汇总 介绍 收集了相关的Unity插件,供大家学习使用,如果用于商业活动,请购买相关版权 插件列表 1. A* Pathfinding Project 一个功能强大并且易于使用的 U ...

  6. unity spine动画渐变效果(UGUI及fairyGUI )

    unity spine动画渐变效果(UGUI及fairyGUI ) 查阅了一些资料,大部分都是直接去修改整个动画的alpha值.比如说spine动画默认shader为 更改成,此时修改shader的a ...

  7. Unity 常用插件

    Unity 常用插件 1.NGUI,算是最常用的UI插件了,下载地址:https://download.csdn.net/download/xiaoyaoACi/21028754 2.FingerGe ...

  8. unity spine 进阶使用

    在项目实践中,我们常常遇到收集金币,钻石等这样的特效需求,最初我们也是全靠代码实现,效果总是差点,偶然和我们动画师聊天确定了一种新的实现方案. 大概流程是动画师在spine软件中实现炸金币+飞金币的过 ...

  9. Unity 编辑器插件-快速删除组件

    尊重原著:(1条消息) Unity 编辑器插件-快速删除组件_unity 删除组件_菜菜ANY的博客-CSDN博客 实现删除所选物体及子物体中指定组件.自动apply 同时考虑一个物体上挂在多个相同组 ...

最新文章

  1. 【Science】CMU机器学习系主任:八个关键标准判别深度学习任务成功与否
  2. [算法学习] 线段树,树状数组,数堆,笛卡尔树
  3. 【SVM】通过SVM对数据进行训练和分类测试,matlab仿真
  4. Android App Build Workflow
  5. 207. Course Schedule 课程表
  6. 再多迷茫,不如静下来好好学习
  7. collections模块之namedtuple
  8. Civil 3D 二次开发 新建CLR项目出现错误C2143
  9. Tasty项目经验总结(不断补充中)
  10. 移动应用android简单播放器,打造移动掌上影院 Android播放器横评
  11. 2022.3.14 阿里笔试
  12. Bluecoat代理设备维护手册
  13. react上拉加载更多
  14. 二维码扫描+长按识别二维码demo
  15. 小程序的发布上线流程
  16. 鲁棒与最优控制(一)
  17. php 结合md5的加密,解密方法
  18. 《数理统计》王晓光答案
  19. 1813 方块游戏(枚举)
  20. Linux快捷键不能调节亮度,Linux(Ubuntu)无法调节亮度的终极解决方案(还原Fn组合键调节方法...

热门文章

  1. STL(模板库)(string)(vector向量)(2019.3.19晚课习题)
  2. 支付宝又杀疯了!!!
  3. 是谁在我的心里打了个结(十三)七天
  4. laf.js - 开源的云开发框架(README.md)
  5. 微信小程序自定义搜索框(searchbar)
  6. CPU的RISC和CISC架构的区别
  7. 自建CDN防御DDoS(2):架构设计、成本与部署细节
  8. threshold 阈值
  9. xp查找win10工作组计算机,主编教您win10系统加入xp工作组的方法
  10. 腾讯阿里小米红包哪家强,这里有最强抢包攻略