[发明专利]一种用于对象的状态切换系统和方法有效
申请号: | 202010279763.X | 申请日: | 2020-04-10 |
公开(公告)号: | CN111399813B | 公开(公告)日: | 2023-08-29 |
发明(设计)人: | 程思鹏 | 申请(专利权)人: | 上海米哈游天命科技有限公司 |
主分类号: | G06F8/20 | 分类号: | G06F8/20;G06T13/00 |
代理公司: | 北京品源专利代理有限公司 11332 | 代理人: | 孟金喆 |
地址: | 201802 上海市嘉定*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 用于 对象 状态 切换 系统 方法 | ||
本发明实施例公开了一种用于对象的状态切换系统和方法,所述状态切换系统包括逻辑状态模块、衔接模块和动画模块,其中:所述逻辑状态切换模块,用于获取待切换逻辑状态,以及根据所述待切换逻辑状态进行逻辑状态的切换;所述衔接模块,封装有所述动画模块中的执行接口,用于转发所述逻辑状态模块和/或所述动画模块的事件;所述动画模块,用于进行动画切换。本发明实施例提供的状态切换系统使用衔接模块转发逻辑状态模块和/或动画模块的事件,实现了将逻辑状态切换模块和动画模块解耦,简化了逻辑状态切换层的代码开发复杂度及执行逻辑。
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种用于对象的状态切换系统和方法。
背景技术
Unity目前主要通过动画状态机来播放动画,一个游戏对象通常需要一个逻辑管理器管理逻辑状态(移动,攻击等),需要一个动画状态机来播放逻辑状态对应的当前动画例如跑步、技能动画。逻辑管理器通常是一个循环,每一帧先更新逻辑状态,再更新动画状态,下一帧继续上述内容。当从一个逻辑状态切换到下一个状态时的流程如下:1、开始切换状态,记录下一个状态的Id,设置动画状态机的动画id,动画状态机开始做动画的融合过渡。2、逻辑管理器的循环中每一帧检动画状态机动画过渡是否完成,如果否则下一帧继续检测,直至完成。完成之后更新当前逻辑状态。3、更新下一个逻辑状态。
由此可见,现有技术中逻辑状态切换时逻辑状态和动画状态相互影响,如果当动画过渡时记录id的变量被改变,或者动画状态机出现一些情况(例如被重置或者触发优先级更高的切换覆盖原来的过渡)会导致状态切换出现问题。其次,由于逻辑状态和动画状态的更新有时序状态,需要上层逻辑实现者对底层代码实现有深刻的认识和理解。
发明内容
本发明实施例提供了一种用于对象的状态切换系统和方法,以实现将逻辑状态切换和动画切换解耦,简化逻辑状态切换层的代码开发复杂度及执行逻辑。
第一方面,本发明实施例提供了一种用于对象的状态切换系统,包括逻辑状态模块、衔接模块和动画模块,其中:
所述逻辑状态切换模块,用于获取待切换逻辑状态,以及根据所述待切换逻辑状态进行逻辑状态的切换;
所述衔接模块,封装有所述动画模块中的执行接口,用于转发所述逻辑状态模块和/或所述动画模块的事件;
所述动画模块,用于进行动画切换。
可选的,所述衔接模块具体用于:
在检测到逻辑切换指令时,触发所述动画模块进行动画切换,并接收所述动画模块返回的切换完成状态;
将接收到的动画切换完成状态发送至所述逻辑状态切换模块。
可选的,所述衔接模块具体用于:
在当前逻辑状态更新为所述待切换逻辑状态后,向所述动画模块发送动画结束指令,并接收所述动画模块发送的动画过渡完成状态;
将所述动画过渡完成状态发送至所述逻辑状态切换模块,以结束当前逻辑状态。
可选的,所述逻辑状态切换模块具体用于:
获取逻辑状态队列中队首的逻辑状态作为待切换逻辑状态。
第二方面,本发明实施例还提供了一种状态切换方法,由本发明任意实施例所提供的状态切换系统执行,其特征在于,包括:
逻辑状态切换模块从逻辑状态队列中获取待切换逻辑状态;
逻辑状态切换模块通过衔接模块触发动画模块进行动画切换,并接收所述衔接模块返回的动画切换完成状态;
逻辑状态切换模块将当前逻辑状态更新为所述待切换逻辑状态,完成状态的切换。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海米哈游天命科技有限公司,未经上海米哈游天命科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010279763.X/2.html,转载请声明来源钻瓜专利网。