随笔-Unity中一个简易的Spine动画控制器
我们在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动画控制器相关推荐
- 随笔-Unity中修改Spine材质
我们在Unity中使用Spine动画时,往往需要在材质上添加一些效果,比如描边.闪光等等. 这些效果其实在Spine插件中就给我们提供好了对应的Shader,路径分别是:Spine/Outlin ...
- Unity将物体绑定在spine动画骨骼节点上
实现 1.在目标spine动画下新建一个空物体. 2.给空物体添加BoneFollwer脚本(sprite动画添加BoneFollwer, ui动画添加BoneFollowerGraphic).此时s ...
- unity中UI界面的一些动画实现总结
在做unity的ui界面的时候,美术通常会实现一些动画效果.这里列举几个: 1.位置的变化 2.旋转的变化 3.缩放的变化 4.alpha的变化 5.颜色的变化 我们举一个例子: 位置的变化: (1) ...
- 【Unity3D 教程系列第 12 篇】如何用Unity写一个简易的计时器工具?
这是[Unity3D 教程系列第 12 篇],如果觉得有用的话,欢迎关注专栏. 平常关于延时的处理很多人都喜欢用携程去处理,但是在 Unity 里,并不建议大家用过多的携程,因为会出现一些莫名其妙的 ...
- 【unity游戏开发教程】Unity+Umotion Pro+VRoid+Blender制作人物模型和动画,在unity中简单制作二次元人物动画
前言 大家好!本期教程教大家在unity中制作二次元人物模型和动画 文章目录 前言 0.环境准备 1.下载VRoid Studio 2.Umotion Pro下载 3.Mixamo网站 4.blend ...
- unity 中带贴图以及动画的模型文件转为 lowpoly 风格的方法
本篇讲述的是使用代码来修改的方法,其实unity已经给我们提供了设置的方法:Normals选择Calculate,Smoothing Angle调整为0即可. 这里的内容是在这篇文章的基础上进行的修改 ...
- Unity中如何用脚本调用动画(Animation)
public class Cube : MonoBehaviour {private Animation animation;// Use this for initializationvoid St ...
- 利用canvas的rotate创建一个简易的风车动画
刚接触canvas的rotate属性,突发奇想能不能用它做个风车转动的效果,可是它旋转时却不是按照固定点旋转的,后来查阅了网上资料,网上说rotate旋转的不是图形,而是画布的坐标轴,于是我就想到将要 ...
- Unity中使用动画状态机控制Spine动画
下载Spine-Unity 为了在Unity中支持Spine动画,在http://zh.esotericsoftware.com/spine-unity-download/#Download下载spi ...
最新文章
- 单链表-单链表拆分为两个线性表(尾插法+尾插法)
- 第3周实践项目1 顺序表的基本运算
- 用74LS161构建多位计数器Multisim仿真实验
- LESS CSS 框架简介(转)
- java还值_Java到底是引用传递还是值传递
- C++中lib和dll解析
- Hyperledger Fabric 2.2.1 区块链问题汇总(持续更新)
- echarts年龄饼图_解决echarts饼图显示百分比,和显示内容字体及大小
- Spark的StandAlone模式原理和安装、Spark-on-YARN的理解
- BackgroundWorker 简单使用教程 多个线程的创建
- 《Java 核心技术 卷1》 笔记 第八章 事件处理
- python拟合曲线_使用python通过点拟合曲线
- Droopy v0.2 靶机渗透(drupal 7.3版本漏洞)
- Widows 环境下安装 ElasticSearch 并配置 ElasticSearch Head 插件
- android service录音,android录音并上传至服务器
- wxj项目的开发一点记录
- 多家知名企业笔试面试精华
- Git学习之回退撤销
- java 分权分域什么意思_基于云平台的分权分域系统分析与设计
- 使用ICGC数据库进行肿瘤组织突变分析,绘制瀑布图等
热门文章
- Python 输入圆的半径,求圆的直径、周长和面积
- LeetCode#732 My Calendar My Calendar III
- mysql网络商城毕业论文_网上商城(毕业论文)范例.doc
- [Codeforces 590E] Birthday
- Java中nio、bio和aio的区别
- tq210-uboot eth dm9000移植
- SAR图像的干涉相位 matlab_白光干涉仪是如何通过干涉条纹得到表面轮廓的?
- java实现Flappy Bird游戏(附免费素材+代码+详细注解)
- 基于微信预约挂号小程序毕业设计毕设作品(1)开发概要
- 广州华资应届生Java面试2022-4-20