我们在Unity中使用Spine动画时,调整一个属性可能调用的是不同类,可能简简单单启动一个动画需要写很多个函数,于是我这边对Spine的动画控制做了一个简易的封装,在目前来说使用还是很方便的,也并不难。如果需要什么其他功能也可以随时添加。废话不多说,直接上代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Spine.Unity;
using System;
using static Spine.AnimationState;public class SpineAnimCtrl : MonoBehaviour
{/// <summary>/// 播放Spine动画/// </summary>/// <param name="spine"></param>/// <param name="trackIndex"></param>/// <param name="animName"></param>/// <param name="loop"></param>/// <param name="skinName"></param>/// <param name="callBack"></param>public static void PlayAnim(SkeletonAnimation spine, int trackIndex, string animName, bool loop, string skinName = "", Action callBack = null){Spine.Skeleton skeleton = spine.skeleton;Spine.AnimationState state = spine.AnimationState;if (spine != null){if (!string.IsNullOrEmpty(skinName))skeleton.SetSkin(skinName);state.SetAnimation(trackIndex, animName, loop);}TrackEntryDelegate animCallBack = null;animCallBack = delegate{if (callBack != null){callBack.Invoke();}state.Complete -= animCallBack;animCallBack = null;};state.Complete += animCallBack;}/// <summary>/// 播放Spine动画(UI)/// </summary>/// <param name="spine"></param>/// <param name="trackIndex"></param>/// <param name="animName"></param>/// <param name="loop"></param>/// <param name="skinName"></param>/// <param name="callBack"></param>public static void PlayAnim(SkeletonGraphic spine, int trackIndex, string animName, bool loop, string skinName = "", Action callBack = null){Spine.Skeleton skeleton = spine.Skeleton;Spine.AnimationState state = spine.AnimationState;if (spine != null){if (!string.IsNullOrEmpty(skinName))skeleton.SetSkin(skinName);state.SetAnimation(trackIndex, animName, loop);}TrackEntryDelegate animCallBack = null;animCallBack = delegate{if (callBack != null){callBack.Invoke();}state.Complete -= animCallBack;animCallBack = null;};state.Complete += animCallBack;}/// <summary>/// 停止Spine动画/// </summary>/// <param name="spine"></param>/// <param name="trackIndex"></param>/// <param name="mixDuration"></param>public static void StopAnim(SkeletonAnimation spine, int trackIndex, float mixDuration){Spine.AnimationState state = spine.AnimationState;state.SetEmptyAnimation(trackIndex, mixDuration);}/// <summary>/// 停止Spine动画(UI)/// </summary>/// <param name="spine"></param>/// <param name="trackIndex"></param>/// <param name="mixDuration"></param>public static void StopAnim(SkeletonGraphic spine, int trackIndex, float mixDuration){Spine.AnimationState state = spine.AnimationState;state.SetEmptyAnimation(trackIndex, mixDuration);}
}

随笔-Unity中一个简易的Spine动画控制器相关推荐

  1. 随笔-Unity中修改Spine材质

    我们在Unity中使用Spine动画时,往往需要在材质上添加一些效果,比如描边.闪光等等.    这些效果其实在Spine插件中就给我们提供好了对应的Shader,路径分别是:Spine/Outlin ...

  2. Unity将物体绑定在spine动画骨骼节点上

    实现 1.在目标spine动画下新建一个空物体. 2.给空物体添加BoneFollwer脚本(sprite动画添加BoneFollwer, ui动画添加BoneFollowerGraphic).此时s ...

  3. unity中UI界面的一些动画实现总结

    在做unity的ui界面的时候,美术通常会实现一些动画效果.这里列举几个: 1.位置的变化 2.旋转的变化 3.缩放的变化 4.alpha的变化 5.颜色的变化 我们举一个例子: 位置的变化: (1) ...

  4. 【Unity3D 教程系列第 12 篇】如何用Unity写一个简易的计时器工具?

    这是[Unity3D 教程系列第 12 篇],如果觉得有用的话,欢迎关注专栏. 平常关于延时的处理很多人都喜欢用携程去处理,但是在 Unity 里,并不建议大家用过多的携程,因为会出现一些莫名其妙的 ...

  5. 【unity游戏开发教程】Unity+Umotion Pro+VRoid+Blender制作人物模型和动画,在unity中简单制作二次元人物动画

    前言 大家好!本期教程教大家在unity中制作二次元人物模型和动画 文章目录 前言 0.环境准备 1.下载VRoid Studio 2.Umotion Pro下载 3.Mixamo网站 4.blend ...

  6. unity 中带贴图以及动画的模型文件转为 lowpoly 风格的方法

    本篇讲述的是使用代码来修改的方法,其实unity已经给我们提供了设置的方法:Normals选择Calculate,Smoothing Angle调整为0即可. 这里的内容是在这篇文章的基础上进行的修改 ...

  7. Unity中如何用脚本调用动画(Animation)

    public class Cube : MonoBehaviour {private Animation animation;// Use this for initializationvoid St ...

  8. 利用canvas的rotate创建一个简易的风车动画

    刚接触canvas的rotate属性,突发奇想能不能用它做个风车转动的效果,可是它旋转时却不是按照固定点旋转的,后来查阅了网上资料,网上说rotate旋转的不是图形,而是画布的坐标轴,于是我就想到将要 ...

  9. Unity中使用动画状态机控制Spine动画

    下载Spine-Unity 为了在Unity中支持Spine动画,在http://zh.esotericsoftware.com/spine-unity-download/#Download下载spi ...

最新文章

  1. 单链表-单链表拆分为两个线性表(尾插法+尾插法)
  2. 第3周实践项目1 顺序表的基本运算
  3. 用74LS161构建多位计数器Multisim仿真实验
  4. LESS CSS 框架简介(转)
  5. java还值_Java到底是引用传递还是值传递
  6. C++中lib和dll解析
  7. Hyperledger Fabric 2.2.1 区块链问题汇总(持续更新)
  8. echarts年龄饼图_解决echarts饼图显示百分比,和显示内容字体及大小
  9. Spark的StandAlone模式原理和安装、Spark-on-YARN的理解
  10. BackgroundWorker 简单使用教程 多个线程的创建
  11. 《Java 核心技术 卷1》 笔记 第八章 事件处理
  12. python拟合曲线_使用python通过点拟合曲线
  13. Droopy v0.2 靶机渗透(drupal 7.3版本漏洞)
  14. Widows 环境下安装 ElasticSearch 并配置 ElasticSearch Head 插件
  15. android service录音,android录音并上传至服务器
  16. wxj项目的开发一点记录
  17. 多家知名企业笔试面试精华
  18. Git学习之回退撤销
  19. java 分权分域什么意思_基于云平台的分权分域系统分析与设计
  20. 使用ICGC数据库进行肿瘤组织突变分析,绘制瀑布图等

热门文章

  1. Python 输入圆的半径,求圆的直径、周长和面积
  2. LeetCode#732 My Calendar My Calendar III
  3. mysql网络商城毕业论文_网上商城(毕业论文)范例.doc
  4. [Codeforces 590E] Birthday
  5. Java中nio、bio和aio的区别
  6. tq210-uboot eth dm9000移植
  7. SAR图像的干涉相位 matlab_白光干涉仪是如何通过干涉条纹得到表面轮廓的?
  8. java实现Flappy Bird游戏(附免费素材+代码+详细注解)
  9. 基于微信预约挂号小程序毕业设计毕设作品(1)开发概要
  10. 广州华资应届生Java面试2022-4-20