CN110413271B - 基于Unity3D生命周期的智能消息管理方法 - Google Patents
基于Unity3D生命周期的智能消息管理方法 Download PDFInfo
- Publication number
- CN110413271B CN110413271B CN201910682425.8A CN201910682425A CN110413271B CN 110413271 B CN110413271 B CN 110413271B CN 201910682425 A CN201910682425 A CN 201910682425A CN 110413271 B CN110413271 B CN 110413271B
- Authority
- CN
- China
- Prior art keywords
- message
- terminal
- messagesystemfacade
- messageterminal
- interface
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Telephone Function (AREA)
Abstract
本发明提供了一种基于Unity3D生命周期的智能消息管理方法,所述方法为在操作系统中定义MessageSystemFacade对象、MessageManager对象、MessageTerminalAdapter组件、MessageTerminal对象、以及MessageArgs对象;将定义的对象均继承Unity的MonoBehavior类并重写对应的生命周期,通过定义的对象在唤醒时申请消息终端,在开启时注册监听消息,在销毁时注销监听与返还消息终端,从而实现消息管理,减少用户的开发成本。
Description
技术领域
本发明涉及计算机通讯领域,特别是一种基于Unity3D生命周期的智能消息管理方法。
背景技术
现有操作系统开发中,经常碰到一个问题,使用者在注册消息的时候,专注于功能的调试,功能调通过后,可能就会遗忘对消息进行注销,导致一些其他区域代码出现运行错误,这个时候进行大量排查之后才发现,可能只是因为一个窗口的消息没有注销,却导致了一个影响很大的BUG。
现有技术中公开了“一种弹幕消息的处理方法、装置、终端和存储介质”见申请号为:201811163520.9,公开日为:2019-02-12的中国专利,该一种弹幕消息的处理方法、装置、终端和存储介质,包括当检测到当前直播间启动时,在当前直播间对应的当前类的生命周期函数中,获取预设弹幕分发类的单例弹幕分发对象;将当前类中完成初始化的当前监听器接口对象作为当前传递参数,调用弹幕分发对象中的监听器设置方法,将当前监听器接口对象作为弹幕分发类中的目标监听器接口对象,以建立当前直播间与弹幕分发对象之间的引用关系;基于所述引用关系,当前直播间接收弹幕分发对象所分发的弹幕消息。通过采用上述技术方案,实现了自动识别当前直播间并对弹幕消息进行分发处理,从而极大地提高了弹幕的分发效率和代码的可维护性。该方法所采用的技术方案与本专利并不相同。
Unity3D是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。
发明内容
为克服上述问题,本发明的目的是提供一种基于Unity3D生命周期的智能消息管理方法,解决物体销毁的时候,用户忘记注销消息,使得消息注册依然存在,由此引发不可控的漏洞,浪费许多排查时间,减少用户的开发成本。
本发明采用以下方案实现:一种基于Unity3D生命周期的智能消息管理方法,所述方法为在操作系统中定义MessageSystemFacade对象、MessageManager对象、MessageTerminalAdapter组件、MessageTerminal对象、以及MessageArgs对象;所述MessageSystemFacade对象为:操作系统消息的入口,将用户与具体逻辑隔离开,并提供接口;所述MessageManager对象为:操作系统消息的逻辑代码放置的位置,具有消息终端对象池、消息注册、消息发送、消息注销、消息终端注销的接口;所述MessageTerminalAdapter组件为:消息终端适配器,即Unity的MonoBehaviour类的生命周期代码存储在消息终端适配器;所述MessageTerminal对象为:消息终端的缓存数据与逻辑存放位置;所述MessageArgs对象为:可变的消息参数;将定义的对象均继承Unity的MonoBehavior类并重写对应的生命周期,通过定义的对象在唤醒时申请消息终端,在开启时注册监听消息,在销毁时注销监听与返还消息终端,从而实现消息管理。
进一步的,所述通过定义的对象在唤醒时申请消息终端具体为:消息终端使用者在唤醒时添加MessageTerminalAdapater组件到消息终端使用者上;MessageTerminalAdapater组件向MessageSystemFacade对象申请一个MessageTerminal对象;MessageSystemFacade对象从MessageTerminal对象池中抛出一个出来数据,返回给MessageTerminalAdapater组件。
进一步的,通过定义的对象在开启时注册监听消息具体为:消息终端使用者在开启中使用MessageTerminalAdapater组件添加对应消息的监听;MessageTerminalAdapater组件调用MessageTerminal对象注册接口注册消息;MessageTerminal对象将消息回调缓存下来,并调用MessageSystemFacade对象在消息终端注册接口注册消息类型与消息终端的映射。
进一步的,所述方法还包括消息发送流程即:发送者调用MessageSystemFacade对象的消息发送接口;MessageSystemFacade对象内的MessageManager对象遍历缓存的消息类型与消息终端的映射,找到需要通知的消息终端;消息终端收到消息后,在终端中的消息与回调的映射中,找到对应的回调,判断这个终端是否在激活状态,若在激活状态则传递所需的参数,完成消息发送,不在激活状态则不触发回调。
进一步的,通过定义的对象在销毁时注销监听与返还消息终端具体为:消息终端使用者的游戏对象被销毁,MessageTerminalAdapater组件的销毁被调用,触发MessageTerminal对象调用MessageSystemFacade对象移除终端监听接口;MessageSystemFacade对象内的MessageManager对象遍历缓存的消息类型与消息终端的映射,移除所有消息中对应终端的监听,同时将终端放回对象池中。
本发明的有益效果在于:本发明可以借助Unity引擎运行于其支持的各种平台上,可以实现对消息的智能管理,解决物体销毁的时候,用户忘记注销消息,使得消息注册依然存在,由此引发不可控的漏洞,浪费许多排查时间,减少用户的开发成本;同时也能简化代码,使得用户只需要在对应初始化的生命周期中注册消息,而不需要在销毁的时候来写对应的销毁代码,由此省却了繁琐代码的书写。
附图说明
图1是本发明的对象的定义流程框图。
图2是本发明的实施例中场景输入A之前的示意图。
图3是本发明的实施例中场景输入A之后的示意图。
图4是本发明的实施例中场景输入D之后的示意图。
具体实施方式
下面结合附图对本发明做进一步说明。
请参阅图1所示,本发明提供了一种基于Unity3D生命周期的智能消息管理方法,所述方法为在操作系统中定义MessageSystemFacade对象、MessageManager对象、MessageTerminalAdapter组件、MessageTerminal对象、以及MessageArgs对象;所述MessageSystemFacade对象为:操作系统消息的入口,将用户与具体逻辑隔离开,并提供接口;所述MessageManager对象为:操作系统消息的逻辑代码放置的位置,具有消息终端对象池、消息注册、消息发送、消息注销、消息终端注销的接口;所述MessageTerminalAdapter组件为:消息终端适配器,即Unity的MonoBehaviour类的生命周期代码存储在消息终端适配器;所述MessageTerminal对象为:消息终端的缓存数据与逻辑存放位置;所述MessageArgs对象为:可变的消息参数;将定义的对象均继承Unity的MonoBehavior类并重写对应的生命周期,通过定义的对象在唤醒时申请消息终端,在开启时注册监听消息,在销毁时注销监听与返还消息终端,从而实现消息管理。
其中,所述通过定义的对象在唤醒Awake时申请消息终端具体为:消息终端使用者(即需要接收消息的对象,例如UI按钮触发角色技能,则角色作为消息终端接受触发角色技能的消息,并触发技能;因此该消息终端可以是移动终端,如手机或者平板电脑等,即每个人手上有对应的接收器)在唤醒时添加MessageTerminalAdapater对象组件到消息终端使用者(即接收消息的对象)上;MessageTerminalAdapater组件向MessageSystemFacade对象申请一个MessageTerminal对象;MessageSystemFacade对象从MessageTerminal对象池中抛出Pop一个出来数据,返回给MessageTerminalAdapater组件。一个使用者都对应一个消息终端,该消息终端即为接收消息的对象。
通过定义的对象在开启Start时注册监听消息具体为:消息终端使用者在开启中使用MessageTerminalAdapater组件添加对应消息的监听;MessageTerminalAdapater组件调用MessageTerminal对象注册接口注册消息;MessageTerminal对象将消息回调缓存下来,并调用MessageSystemFacade对象在消息终端注册接口注册消息类型与消息终端的映射。
所述方法还包括消息发送流程即:发送者调用MessageSystemFacade对象的消息发送接口;MessageSystemFacade对象内的MessageManager对象遍历缓存的消息类型与消息终端的映射,找到需要通知的消息终端;消息终端收到消息后,在终端中的消息与回调的映射中,找到对应的回调,判断这个终端是否在激活状态,若在激活状态则传递所需的参数,完成消息发送,不在激活状态则不触发回调。该激活状态即为消息终端在线状态,不在激活状态即消息终端未连接或者离线状态。
通过定义的对象在销毁Destroy时注销监听与返还消息终端具体为:消息终端使用者的游戏对象GameObject被销毁,MessageTerminalAdapater组件的销毁Destroy被调用,触发MessageTerminal对象调用MessageSystemFacade对象移除终端监听接口;MessageSystemFacade对象内的MessageManager对象遍历缓存的消息类型与消息终端的映射,移除所有消息中对应终端的监听,同时将终端放回对象池中。
另外,本发明的设计与目的:1、MessageSystemFacade对象与MessageManager对象:使用外观(Facade)模式,将逻辑与接口分离,使得具体开发人员不用关心具体的逻辑,只关心接口,方便实用;2、MessageManager对象中的对象池:增加消息终端的重复利用率,减少因为对象销毁而导致的消耗;3、MessageTerminalAdapter组件与MessageTerminal对象:使用适配器(Adapter)模式,将与Monobehaviour类相关的逻辑拆分出来,减少与Unity引擎的耦合度,增加可移植性。
下面结合一具体实施例:
一、代码
1、创建
2、消息发送
3、终端
二、场景
1、输入A之前场景:参见图2所示,
参见图3所示,输入A后创建一个新的消息终端使用者,同时打印出当前对象池中的对象数量情况以及接收到消息打印出消息类型。
2、输入D
参见图4所示,输入D后,输入D会删除所有终端使用对象。
总之,本发明可以借助Unity引擎运行于其支持的各种平台上,通过监控引用他的对象的数量来确定他是否被销毁,以此来提供一套简单易用,不需要关注消息注销的消息管理方法,基于这套方法,将可以实现对消息的智能管理,解决物体销毁的时候,用户忘记注销消息,使得消息注册依然存在,由此引发不可控的漏洞,浪费许多排查时间,减少用户的开发成本。
以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。
Claims (4)
1.一种基于Unity3D生命周期的智能消息管理方法,其特征在于:所述方法为在操作系统中定义MessageSystemFacade对象、MessageManager对象、MessageTerminalAdapter组件、MessageTerminal对象、以及MessageArgs对象;所述MessageSystemFacade对象为:操作系统消息的入口,将用户与具体逻辑隔离开,并提供接口;所述MessageManager对象为:操作系统消息的逻辑代码放置的位置,具有消息终端对象池、消息注册、消息发送、消息注销、消息终端注销的接口;所述MessageTerminalAdapter组件为:消息终端适配器,即Unity的MonoBehaviour类的生命周期代码存储在消息终端适配器;所述MessageTerminal对象为:消息终端的缓存数据与逻辑存放位置;所述MessageArgs对象为:可变的消息参数;将定义的对象均继承Unity的MonoBehavior类并重写对应的生命周期,通过定义的对象在唤醒时申请消息终端,在开启时注册监听消息,在销毁时注销监听与返还消息终端,从而实现消息管理;所述通过定义的对象在唤醒时申请消息终端具体为:消息终端使用者在唤醒时添加MessageTerminalAdapater组件到消息终端使用者上;MessageTerminalAdapater组件向MessageSystemFacade对象申请一个MessageTerminal对象;MessageSystemFacade对象从MessageTerminal对象池中抛出一个出来数据,返回给MessageTerminalAdapater组件。
2.根据权利要求1所述的基于Unity3D生命周期的智能消息管理方法,其特征在于:通过定义的对象在开启时注册监听消息具体为:消息终端使用者在开启中使用MessageTerminalAdapater组件添加对应消息的监听;MessageTerminalAdapater组件调用MessageTerminal对象注册接口注册消息;MessageTerminal对象将消息回调缓存下来,并调用MessageSystemFacade对象在消息终端注册接口注册消息类型与消息终端的映射。
3.根据权利要求2所述的基于Unity3D生命周期的智能消息管理方法,其特征在于:所述方法还包括消息发送流程即:发送者调用MessageSystemFacade对象的消息发送接口;MessageSystemFacade对象内的MessageManager对象遍历缓存的消息类型与消息终端的映射,找到需要通知的消息终端;消息终端收到消息后,在消息终端中的消息与回调的映射中,找到对应的回调,判断这个消息终端是否在激活状态,若在激活状态则传递所需的参数,完成消息发送,不在激活状态则不触发回调。
4.根据权利要求2所述的基于Unity3D生命周期的智能消息管理方法,其特征在于:通过定义的对象在销毁时注销监听与返还消息终端具体为:消息终端使用者的游戏对象被销毁,MessageTerminalAdapater组件的销毁被调用,触发MessageTerminal对象调用MessageSystemFacade对象移除终端监听接口;MessageSystemFacade对象内的MessageManager对象遍历缓存的消息类型与消息终端的映射,移除所有消息中对应终端的监听,同时将终端放回对象池中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910682425.8A CN110413271B (zh) | 2019-07-26 | 2019-07-26 | 基于Unity3D生命周期的智能消息管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910682425.8A CN110413271B (zh) | 2019-07-26 | 2019-07-26 | 基于Unity3D生命周期的智能消息管理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110413271A CN110413271A (zh) | 2019-11-05 |
CN110413271B true CN110413271B (zh) | 2022-04-05 |
Family
ID=68363547
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910682425.8A Active CN110413271B (zh) | 2019-07-26 | 2019-07-26 | 基于Unity3D生命周期的智能消息管理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110413271B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110975287A (zh) * | 2019-12-06 | 2020-04-10 | 珠海金山网络游戏科技有限公司 | 一种基于Unity3D的组件优化方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6668284B1 (en) * | 1998-11-04 | 2003-12-23 | Beckman Coulter, Inc. | Software messaging system |
CN103995752A (zh) * | 2014-06-16 | 2014-08-20 | 上海斐讯数据通信技术有限公司 | 模块间通知回调方法及模块交互结构 |
CN107515793A (zh) * | 2017-08-22 | 2017-12-26 | 四川长虹电器股份有限公司 | 一种支持消息机制的模块通信方法 |
-
2019
- 2019-07-26 CN CN201910682425.8A patent/CN110413271B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6668284B1 (en) * | 1998-11-04 | 2003-12-23 | Beckman Coulter, Inc. | Software messaging system |
CN103995752A (zh) * | 2014-06-16 | 2014-08-20 | 上海斐讯数据通信技术有限公司 | 模块间通知回调方法及模块交互结构 |
CN107515793A (zh) * | 2017-08-22 | 2017-12-26 | 四川长虹电器股份有限公司 | 一种支持消息机制的模块通信方法 |
Non-Patent Citations (2)
Title |
---|
【设计模式】使用unity实现外观模式(Facade mode);赖张殷;《CSDN博客https://blog.csdn.net/qq_28221881/article/details/69358226》;20170405;全文 * |
Unity3D 消息管理机制的实现;漫步云端;《CSDN博客https://blog.csdn.net/cooelf/article/details/24181815 》;20140420;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN110413271A (zh) | 2019-11-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106648024A (zh) | 计算对象的上下文历史 | |
CN107783803B (zh) | 智能终端的系统优化方法、装置、存储介质及智能终端 | |
CN109697359A (zh) | 一种消息提醒方法、装置、存储介质及电子设备 | |
CN108540565A (zh) | 一种基于mqtt协议的移动端推送和统计的方法 | |
CN107844341B (zh) | 进程启动的管控方法、装置及存储介质和移动终端 | |
CN107436748A (zh) | 处理第三方应用消息的方法、装置、终端设备及可读介质 | |
CN111641677B (zh) | 消息提醒方法、消息提醒装置及电子设备 | |
CN105101132B (zh) | 一种呼叫转移设置提示方法及终端 | |
CN107831886A (zh) | 关联启动应用的管控方法、装置、存储介质及智能终端 | |
CN107862203A (zh) | 应用程序的控制方法、装置、存储介质及终端 | |
CN105357653A (zh) | 一种提醒方法及终端 | |
CN110413271B (zh) | 基于Unity3D生命周期的智能消息管理方法 | |
CN107018328A (zh) | 一种图像扫描方法方法及图像扫描装置 | |
CN107395494A (zh) | 一种信息提示方法、终端及计算机可读存储介质 | |
KR20200090220A (ko) | 통지 리마인더 방법, 단말기 및 저장 매체 | |
CN111625690A (zh) | 一种对象推荐方法、装置、设备及介质 | |
CN108632454A (zh) | 信息处理方法和装置、计算机可读存储介质、终端 | |
CN105760777B (zh) | 一种基于智能平台的安全信息管理方法及系统 | |
CN108549594B (zh) | 确定用户流失原因的方法及装置 | |
CN113079084B (zh) | 消息传输方法和装置 | |
CN112887488B (zh) | 来电显示方法、装置及电子设备 | |
WO2024027199A1 (zh) | 风险识别方法和电子设备 | |
CN107193707A (zh) | 信息处理方法、装置和移动终端 | |
CN114095467B (zh) | 消息处理方法及装置 | |
CN108011860A (zh) | 一种处理广播消息的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |