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

Unity获取Animator动画播放完成事件

整理了一些在日常经验中处理动画播放完成事件的方法
方法:
1.Dotween配合异步实现
2.状态机计时方法实现
3.原生动画行为方法实现

方法一:Dotween异步方法

using UnityEngine;
using System.Threading.Tasks;
using DG.Tweening;public class PlayerAnimAsync : MonoBehaviour
{private Animator animator;private bool isAnimPlaying = false;void Start(){animator = GetComponent<Animator>();}void Update(){animator = GetComponent<Animator>();// 开始动画if (!isAnimPlaying){StartAttack();}}private async void StartAttack(){isAnimPlaying = true;await AnimationFinish("Attack", 0f);   //等待Attack播放完Debug.Log("Attack播放完了,可以执行Idle");animator.Play("Idle");isAnimPlaying = false;}//AnimationFinish 异步播放动画public async Task AnimationFinish(string animName, float extreTime = 0f){await DOTween.Sequence().AppendCallback(() => animator.Play(animName)).AppendInterval(GetAnimationClipLength(animName) + extreTime).AsyncWaitForCompletion();}//GetAnimationClipLength 获取动画片段时长private float GetAnimationClipLength(string animName){RuntimeAnimatorController ac = animator.runtimeAnimatorController;foreach (AnimationClip clip in ac.animationClips){if (clip.name == animName){return clip.length;}}return 0f;}
}

方法二:状态机计时方法

using UnityEngine;
public class PlayerAnimFSM : MonoBehaviour
{private enum AnimationState {Idle, Attack}private AnimationState currentState;private Animator animator;private float waitAnimTime = 0f;    //动画计时器void Start(){animator = GetComponent<Animator>();}void Update(){CheckState();currentState = currentState switch{AnimationState.Idle => IdleState(),AnimationState.Attack => AttackState(),_ => currentState};}private AnimationState IdleState(){animator.Play("Idle");return AnimationState.Idle;}private AnimationState AttackState(){//播放动画animator.Play("Attack");waitAnimTime += Time.deltaTime;if (waitAnimTime >= animator.GetCurrentAnimatorStateInfo(0).length){//当动画记录时间大于当前正在播放动画的时间时//todo:这里有一个BUG,在animator.Play()的动画需要在下一帧animator.GetCurrentAnimatorStateInfo(0).length才能获取到正确的时间//在这里默认动画长度都会大于1帧所以没太大的问题//正确的做法是参考方法一种的GetAnimationClipLength来获取动画时间waitAnimTime = 0;   //重置动画时间Debug.Log("Attack播放完了,可以执行Idle");return AnimationState.Idle; //转换Idle状态}return AnimationState.Attack; //维持攻击状态}private void CheckState()    //检测状态转换{if (currentState == AnimationState.Attack)  //维持攻击动画不被打断return;if (Input.GetKeyDown(KeyCode.Space)){currentState = AnimationState.Attack;return;}currentState = AnimationState.Idle;}
}

方法三:原生动画行为方法实现
这里需要用到两个脚本PlayerAnimSM和AttackFinish来实现,此处isAnimPlaying借助原生动画行为来复原

using UnityEngine;public class PlayerAnimSM : MonoBehaviour
{private Animator animator;public bool isAnimPlaying = false;void Start(){animator = GetComponent<Animator>();}void Update(){animator = GetComponent<Animator>();// 开始动画if (!isAnimPlaying){StartAttack();}}private void StartAttack(){isAnimPlaying = true;animator.Play("Attack");}
}

AttackFinish脚本借助界面创建步骤如下:
1.在动画器中点击需要传递动画完成事件的动画,点击右下角的Add Behaviour(添加行为),可以添加Unity预制的脚本
2.使用这个方法需要有动画过渡的方式(此处为AnyState到Idle),供后续代码中的OnStateExit使用(举例:如果希望有攻击结束到闲置动画的过渡,就需要从攻击动画连线到闲置动画,重点!!!一定要有退出时间,设置0s也没事,但一定要勾选,这里我就使用AnyState过渡过去了,使用AnyState时也一定要勾选退出时间
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
创建名为AttackFinish 的脚本(这里Unity叫行为)
双击点开这个脚本

using UnityEngine;public class AttackFinish : StateMachineBehaviour
{// OnStateEnter is called when a transition starts and the state machine starts to evaluate this state//override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)//{//}// OnStateUpdate is called on each Update frame between OnStateEnter and OnStateExit callbacks//override public void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)//{//}//OnStateExit is called when a transition ends and the state machine finishes evaluating this stateoverride public void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex){//在此处将isAnimPlaying重置回falseanimator.GetComponent<PlayerAnimSM>().isAnimPlaying = false;Debug.Log("Attack播放完了");//播放动画结束后的默认动画,我这里设置为idle你可以设置为任意动画但是一定要有过渡,从Attack到Idle的过渡animator.Play("Idle");}// OnStateMove is called right after Animator.OnAnimatorMove()//override public void OnStateMove(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)//{//    // Implement code that processes and affects root motion//}// OnStateIK is called right after Animator.OnAnimatorIK()//override public void OnStateIK(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)//{//    // Implement code that sets up animation IK (inverse kinematics)//}
}

后谈:还有一些诸如动画帧事件的方法没有收录在内。作者总感觉无论哪一个方法都不是特别合适或者顺手,当然无论是用原生还是自己去写,寻找适合自己项目的方法才是最好的。所以作者也会在今后的开发道路上继续学习。

相关文章:

Unity获取Animator动画播放完成事件

整理了一些在日常经验中处理动画播放完成事件的方法 方法: 1.Dotween配合异步实现 2.状态机计时方法实现 3.原生动画行为方法实现 方法一&#xff1a;Dotween异步方法 using UnityEngine; using System.Threading.Tasks; using DG.Tweening;public class PlayerAnimAsync : M…...

git submodule 使用

在Git中&#xff0c;子模块&#xff08;submodule&#xff09;是一种将一个Git仓库作为另一个Git仓库的子目录嵌入的方式。这使得主仓库能够跟踪和管理对外部依赖的更改。 添加子模块 初始化父仓库&#xff1a;如果你还没有创建父仓库&#xff0c;先创建它。 添加子模块&…...

【Jenkins未授权访问漏洞 】

默认情况下 Jenkins面板中用户可以选择执行脚本界面来操作一些系统层命令&#xff0c;攻击者可通过未授权访问漏洞或者暴力破解用户密码等进入后台管理服务&#xff0c;通过脚本执行界面从而获取服务器权限。 第一步&#xff1a;使用fofa语句搜索 搜索语句&#xff1a; port&…...

前端处理 Excel 文件

引入XLSX XLSX 是一个流行的 JavaScript 库&#xff0c;用于处理 Excel 文件&#xff08;包括 .xls 和 .xlsx 格式&#xff09;。它可以在 Node.js 环境和浏览器中运行&#xff0c;提供了丰富的 API 来读取、写入、修改 Excel 文件。当你使用 import * as XLSX from xlsx; 这行…...

(vue)el-cascader级联选择器按勾选的顺序传值,摆脱层级约束

(vue)el-cascader级联选择器按勾选的顺序传值,摆脱层级约束 需求&#xff1a;按勾选的顺序给后端传值 难点&#xff1a;在 Element UI 的 el-cascader 组件中&#xff0c;默认的行为是根据数据的层级结构来显示选项&#xff0c;用户的选择也会基于这种层级结构&#xff0c;el-…...

Redis进阶(四):哨兵

为了解决主节点故障&#xff0c;需要人工操作切换主从的情况&#xff1b;因此需要一种方法可以自动化的切换&#xff1a;哨兵的引入大大改变这种情况。 哨兵的基本概念 自动切换主从节点 哨兵架构 1、当一个哨兵节点发现主节点挂了的时候&#xff0c;还需要其他节点也去检测一…...

蓝屏事件:网络安全的启示

“微软蓝屏”事件暴露了网络安全哪些问题&#xff1f; 近日&#xff0c;一次由微软视窗系统软件更新引发的全球性“微软蓝屏”事件&#xff0c;不仅成为科技领域的热点新闻&#xff0c;更是一次对全球IT基础设施韧性与安全性的深刻检验。这次事件&#xff0c;源于美国电脑安全技…...

技术方案评审原则

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录 系列文章目录前言技术方案评审原则1.理论突破阶段2.技术突破阶段3.工程化阶段自动驾驶行业的技术方案分析前言 认知有限,望大家多多包涵,有什么问题也希望能够与大…...

117页PPT埃森哲-物流行业信息化整体规划方案

一、埃森哲-物流行业信息化整体规划方案 资料下载方式&#xff0c;请看每张图片右下角信息 埃森哲在物流行业信息化整体规划项目中的核心内容&#xff0c;旨在帮助物流企业通过信息技术的应用实现业务流程的优化、运营效率的提升以及市场竞争力的增强。以下是埃森哲在此类项目…...

百度网盘不下载怎么直接打印文件?

在数字化时代&#xff0c;百度网盘作为我们存储和分享文件的重要工具&#xff0c;承载了大量的文档、图片和资料。然而&#xff0c;当需要打印这些文件时&#xff0c;很多用户会面临一个共同的问题&#xff1a;不想下载到本地再打印&#xff0c;既占用空间又浪费时间。那么&…...

设置了 robots.txt 禁止爬虫抓取,为什么还是能被百度搜索出来

虽然设置了 robots.txt 禁止爬虫抓取&#xff0c;但网页仍可能被百度搜索出来&#xff0c;主要有以下几个原因&#xff1a; robots.txt 只是一种建议性协议&#xff0c;并非强制性[2]。虽然大多数搜索引擎会遵守 robots.txt 的规则&#xff0c;但并不是所有爬虫都会严格遵守。 …...

DedeCMS-V5.7.82-UTF8织梦管理系统漏洞

将靶场环境放到www目录下——访问/dedecms/uploads 安装程序 - 织梦内容管理系统 V5.7 UTF8SP2 同意协议——继续 继续 配置后——点击继续 进入后台 登录后台——填写用户名密码。 方法一&#xff1a;上传shell文件 后台——核心——附件管理——上传新文件。 访问/dedecms…...

【Python】字符串练习题及代码示例

1、使用while循环实现对字符串中每个字符进行输出。 代码示例&#xff1a; 2、请将代码实现如下进制的转换。 &#xff08;1&#xff09;v1675,请将v1转换为二进制。 代码&#xff1a; 注意&#xff1a;将十进制数转换为二进制数的方法是&#xff1a;bin(a),a是整型&#x…...

fluent动网格profile udf 注意事项

案例一&#xff1a; ((profile_name transient 2 0) ....第一行 (time 0 15.0) ....第二行 (v_x 1.2 1.2)) …...

【doghead】mac构建 2: player 端 clion构建

准备工作 【doghead】mac构建 1 【doghead】mac: clion2024.1启动崩溃 mbp的 uv 构建ok zhangbin@zhangbin-mbp-2  ~/tet/Fargo/zhb-bifrost/Bifrost-202403/worker/third_party/libuv   main clion使用lldb cmake构建 更...

论网络流(最大流篇)--新手入门超详解--包教包会

论网络流--新手入门超详解--包教包会 1 前言2 什么是最大流3最大流问题的求解&#xff08;1&#xff09;问题转化--增广路的引入&#xff08;2&#xff09;走回头路--EK算法&#xff08;3&#xff09;EK的弊端&#xff08;4&#xff09;化图为树--DINIC算法 4后记 1 前言 网络…...

环境搭建:全面详尽的 MongoDB Shell MongoDB Server介绍、安装、验证与配置指南(以 Windows 系统为主)

环境搭建&#xff1a;全面详尽的 MongoDB Shell & MongoDB Server介绍、安装、验证与配置指南&#xff08;以 Windows 系统为主&#xff09; MongoDB 是一个基于文档的 NoSQL 数据库&#xff0c;以其高性能、灵活性和可扩展性而受到广泛欢迎。本文将带您完成 MongoDB 的安装…...

使用 OpenSearch 的 K-NN 向量搜索来增强搜索功能

使用 OpenSearch 的 K-NN 向量搜索来增强搜索功能 许多应用程序都依赖于提供精确且相关的搜索结果的能力。尽管传统关系数据库的全文搜索功能在某些情况下已经足够&#xff0c;但这些数据库在从文本中提取语义含义或搜索结构化程度较低的数据方面可能会出现不足。在这篇博文中&…...

Less-2(闭合)

我们使用第一关的测试方法尝试一下,打咩 直接看源码&#xff0c;看到&#xff0c;尝试一下闭合 <?php ini_set("display_errors", 0); $str $_GET["keyword"]; echo "<h2 aligncenter>没有找到和".htmlspecialchars($str)."相…...

mysql介绍

MySQL是一种开源的关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;广泛用于存储和管理数据。它支持多种操作系统&#xff0c;如Linux、Windows、MacOS等。MySQL的特点包括&#xff1a; 1.开源免费&#xff1a;MySQL是开源的&#xff0c;可以免费使用和分发。 2…...

【ROS学习】ROS中 use_sim_time 参数的含义与作用

文章目录 写在前面一、背景描述二、 use_sim_time 参数的含义与作用三、举例说明1. 不设置use_sim_time (也即 use_sim_time false)&#xff0c;播放数据集使用rosbag play **.bag 2. 不设置use_sim_time (也即 use_sim_time false)&#xff0c;播放数据集使用rosbag play **…...

python-查找元素3(赛氪OJ)

[题目描述] 有n个不同的数&#xff0c;从小到大排成一列。现在告诉你其中的一个数x&#xff0c;x不一定是原先数列中的数。你需要输出最后一个<x的数在此数组中的下标。输入&#xff1a; 输入共两行第一行为两个整数n、x。第二行为n个整数&#xff0c;代表a[i]。输出&#x…...

苹果 Safari 的隐私保护与广告追踪问题 :技术进展与挑战

隐私保护的进展与挑战 近年来&#xff0c;浏览器行业在隐私保护技术方面取得了显著进展&#xff0c;尤其是在广告追踪领域。谷歌的 Chrome 浏览器推广了隐私沙盒&#xff0c;通过将用户可能感兴趣的主题分类并推送给广告商。Mozilla Firefox 和 Meta Facebook 则推出了一种名为…...

pytest之fixture

Pytest 中 Fixture 的 yield 用法 在软件测试中&#xff0c;设置和清理测试环境是一个重要的环节。Pytest 作为一个功能强大的测试框架&#xff0c;通过 Fixture 机制简化了这一过程。特别是yield语句的使用&#xff0c;使得 Fixture 能够在测试前进行设置&#xff0c;并在测试…...

Rancher

文章目录 Rancher1. 安装和配置2. 服务部署和管理3. 容器自动化缩容和扩容 Rancher Rancher 是一个开源的企业级容器管理平台&#xff0c;旨在简化容器化应用的部署、管理和运维。它支持多种容器编排引擎&#xff0c;如 Kubernetes、Docker Swarm 等&#xff0c;并提供了统一的…...

Wordpress建站问题记录

从一月到七月因为工作的情况没有进行太深入的开发,想着整理一下把做一个独立站把博客多个渠道发布一下,遇到几个问题在这里记录一下. 先写一下我的配置 系统: centos7 php: 7.4 wordpress: 6.6.1 mysql:8.0.6 1. HTTP 500 Internal 这个问题出现在我将wordpress的文件夹全部…...

JavaFx中通过线程池运行或者停止多个周期性任务

在JavaFX中&#xff0c;要实现点击按钮启动多个周期性任务并通过多线程执行&#xff0c;并在任务结束后将结果写入多个文本组件中&#xff0c;同时提供另一个按钮来停止这些任务&#xff0c;你可以使用ScheduledExecutorService来管理周期性任务&#xff0c;并使用AtomicBoolea…...

使用RabbitMQ实现异步支付状态通知

在支付系统中&#xff0c;如何确保支付状态的准确传递和处理显得尤为重要。今天&#xff0c;我们将以一个支付流程为例&#xff0c;探讨在引入RabbitMQ前后的实现和优化。 改造前 在引入RabbitMQ之前&#xff0c;我们通常会直接在支付方法中完成所有的操作。这包括查询支付单…...

[最短路dijkstra],启动!!!

总时间复杂度为 O ( ( n m ) log ⁡ m &#xff09; P4779 【模板】单源最短路径&#xff08;标准版&#xff09; #include<bits/stdc.h> #define ll long long #define fi first #define se second #define pb push_back #define PII pair<int,int > #define I…...

Java企业微信服务商代开发获取AccessToken示例

这里主要针对的是企业微信服务商代开发模式 文档地址 可以看到里面大致有三种token&#xff0c;一个是服务商的token&#xff0c;一个是企业授权token&#xff0c;还有一个是应用的token 这里面主要有下面几个参数 首先是服务商的 corpid 和 provider_secret &#xff0c;这个可…...

How does age change how you learn?(2)年龄如何影响学习能力?(二)

Do different people experience decline differently? 不同人经历的认知衰退会有不同吗? Do all people experience cognitive decline uniformly?Or do some people’s minds slip while others stay sharp much longer? 所有人经历的认知衰退都是一样的吗?还是有些人…...

可验证随机函数 vrf 概述

一、什么是VRF 背景: 在传统的区块链中,常用的随机算法是基于伪随机数生成器(Pseudorandom Number Generator,PRNG)的。PRNG是一种确定性算法,它根据一个初始种子生成一个看似随机的序列。在区块链中,通常使用的是伪随机数序列来选择区块的创建者、确定验证节点的轮换…...

鸿蒙双向绑定组件:TextArea、TextInput、Search、Checkbox,文本输入组件,图案解锁组件PatternLock

对象暂不支持双向绑定&#xff0c; 效果&#xff1a; 代码&#xff1a; Entry Component struct MvvmCase {StateisSelect: boolean falseStatesearchText: String ""StateinputText: string ""StateareaText: string ""build() {Grid() {G…...

JS 算法 - 计数器

theme: smartblue 题目描述 给定一个整型参数 n&#xff0c;请你编写并返回一个 counter 函数。这个 counter 函数最初返回 n&#xff0c;每次调用它时会返回前一个值加 1 的值 ( n , n 1 , n 2 &#xff0c;等等)。 示例 1&#xff1a; 输入&#xff1a; n 10 ["cal…...

JavaScript基础——JavaScript运算符

赋值运算符 算术运算符 一元运算符 三元/三目运算符 比较运算符 逻辑运算符 运算符优先级 在JavaScript中&#xff0c;常见的运算符可以包括赋值运算符、一元运算符、算术运算符&#xff08;二元运算符&#xff09;、三元/三目运算符、比较运算符、逻辑运算符等&#xff0…...

E23.【C语言】练习:不创建第三个变量实现两个整数的交换

目录 题目条件 思路1&#xff08; -&#xff09; 思路2 &#xff08;^&#xff09;(XOR) 往期推荐 1.题目条件 禁止使用以上代码 2.思路1&#xff1a; -运算 aab; ba-b; aa-b; 但这样有潜在的问题 :a&#xff0c;b存储的数字过大&#xff0c;ab可能超过范围 因此改用思路2…...

如何搭建一个web系统?

需求 搭建一个web系统。 框架 设计:墨刀 前端:Vue.js 后端:Java 算法:Python 数据库:时序数据库,介绍 部署:Jekins https://www.jenkins.io/ 文档管理:Teambition 项目管理:禅道 代码管理:Gitlab 开发流程 设计文档和原型文档&#xff0c;功能接口设计&#xff0…...

三十种未授权访问漏洞复现 合集( 二 )

未授权访问漏洞介绍 未授权访问可以理解为需要安全配置或权限认证的地址、授权页面存在缺陷&#xff0c;导致其他用户可以直接访问&#xff0c;从而引发重要权限可被操作、数据库、网站目录等敏感信息泄露。---->目录遍历 目前主要存在未授权访问漏洞的有:NFS服务&a…...

C语言学习笔记[29]:函数①

函数 在C语言中&#xff0c;函数是一段可以完成特定功能的代码&#xff0c;它们可以被重复调用。 函数的分类&#xff1a; 库函数自定义函数 库函数 在C语言中&#xff0c;库函数是由系统提供的&#xff0c;用于完成特定功能的函数&#xff0c;这些函数被集合在一起&#…...

使用Springboot + netty 打造聊天服务之Nacos集群问题记录

目录 1、前言1.1、方法一1.2、方法二 2、方案二实战2.1、在netty服务里加上ws连接、中断事件2.2、在netty服务里加上消息服务 4、总结 使用Springboot netty 打造聊天服务系列文章 第一章 初始搭建工程 第二章 Nacos集群问题记录 1、前言 在使用Springboot Nacos Netty(Web…...

全网唯一!R语言顶刊配色包TheBestColors

与Matlab相比&#xff0c;R语言在绘图方面有着天然的优势。 比如在配色方面&#xff0c;R语言有各式各样现成的包&#xff0c;按理说配色这种事应该很方便才对。 但实际体验下来&#xff0c;发现似乎不是那么回事。 首先&#xff0c;你很难记住每个包的调用方法以及每种配色…...

链表题型思路错误总结

常见题目 206. 反转链表 关键点&#xff1a;定义前置指针。 在给cur.next复制前&#xff0c;需要定义好next节点防止断链。 public ListNode reverseList(ListNode head) {if (head null || head.next null) {return head;}ListNode pre null;ListNode cur head;while(cur…...

算法学习day28

一、寻找右区间(二分法) 题意&#xff1a;题目很容易理解 但是转换为二分法有点晦涩 给你一个区间数组 intervals &#xff0c;其中 intervals[i] [starti, endi] &#xff0c;且每个 starti 都 不同 。区间 i 的 右侧区间 可以记作区间 j &#xff0c;并满足 startj > e…...

C语言基础题:迷宫寻路(C语言版)

1.题目描述 机器猫被困在一个矩形迷宫里。 迷宫可以视为一个n x m 矩阵&#xff0c;每个位置要么是空地&#xff0c;要么是墙。机器猫只能从一个空地走到其上、下、左、右的空地。 机器猫初始时位于(1,1)的位置&#xff0c;问能否走到(n,m)位置。 2.输入格式 第一行&#xff0…...

力扣-1两数之和2两数相加-2024/8/3

1、两数之和 解法一 暴力法&#xff08;2个for循环&#xff09; class Solution:def twoSum(self, nums: List[int], target: int) -> List[int]:for ii in range(len(nums)):for jj in range(ii1, len(nums)):if nums[ii]nums[jj] target:return [ii,jj]解法二 哈希表法…...

简站WordPress主题 专业的WordPress建站服务商

简站WordPress主题是一款备受推崇的WordPress主题&#xff0c;以其简洁、实用、无插件和更安全的特性脱颖而出。以下是关于简站WordPress主题的一些详细分析&#xff1a; 简站WordPress主题采用了扁平化设计风格&#xff0c;界面简洁明了&#xff0c;这使得网站看起来更加专业…...

Final Shell for Mac 虚拟机连接工具【简单易操作,轻松上手】【开发所需连接工具】

Mac分享吧 文章目录 效果一、下载软件二、安装软件三、运行测试安装完成&#xff01;&#xff01;&#xff01; 效果 一、下载软件 下载软件 链接&#xff1a;http://www.macfxb.cn 二、安装软件 三、运行测试 安装完成&#xff01;&#xff01;&#xff01;...

Oracle JDK:版本、支持与许可

文章目录 版本支持许可BCLOTNNFTCFAQ其他OpenJDK和其他的JDK实现JDK、JRE、JVMJava SE、Java EE、Java ME版本 Oracle JDK的最新版本和历史版本的官方下载地址(可查询版本发行说明等信息):https://www.oracle.com/cn/java/technologies/downloads/ 常规版本(非LTS):每隔…...

大模型学习笔记 - LLM 之RLHF人类对齐的简单总结

LLM - RLHF人类对齐的简单总结 LLM-人类对齐 1. RLHF(Reinforcement Learning from Human Feedback, RLHF),基于人类反馈的强化学习2 奖励模型训练3 强化学习训练 3.1 PPO介绍3.2 进阶的RLHF的介绍 3.2.1. 过程监督奖励模型3.2.2. 基于AI反馈的强化学习3.2.3. 非强化学习的对齐…...

【从零开始一步步学习VSOA开发】 概述

概述 概念 VSOA&#xff08;Vehicle SOA&#xff09;是翼辉为了解决任务关键型系统不能适用当前微服务通信架构问题而设计的⼀个轻量级适用于任务关键领域的微服务通信架构&#xff0c;以方便开发者构建大型分布式松耦合软件系统&#xff0c;且支持并行开发。 特点 其主要特…...