Unity Spine帧事件
SpinePro中添加事件帧
首先 选中右上角的层级树 然后选择事件选项

最后在右下角看到 新建 点击它 新建一个事件


点击左上角的设置按钮 弹出编辑窗口

编辑窗口

在右上角 动画栏 可以切换对应的动画
点坐边的那个小灰点来切换 亮点代表当前动画
选中帧

添加事件 点击对应事件的🔑图标 在当前帧添加事件

添加成功后 点击左下角播放按钮 可以看到 人物身边有对应事件的文本弹出 表示添加成功

Unity监听Spine帧事件
面板上添加
可以一个事件 添加多个监听
代码中动态添加
一个事件可以添加多个监听

源码
using System.Collections.Generic;
using UnityEngine;
using Spine.Unity;
using Spine;
using System;
using UnityEngine.Events;public class SpineEventHelper : MonoBehaviour
{[Serializable]public class SpineFrameKey{[SpineEvent] public string key;public UnityEvent handler;}[SerializeField] private List<SpineFrameKey> handlers;private Dictionary<string, UnityEvent> keyFrameEventDict = new Dictionary<string, UnityEvent>( );public const string START_EVENT = "START_EVENT", END_EVENT = "END_EVENT";private SkeletonAnimation skeletonAnimation;private void Start( ){Bind( );}private void Bind( ){skeletonAnimation = GetComponent<SkeletonAnimation>( );if ( skeletonAnimation == null ) return;skeletonAnimation.AnimationState.Event += HandleEvent;skeletonAnimation.AnimationState.Start += delegate ( TrackEntry trackEntry ){if ( keyFrameEventDict.TryGetValue( START_EVENT, out UnityEvent @event ) ){@event.Invoke( );}};skeletonAnimation.AnimationState.End += delegate{if ( keyFrameEventDict.TryGetValue( END_EVENT, out UnityEvent @event ) ){@event.Invoke( );}};foreach ( var handler in handlers ){keyFrameEventDict[ handler.key ] = handler.handler;}}/// <summary>/// 添加自定义的帧事件/// </summary>/// <param name="key"> 帧名称 </param>/// <param name="handler"> 处理的方法 </param>public void AddCustomEventHandler( string key, UnityAction handler ){if ( keyFrameEventDict.TryGetValue( key, out UnityEvent ev ) ){ev.AddListener( handler );}else{var ue = new UnityEvent( );ue.AddListener( handler );keyFrameEventDict.Add( key, ue );}}/// 移除自定义的帧事件/// </summary>/// <param name="key"> 指定帧名称 </param>/// <param name="handler"> 处理的方法 如果忽略则移除key的所有帧事件 </param>public void RemoveCustomEventHandler( string key, UnityAction handler = null ){if ( keyFrameEventDict.TryGetValue( key, out UnityEvent ev ) ){if ( handler == null ){ev.RemoveAllListeners( );}else{ev.RemoveListener( handler );}}}/// <summary>/// 添加动画开始事件/// </summary>/// <param name="handler"> 开始处理事件的方法 </param>public void AddStartEventHandler( UnityAction handler ){if ( keyFrameEventDict.TryGetValue( START_EVENT, out UnityEvent ev ) ){ev.AddListener( handler );}else{var ue = new UnityEvent( );ue.AddListener( handler );keyFrameEventDict.Add( START_EVENT, ue );}}/// <summary>/// 移除开始帧事件/// </summary>/// <param name="handler"></param>public void RemoveStartEventHandler( UnityAction handler ){if ( keyFrameEventDict.TryGetValue( START_EVENT, out UnityEvent ev ) ){ev.RemoveListener( handler );}}/// <summary>/// 添加结束帧事件/// </summary>/// <param name="handler"></param>public void AddEndEventHandler( UnityAction handler ){if ( keyFrameEventDict.TryGetValue( END_EVENT, out UnityEvent ev ) ){ev.AddListener( handler );}else{var ue = new UnityEvent( );ue.AddListener( handler );keyFrameEventDict.Add( END_EVENT, ue );}}/// <summary>/// 移除结束帧事件/// </summary>/// <param name="handler"></param>public void RemoveEndEventHandler( UnityAction handler ){if ( keyFrameEventDict.TryGetValue( END_EVENT, out UnityEvent ev ) ){ev.RemoveListener( handler );}}private void HandleEvent( TrackEntry trackEntry, Spine.Event e ){if ( keyFrameEventDict.TryGetValue( e.Data.Name, out UnityEvent @event ) ){@event.Invoke( );}}/// <summary>/// 清理所有帧事件 /// </summary>public void Clear( ){keyFrameEventDict.Clear( );}private void OnDestroy( ){Clear( ); }
}相关文章:
Unity Spine帧事件
SpinePro中添加事件帧 首先 选中右上角的层级树 然后选择事件选项 最后在右下角看到 新建 点击它 新建一个事件 点击左上角的设置按钮 弹出编辑窗口 编辑窗口 在右上角 动画栏 可以切换对应的动画 点坐边的那个小灰点来切换 亮点代表当前动画 选中帧 添加事件 点击对应事件…...
AE使用(一)
打开AE 点击“新建合成” 注意参数:宽度高度是视频是横屏还是竖屏。发布在抖音上,需要做出来竖屏效果;发布在视频网站中需要做出横屏效果。没用特殊需求,默认参数就行。 导入素材:左键双击“导入素材区”的空白部分。 …...
YOLOv5、YOLOv8改进:MobileViT:轻量通用且适合移动端的视觉Transformer
MobileViT: Light-weight, General-purpose, and Mobile-friendly Vision Transformer 论文:https://arxiv.org/abs/2110.02178 1简介 MobileviT是一个用于移动设备的轻量级通用可视化Transformer,据作者介绍,这是第一次基于轻量级CNN网络性…...
06-4_Qt 5.9 C++开发指南_MDI应用程序设计
文章目录 1. MDI简介2. 文档窗口类 QFormDoc 的设计3. MDI主窗口设计与子窗口的使用3.1 主窗口界面设计3.2 MDI子窗口的创建与加入3.3 QMdiArea 常用功能函数3.4 MDI的信号 4. 源码4.1 qwmainwindow.h4.2 qwmainwindow.cpp 1. MDI简介 传统的应用程序设计中有多文档界面(Multi…...
【SCI征稿】3区SCI,正刊,智能传感、机器学习、智能检测与测量等均可
影响因子:IF:2.0-3.0 期刊分区:JCR3区,中科院4区 检索情况:SCIE在检,正刊 征稿领域:智能技术在测量与检测中的应用研究,如: ● 复杂系统的智能传感和高级故障诊断 ●…...
神经网络ANN(MLP),CNN以及RNN区别和应用
1. Artificial Neural Network(ANN) 又称为Multilayer Perception Model(MLP) 2. CNN AAA 3. RNN 22 先占坑,后期再整理 References [1] CNN vs.RNN vs.ANN——浅析深度学习中的三种神经网络 - 知乎 [2] https://www.youtube.com/watch?vu7obuspdQu4 [3] 深…...
CUDA、cuDNN以及Pytorch介绍
文章目录 前言一、CUDA二、cuDNN三、Pytorch 前言 在讲解cuda和cuDNN之前,我们首先来了解一下英伟达(NVIDA)公司。 NVIDIA是一家全球领先的计算机技术公司,专注于图形处理器(GPU)和人工智能(…...
使用shift关键字,写一个带二级命令的脚本(如:docker run -a -b -c中的run)
省流:shift关键字 探索思路 最近有一个小小的需求,写一个类似于docker run -a -b -c这样的脚本,这个脚本名为doline,它本身可以执行(doline -a -b -c),同时又带有几个如run、init、start这样的…...
MySQL学习笔记 - 进阶部分
MySQL进阶部分 字符集的相关操作:字符集和比较规则:utf8与utf8mb4:比较规则:常见的字符集和对应的Maxlen: Centos7中linux下配置字符集:各个级别的字符集:执行show variables like %character%语…...
微信小程序实现左滑删除
一、效果 二、代码 实现思路使用的是官方提供的 movable-area:注意点,需要设置其高度,否则会出现列表内容重叠的现象。由于movable-view需要向右移动,左滑的时候给删除控件展示的空间,故 movable-area 需要左移 left:…...
安防视频监控有哪些存储方式?哪种存储方式最优?
视频监控系统涉及到大量的视频数据,需要对这些数据进行存储,以备日后查看或备份。视频监控的存储需求需要根据场所的实际情况进行选择,以保证监控数据的有效存储和日后的调阅、回溯。 当前视频监控的存储方式,通常有以下几种&…...
02-C++数据类型-高级
数据类型-高级 4、复合类型 4.4、结构简介 struct inflatable {char name[20];float vol;double price; };inflatable vincent; //C struct inflatable goose; //C例子 // structur.cpp -- a simple structure #include <iostream> struct inflatable // structu…...
Kotlin实战之获取本地配置文件、远程Apollo配置失败问题排查
背景 Kotlin作为一门JVM脚本语言,收到很多Java开发者的青睐。 项目采用JavaKotlin混合编程。Spring Boot应用开发,不会发生变动的配置放在本地配置文件,可能会变化的配置放在远程Apollo Server。 问题 因为业务需要,需要增加一…...
TCP协议的报头格式和滑动窗口
文章目录 TCP报头格式端口号序号和确认序号确认应答(ACK)机制超时重传机制 首部长度窗口大小报文类型URGACKSYNPSHFINRST 滑动窗口滑动窗口的大小怎么设定怎么变化滑动窗口变化问题 TCP报头格式 端口号 两个端口号比较好理解,通过端口号来找…...
java 使用log4j显示到界面和文件 并格式化
1.下载log4j jar包https://dlcdn.apache.org/logging/log4j/2.20.0/apache-log4j-2.20.0-bin.zip 2. 我只要到核心包 ,看需要 sources是源码包,可以看到说明。在IDEA里先加入class jar后,再双击这个class jar包或或右键选Navigate ,Add ,…...
【js】链接中有多余的怎么取出参数值
https://pq.equalearning.net/assessment/379208869278126080?userId23ebb&originhttps://www.equalearning.net&fnameIm&lnamehappy在上面的例子中,fnameI’m,其中单引号’被转义为, 而如果使用下面的代码,因为在UR…...
Verdi_traceX and autotrace
Verdi_traceX and autotrace Trace X From nWave/nTrace of from the Teporal Flow View. Show Paths on Flow ViewShow Paths on nWave 若Waveform中有X态,鼠标右键会有Trace X的选项; 会自动打开Temporal Flow View窗口,展示对应路径&am…...
安卓逆向 - 某严选app sign算法还原
本文仅供学习交流,只提供关键思路不会给出完整代码,严禁用于非法用途,若有侵权请联系我删除! 目标app: 5ouN5ouN5Lil6YCJMy45LjY 目标接口:aHR0cHM6Ly9hcGkubS5qZC5jb20vYXBp 一、引言 1、本篇分析某二手交易平台 …...
arcgis数据采集与拓扑检查
1、已准备好一张配准好的浙江省行政区划图,如下: 2、现在需要绘制湖州市县级行政区划。需要右击文件夹新建文件地理数据库,如下: 其余步骤均默认即可。 创建好县级要素数据集后,再新建要素类,命名为县。 为…...
【前端 | CSS】滚动到底部加载,滚动监听、懒加载
背景 在日常开发过程中,我们会遇到图片懒加载的功能,基本原理是,滚动条滚动到底部后再次获取数据进行渲染。 那怎么判断滚动条是否滚动到底部呢?滚动条滚动到底部触发时间的时机和方法又该怎样定义? 针对以上问题我…...
无损视频剪辑效率全攻略:5分钟掌握革新性剪辑技术
无损视频剪辑效率全攻略:5分钟掌握革新性剪辑技术 【免费下载链接】lossless-cut The swiss army knife of lossless video/audio editing 项目地址: https://gitcode.com/gh_mirrors/lo/lossless-cut 你是否曾因视频剪辑软件的漫长渲染过程而错失发布良机&a…...
Doris集群部署避坑指南:3FE+3BE配置全流程(含Java环境配置与常见问题解决)
Doris集群部署实战:3FE3BE高可用架构搭建与深度调优 在企业级数据分析场景中,Doris凭借其出色的实时分析性能和高并发处理能力,已成为众多企业的首选OLAP引擎。本文将基于3FE(Frontend)3BE(Backend…...
Mermaid Live Editor终极指南:10个团队协作和项目管理的实用技巧
Mermaid Live Editor终极指南:10个团队协作和项目管理的实用技巧 【免费下载链接】mermaid-live-editor Edit, preview and share mermaid charts/diagrams. New implementation of the live editor. 项目地址: https://gitcode.com/GitHub_Trending/me/mermaid-l…...
OpCore-Simplify:开源系统硬件适配的技术突破与架构革新
OpCore-Simplify:开源系统硬件适配的技术突破与架构革新 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 在开源系统定制领域,硬…...
当条形图遇上极坐标:径向与圆形条形图的视觉革命
1. 设计原理这两种图表把传统的笛卡尔坐标系换成极坐标系:角度表示类别,半径或角度长度表示数值。1.1. 径向条形图径向条形图本质上是将传统条形图的直角坐标系转换为极坐标系。在极坐标系中,每个数据点不再由(x, y)定位,而是由(角…...
Wan2.2-I2V-A14B效果展示:水墨风、赛博朋克、胶片质感视频样例
Wan2.2-I2V-A14B效果展示:水墨风、赛博朋克、胶片质感视频样例 1. 惊艳的视频生成能力 Wan2.2-I2V-A14B文生视频模型展现了令人惊叹的创作能力,能够根据简单的文字描述生成高质量、风格多样的视频内容。这款专为RTX 4090D 24GB显存优化的私有部署镜像&…...
NoSleep防休眠工具:系统唤醒与持续运行的高效解决方案
NoSleep防休眠工具:系统唤醒与持续运行的高效解决方案 【免费下载链接】NoSleep Lightweight Windows utility to prevent screen locking 项目地址: https://gitcode.com/gh_mirrors/nos/NoSleep 在数字化工作环境中,电脑意外休眠往往导致工作中…...
Qwen3.5-9B Java面试宝典生成器:动态定制八股文与场景题
Qwen3.5-9B Java面试宝典生成器:动态定制八股文与场景题 1. 为什么需要智能面试助手 Java开发者求职路上,最头疼的莫过于海量面试题的整理和记忆。传统方式要么依赖网上零散的八股文合集,要么自己手动整理知识点,效率低下且难以…...
ChatGPT_JCM跨平台方案:一次开发,多端运行的实现方法
ChatGPT_JCM跨平台方案:一次开发,多端运行的实现方法 【免费下载链接】ChatGPT_JCM 项目地址: https://gitcode.com/gh_mirrors/ch/ChatGPT_JCM ChatGPT_JCM是一款基于Electron和Vue.js构建的跨平台AI应用,通过"一次开发&#x…...
当触控板遇见鼠标:一场被重构的滚动革命
当触控板遇见鼠标:一场被重构的滚动革命 【免费下载链接】Scroll-Reverser Per-device scrolling prefs on macOS. 项目地址: https://gitcode.com/gh_mirrors/sc/Scroll-Reverser 在MacBook Pro的触控板上轻扫手指,网页随指尖方向自然滚动&#…...



