当前位置: 首页 > news >正文

Unity如何使用Spine动画导出的动画

Unity如何使用Spine动画导出的动画

  • 介绍
  • 使用版本
  • Spine导出源文件修改
  • Spine3.8.75版本导入Unity的3.8版本Spine的报错
  • Unity辅助修改Json中版本号方式
  • 总结

介绍

最近公司在做抖音小程序的小游戏,我们这边动画部分使用的是spine动画,所以会有spine导入的问题,这里我正好说一下我目前使用的spine方式和美术导出的格式。

使用版本

这里使用版本也是开始之前必须确定好的事情,因为你如果想要用Unity做抖音小游戏就必须要跟官方的插件控制好版本,我们现在永的是2021.3.14f所以我们也需要配合Spine的版本,Spine我们使用的4.0.64,Unity的插件使用的spine4.0。

Spine下载购买连接
版本要求如下所示 Unity的Spine插件官网以及版本说明
在这里插入图片描述

在这里插入图片描述
这里可以根据上面图或者连接的要求去选择自己对应的版本。

Spine导出源文件修改

在这里插入图片描述
如上图所示这是我们动画导出来的动画文件,这时候我们需要修改一下,需要将后缀.atlas的文件加上一个.txt后缀如下图
在这里插入图片描述

Spine3.8.75版本导入Unity的3.8版本Spine的报错

在这里插入图片描述
如果遇见上面的这个问题我们看一下版本是否是相近的,如果相近的基本上都可以去修改一下json文件解决。

打开json文件如下所示将3.8.75修改为3.8版本即可
在这里插入图片描述
修改完如下即可解决
在这里插入图片描述

Unity辅助修改Json中版本号方式

将如下代码放入到Unity中,之后我们在拖动Spine文件到Unity中则会自动将
“spine”:“3.8.75”
修改为
“spine”:“3.8”

using LitJson;
using System;
using System.IO;
using System.Text;
using UnityEditor;
using UnityEngine;public class SpineImportSetting : AssetPostprocessor
{//任何资源(包括文件夹)导入都会被调用的方法void OnPreprocessAsset(){try{if (!this.assetPath.EndsWith(".json"))return;//先判断是否是 spine 文件string msg = File.ReadAllText(this.assetPath, Encoding.UTF8);JsonData jsonObj = JsonMapper.ToObject(msg);JsonData item = jsonObj["skeleton"]["spine"];if (item != null && item.IsString && item.ToString() != "3.8"){jsonObj["skeleton"]["spine"] = "3.8";//美术破解的 3.8.75 导入会报错string newjson = JsonMapper.ToJson(jsonObj);File.WriteAllText(this.assetPath, newjson);AssetDatabase.Refresh();}}catch (Exception e){Debug.LogError($"SpineImportSetting 异常 {e.Message}");}}void OnPreprocessTexture(){Debug.Log("在纹理导入之前 获取通知");}void OnPostprocessTexture(){Debug.Log("在纹理导入之后 获取通知");}void OnPreprocessModel(){Debug.Log("在模型导入之前 获取通知");}void OnPostprocessModel(){Debug.Log("在模型导入之后 获取通知");}void OnPreprocessAudio(){Debug.Log("在音频导入之前 获取通知");}void OnPostprocessAudio(){Debug.Log("在音频导入之后 获取通知");}void OnPostprocessAllAssets(){Debug.Log("在一些资源被导入后调用(当资源进度条到达末端)");}//所有的资源的导入,删除,移动,都会调用此方法,注意,这个方法是static的public static void OnPostprocessAllAssets(string[] importedAsset, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths){foreach (string str in importedAsset){Debug.Log("importedAsset = " + str);}foreach (string str in deletedAssets){Debug.Log("deletedAssets = " + str);}foreach (string str in movedAssets){Debug.Log("movedAssets = " + str);}foreach (string str in movedFromAssetPaths){Debug.Log("movedFromAssetPaths = " + str);}}
}

需要LitJson的可以点击获取litjson资源链接

总结

上述是我对从Spine到导入Unity的一些相关的我遇到的点,希望能对大家有帮助,也感谢大家的支持!

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • webrtc学习笔记3
  • HTTP的认证方式
  • C# 使用泛型协变性
  • c语言----取反用什么符号
  • qt笔记之纯qml项目详解
  • ant design pro 如何去保存颜色
  • Python 轻量级 Web 应用框架 Flask
  • 练习题 - 探索命名空间和作用域
  • 调试和优化大型深度学习模型 - 5 启动训练命令
  • 8.16-ansible的应用
  • 【区块链+金融服务】基于区块链的供应链金融系统 | FISCO BCOS应用案例
  • 主机ssh连接不上vmware的虚拟机
  • Java算法题——二分查找法
  • MemFire Cloud是否真的可以取代后端
  • 【QT】基于UDP/TCP/串口 的Ymodom通讯协议客户端
  • 【EOS】Cleos基础
  • 230. Kth Smallest Element in a BST
  • axios 和 cookie 的那些事
  • golang中接口赋值与方法集
  • gops —— Go 程序诊断分析工具
  • Java 23种设计模式 之单例模式 7种实现方式
  • java8-模拟hadoop
  • mysql中InnoDB引擎中页的概念
  • PHP那些事儿
  • Python进阶细节
  • Selenium实战教程系列(二)---元素定位
  • Spark学习笔记之相关记录
  • Terraform入门 - 1. 安装Terraform
  • vagrant 添加本地 box 安装 laravel homestead
  • Work@Alibaba 阿里巴巴的企业应用构建之路
  • 多线程 start 和 run 方法到底有什么区别?
  • 聊聊directory traversal attack
  • 容器服务kubernetes弹性伸缩高级用法
  • 如何正确配置 Ubuntu 14.04 服务器?
  • 使用 QuickBI 搭建酷炫可视化分析
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • 限制Java线程池运行线程以及等待线程数量的策略
  • 优化 Vue 项目编译文件大小
  • 字符串匹配基础上
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • 【运维趟坑回忆录 开篇】初入初创, 一脸懵
  • Prometheus VS InfluxDB
  • 仓管云——企业云erp功能有哪些?
  • # .NET Framework中使用命名管道进行进程间通信
  • #stm32驱动外设模块总结w5500模块
  • %@ page import=%的用法
  • (保姆级教程)Mysql中索引、触发器、存储过程、存储函数的概念、作用,以及如何使用索引、存储过程,代码操作演示
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (附源码)计算机毕业设计SSM疫情社区管理系统
  • (规划)24届春招和25届暑假实习路线准备规划
  • (三)c52学习之旅-点亮LED灯
  • (三十五)大数据实战——Superset可视化平台搭建
  • (深度全面解析)ChatGPT的重大更新给创业者带来了哪些红利机会
  • (算法)区间调度问题
  • (转)Mysql的优化设置