CN110704051B - 一种Unity的界面绑定数据方法 - Google Patents

一种Unity的界面绑定数据方法 Download PDF

Info

Publication number
CN110704051B
CN110704051B CN201910887270.1A CN201910887270A CN110704051B CN 110704051 B CN110704051 B CN 110704051B CN 201910887270 A CN201910887270 A CN 201910887270A CN 110704051 B CN110704051 B CN 110704051B
Authority
CN
China
Prior art keywords
binder
interface
interface control
binding
name
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
Application number
CN201910887270.1A
Other languages
English (en)
Other versions
CN110704051A (zh
Inventor
李志健
汪雄军
林逸民
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xiamen Dianchu Technology Co ltd
Original Assignee
Xiamen Dianchu Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Xiamen Dianchu Technology Co ltd filed Critical Xiamen Dianchu Technology Co ltd
Priority to CN201910887270.1A priority Critical patent/CN110704051B/zh
Publication of CN110704051A publication Critical patent/CN110704051A/zh
Application granted granted Critical
Publication of CN110704051B publication Critical patent/CN110704051B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/38Creation or generation of source code for implementing user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及一种Unity的界面绑定数据方法,其通过读取绑定器配置数据生成绑定器,并在绑定器内存储界面控件,然后根据界面控件名查找界面控件对象,并获取界面控件对象中的元数据,将该元数据存储至绑定器的存储字段中,从而实现界面数据绑定。通过本发明的Unity的界面绑定数据方法可以实现界面逻辑和业务逻辑的分离,通过本发明方法,Unity的界面逻辑和业务逻辑可以分给界面和业务逻辑的开发人员分别实现,使业务逻辑的测试以及界面数据的更新更加方便,业务层逻辑的复用率和稳定性也得到了很大地提高。

Description

一种Unity的界面绑定数据方法
技术领域
本发明涉及软件开发设计技术领域,具体涉及一种Unity 的界面绑定数据方法。
背景技术
Unity发展到今天,在不少流行的框架中,业务逻辑接收来自界面的请求,逻辑判断后的结果需要重新发送给界面,此时在业务逻辑中需要通过Unity提供的API查找界面上的控件,然后将数据赋予这些控件完成界面数据的绑定,即业务逻辑层和视图层并没有分离,耦合度较高。因此,基于上述体系结构实现的系统在软件测试过程中,需要通过人工的方式来观察控件的表现是否符合预期效果,对于特殊情况,则需要精心计划和不断尝试,不仅耗时长而且效率低。业务逻辑层和视图层的高度耦合的另外一个不足在于,当视图层发生改变时需要改变相应的业务逻辑,导致代码复用率较低,降低了软件的稳定性。
有鉴于此,本设计人针对上述Unity存在的问题而深入构思,遂有本案产生。
发明内容
本发明的目的在于提供一种Unity 的界面绑定数据方法,其可以实现界面与业务逻辑的分离。
为实现上述目的,本发明采用技术方案是:
一种Unity 的界面绑定数据方法,其包括:
通过读取绑定器配置数据,生成绑定器:当Unity界面首次加载时,读取绑定器配置数据,并将其反序列化C#对象,从而生成绑定器;其中,所述绑定器配置数据包含界面控件名、绑定器对象名;所述绑定器包含有存储字段,用于存储Unity界面控件元数据;
将绑定器与界面进行绑定:首先根据绑定器配置数据中的界面控件名,并使用Unity的查找API获取界面控件对象;然后根据绑定器对象名并使用C#反射技术获取界面控件对象内的元数据;最后将该获取的界面对象的元数据存储至绑定器的存储字段中,即完成了绑定器与界面的绑定。
所述绑定器包括
成员绑定器,用于将数据绑定到界面控件的成员上;
方法绑定器,用于调用界面控件的方法改变控件内部数据;
资源绑定器,用于加载Unity资源并绑定到界面控件的成员上;
DOTWeen绑定器,用于触发界面补间动画;
链条绑定器,用于触发多个绑定器。
所述绑定器对象名包括成员名、方法名以及每个参数的类型、成员绑定器名;
所述成员绑定器内的存储字段用于存储Unity界面控件成员元数据的;将成员绑定器与界面绑定时,首先根据界面控件名并使用Unity的查找API取得界面控件对象;然后再根据成员名并使用C#的反射技术获取界面控对象内的成员元数据;最后将该成员元数据存储至成员绑定器的存储字段中,即完成了成员绑定器与界面的绑定;
所述方法绑定器内的存储字段用于存储Unity界面控件方法元数据的字段;将方法绑定器与界面绑定时,首先根据界面控件名并使用Unity的查找API取得界面控件对象;然后根据方法名、每个参数的类型并使用C#的反射技术获取界面控件对象内的方法元数据;最后,将该方法元数据绑存储到方法绑定器的存储字段中,即完成方法绑定器与界面的绑定;
所述资源绑定器的存储字段用于存储成员绑定器、绑定器配置;将资源绑定器与界面绑定时,首先根据界面控件名并使用Unity的查找API取得界面控件对象;然后再根据成员绑定器名并使用C#的反射技术获取界面控件对象内的成员绑定器;最后将该成员绑定器存储至资源绑定器的存储字段中,即实现资源绑定器与界面的绑定;
所述DOTween绑定器的存储字段用于存储DOTween方法元数据、绑定器配置;将DOTween绑定器与界面绑定时,首先根据界面控件名并使用Unity的查找API取得界面控件对象,然后再根据界面控件对象、方法名、每个参数的类型并使用C#的反射技术获取DOTween扩展对象内的方法元数据,最后将该DOTween扩展对象内的方法元数据保存至DOTween绑定器的存储字段中,即实现DOTween绑定器与界面的绑定;
所述链条绑定器的存储字段则用于存储多个绑定器的链表,绑定器配置数据内包含了多个绑定器配置数据,根据每个绑定器的配置数据生成以上对应的绑定器并存储在链表中;将链表存储在链条绑定器的存储字段中,即实现链条绑定器与界面的绑定。
所述绑定器配置数据格式为JSON。
采用上述方案后,本发明通过读取绑定器配置数据生成绑定器,并在绑定器内存储界面控件,然后根据界面控件名查找界面控件对象,并获取界面控件对象中的元数据,将该元数据存储至绑定器的存储字段中,从而实现界面数据绑定。通过本发明的界面绑定数据方法可以实现Unity的业务逻辑与界面逻辑的分离,当改变业务时,修改该视图模型即可,绑定器会从视图模型的数据包接口中获取数据,并将该数据绑定到界面,视图模型不需要知道界面在哪里,也不需要知道界面包含多少元素;当改变界面时,只需要改变绑定器配置数据即可,修改后的绑定器配置数据会重新绑定到界面上,实现界面的更新,此时,视图模型不需要改变,视图模型的数据包接口也不需要改变。总之,通过本发明的Unity的界面绑定数据方法可以实现界面逻辑和业务逻辑的分离,通过本发明方法,Unity的界面逻辑和业务逻辑可以分给界面和业务逻辑的开发人员分别实现,使业务逻辑的测试以及界面数据的更新更加方便,业务层逻辑的复用率和稳定性也得到了很大地提高。
附图说明
图1为本发明的处理流程图;
图2为本发明绑定器分类图。
具体实施方式
为使本发明的目的、技术方案和效果更清楚明白,以下将结合附图和具体实施例,对本发明进行进一步的说明。应当理解,此处描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1和图2所示,本发明揭示了一种Unity 的界面绑定数据方法,其通过读取绑定器配置数据,生成绑定器;然后将绑定器与界面进行绑定,从而实现界面与业务逻辑的彻底分离,提高软件的可移植性,界面和业务逻辑可以分给不同的开发人员分别实现,方便测试控制器内的业务逻辑,使开发人员非常方便更新界面数据以及复用业务层逻辑。
其中,绑定器配置数据是界面开发人员以JSON格式编写的数据,该绑定器配置数据包含界面控件名、绑定器对象名。当Unity界面首次加载时,读取绑定器配置数据,并将其反序列化C#对象,从而生成多个绑定器,例如成员绑定器、方法绑定器、资源绑定器、DOTWeen绑定器,链条绑定器。
其中,成员绑定器用于将数据绑定到界面控件的成员上;方法绑定器用于调用界面控件的方法改变控件内部数据;资源绑定器用于加载Unity资源并绑定到界面控件的成员上;DOTween绑定器用于触发界面补间动画;链条绑定器则用于触发多个绑定器。
绑定器包含有存储字段,用于存储Unity界面控件元数据。在将绑定器与界面绑定时,首先根据绑定器配置数据中的界面控件名,并使用Unity的查找API获取界面控件对象;然后根据绑定器对象名并使用C#反射技术获取界面控件对象内的元数据;最后将该获取的界面对象的元数据存储至绑定器的存储字段中,即完成了绑定器与界面的绑定。
不同的绑定器与界面的绑定略有不同,各类型的绑定器与界面的绑定过程如下:
成员绑定器内的存储字段是用于存储Unity界面控件成员元数据的。在生成成员绑定器时,绑定器配置数据内包含界面控件名、成员名。而将成员绑定器与界面绑定时,首先根据界面控件名并使用Unity的查找API取得界面控件对象;然后再根据成员名并使用C#的反射技术获取界面控件对象内的成员元数据;最后将该成员元数据存储至成员绑定器的存储字段中。由于该成员元数据是用来控制界面数据的,所以保存了该成员元数据,即完成了成员绑定器与界面的绑定,绑定完成后便可以将业务层传递过来的数据绑定到界面上。
方法绑定器内的存储字段是用于存储Unity界面控件方法元数据的字段的,在生成方法绑定器时,绑定器配置数据内包含了界面控件信息、方法名以及每个参数的类型。而将方法绑定器与界面绑定时,首先根据界面控件名并使用Unity的查找API取得界面控件对象;然后根据方法名、每个参数的类型并使用C#的反射技术获取界面控件对象内的方法元数据;最后,将该方法元数据绑存储到方法绑定器的存储字段中,即完成方法绑定器与界面的绑定。由于方法元数据是用来触发界面控件方法的,而方法会改变界面的数据,所以方法绑定器与界面绑定之后,绑定器内包含了每个参数的数据源键,便可以用业务层传递过来的数据调用方法来改变界面的数据。
资源绑定器的存储字段是用于存储成员绑定器、绑定器配置的,在生成资源绑定器时,绑定器配置数据内包含了界面控件名、成员绑定器名。将资源绑定器与界面绑定时,首先根据界面控件名并使用Unity的查找API取得界面控件对象;然后再根据成员绑定器名并使用C#的反射技术获取界面控件对象内的成员绑定器;最后将该成员绑定器存储至资源绑定器的存储字段中,即实现资源绑定器与界面的绑定。由于成员绑定器是用来控制界面数据的,所以资源绑定器与界面绑定后,便可以使用业务层传递过来的资源地址调用Unity的资源加载器加载对应类型的资源并绑定到界面上。
DOTween绑定器的存储字段是用于存储DOTween方法元数据、绑定器配置的,在生成DOTween绑定器时,绑定器配置数据内包含了界面控件名、方法名以及每个参数的类型。将DOTween绑定器与界面绑定时,首先根据界面控件名并使用Unity的查找API取得界面控件对象,然后再根据界面控件对象、方法名、每个参数的类型并使用C#的反射技术获取DOTween扩展对象内的方法元数据,最后将该DOTween扩展对象内的方法元数据保存至DOTween绑定器的存储字段中,即实现DOTween与界面的绑定。由于DOTween方法元数据是用来触发补间动画的,所以保存了该方法元数据之后,绑定器内包含了每个参数的数据源键,便可以用业务层传递过来的数据调用DOTween的方法。
链条绑定器的存储字段则用于存储多个绑定器的链表,绑定器配置数据内包含了多个绑定器配置数据,根据每个绑定器的配置数据生成以上对应的绑定器并存储在链表中;将链表存储在链条绑定器的存储字段中,即实现链条绑定器与界面的绑定。由于该链表包含多个绑定器,所以保存了该链表以后,便可以通过从控制器推送过来的LuaTable中获取数据,串行调用多个绑定器。
在具体实施过程中,根据业务需要开发出很多包含视图模型的功能,视图模型包含了读写接口,视图模型不需要知道界面在哪里,不需要知道界面包含多少元素,绑定器对象会从数据包接口中获取绑定数据并绑定到界面上,这样就使得界面与业务逻辑彻底分离。当界面需要改变的时候,如果业务逻辑没有改变,只需要改变绑定配置表,视图模型接口也不需要改变。
以上所述仅为本发明实施实例,并不用以限制本发明,凡在本发明的精神和原则之内的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (2)

1.一种Unity 的界面绑定数据方法,其特征在于:所述方法包括:
读取绑定器配置数据,生成绑定器:当Unity界面首次加载时,读取绑定器配置数据,并将其反序列化C#对象,从而生成绑定器;其中,所述绑定器配置数据包含界面控件名、绑定器对象名;所述绑定器包含有存储字段,用于存储Unity界面控件元数据;
将绑定器与界面进行绑定:首先根据绑定器配置数据中的界面控件名,并使用Unity的查找API获取界面控件对象;然后根据绑定器对象名并使用C#反射技术获取界面控件对象内的元数据;最后将该获取的界面对象的元数据存储至绑定器的存储字段中,即完成了绑定器与界面的绑定;
所述绑定器包括
成员绑定器,用于将数据绑定到界面控件的成员上;
方法绑定器,用于调用界面控件的方法改变控件内部数据;
资源绑定器,用于加载Unity资源并绑定到界面控件的成员上;
DOTWeen绑定器,用于触发界面补间动画;
链条绑定器,用于触发多个绑定器;
所述绑定器对象名包括成员名、方法名以及每个参数的类型、成员绑定器名;
所述成员绑定器内存储字段用于存储Unity界面控件成员元数据的;将成员绑定器与界面绑定时,首先根据界面控件名并使用Unity的查找API取得界面控件对象;然后再根据成员名并使用C#的反射技术获取界面控对象内的成员元数据;最后将该成员元数据存储至成员绑定器的存储字段中,即完成了成员绑定器与界面的绑定;
所述方法绑定器内的存储字段用于存储Unity界面控件方法元数据的字段;将方法绑定器与界面绑定时,首先根据界面控件名并使用Unity的查找API取得界面控件对象;然后根据方法名、每个参数的类型并使用C#的反射技术获取界面控件对象内的方法元数据;最后,将该方法元数据绑存储到方法绑定器的存储字段中,即完成方法绑定器与界面的绑定;
所述资源绑定器的存储字段用于存储成员绑定器、绑定器配置;将资源绑定器与界面绑定时,首先根据界面控件名并使用Unity的查找API取得界面控件对象;然后再根据成员绑定器名并使用C#的反射技术获取界面控件对象内的成员绑定器;最后将该成员绑定器存储至资源绑定器的存储字段中,即实现资源绑定器与界面的绑定;
所述DOTween绑定器的存储字段用于存储DOTween方法元数据、绑定器配置;将DOTween绑定器与界面绑定时,首先根据界面控件名并使用Unity的查找API取得界面控件对象,然后再根据界面控件对象、方法名、每个参数的类型并使用C#的反射技术获取DOTween扩展对象内的方法元数据,最后将该DOTween扩展对象内的方法元数据保存至DOTween绑定器的存储字段中,即实现DOTween绑定器与界面的绑定;
所述链条绑定器的存储字段则用于存储多个绑定器的链表,绑定器配置数据内包含了多个绑定器配置数据,根据每个绑定器的配置数据生成以上对应的绑定器并存储在链表中;将链表存储在链条绑定器的存储字段中,即实现链条绑定器与界面的绑定。
2.根据权利要求1所述的一种Unity 的界面绑定数据方法,其特征在于:所述绑定器配置数据格式为JSON。
CN201910887270.1A 2019-09-19 2019-09-19 一种Unity的界面绑定数据方法 Active CN110704051B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910887270.1A CN110704051B (zh) 2019-09-19 2019-09-19 一种Unity的界面绑定数据方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910887270.1A CN110704051B (zh) 2019-09-19 2019-09-19 一种Unity的界面绑定数据方法

Publications (2)

Publication Number Publication Date
CN110704051A CN110704051A (zh) 2020-01-17
CN110704051B true CN110704051B (zh) 2022-08-16

Family

ID=69195665

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910887270.1A Active CN110704051B (zh) 2019-09-19 2019-09-19 一种Unity的界面绑定数据方法

Country Status (1)

Country Link
CN (1) CN110704051B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111984359A (zh) * 2020-08-31 2020-11-24 湖南快乐阳光互动娱乐传媒有限公司 一种控件的动态生成和渲染方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104573287A (zh) * 2015-02-06 2015-04-29 成都幻实科技有限公司 基于界面绑定统一模型的数字仿真框架设计方法
CN106126257A (zh) * 2016-06-30 2016-11-16 珠海金山网络游戏科技有限公司 一种界面生成的系统和方法
CN108255729A (zh) * 2018-01-24 2018-07-06 珠海金山网络游戏科技有限公司 一种基于Unity平台的手机游戏自动化测试方法和系统
CN110032368A (zh) * 2019-04-22 2019-07-19 成都四方伟业软件股份有限公司 信息配置方法及装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8531447B2 (en) * 2008-04-03 2013-09-10 Cisco Technology, Inc. Reactive virtual environment

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104573287A (zh) * 2015-02-06 2015-04-29 成都幻实科技有限公司 基于界面绑定统一模型的数字仿真框架设计方法
CN106126257A (zh) * 2016-06-30 2016-11-16 珠海金山网络游戏科技有限公司 一种界面生成的系统和方法
CN108255729A (zh) * 2018-01-24 2018-07-06 珠海金山网络游戏科技有限公司 一种基于Unity平台的手机游戏自动化测试方法和系统
CN110032368A (zh) * 2019-04-22 2019-07-19 成都四方伟业软件股份有限公司 信息配置方法及装置

Also Published As

Publication number Publication date
CN110704051A (zh) 2020-01-17

Similar Documents

Publication Publication Date Title
CN104391725B (zh) 页面展示方法和页面展示装置
CN101421711B (zh) 用于资源受限设备的虚拟执行系统
CN105760184B (zh) 一种加载组件的方法和装置
CN1517885B (zh) 关于利用原子性更新的中央高速缓冲存储器的方法和系统
CN100456303C (zh) 文件删除方法和文件打开方法
CN113297320B (zh) 分布式数据库系统及数据处理方法
CN105426223B (zh) 应用加载方法和装置
JP2005293578A (ja) 属性を介して制御されるテストケース継承
CN106648682B (zh) 一种面向嵌入式系统开发的动态数据通用框架
JPH1040087A (ja) ソフトウェア工学で使われるデータモデルの取り扱い方法
CN101221504B (zh) 测试脚本的调度执行系统
CN104424030B (zh) 多进程操作共享内存的方法和装置
CN100507871C (zh) 嵌入式文件系统的测试方法及系统
CN105975352A (zh) 一种缓存数据处理方法及服务器
CN114529417A (zh) 执行交易的方法、区块链、主节点和从节点
CN110704051B (zh) 一种Unity的界面绑定数据方法
CN102054041A (zh) 元数据升级方法和系统
US11762760B1 (en) Scalable test workflow service
CN101136780A (zh) 获取用户命令信息的方法、系统及用户命令注册的装置
CN110019527B (zh) 从库读取方法、相关装置和设备
CN105988943B (zh) 一种驱动无线适配器的方法及装置
WO2018022303A1 (en) Capturing commands in a multi-engine graphics processing unit
CN107506378B (zh) 数据库访问的实现方法和装置
CN106980685B (zh) 数据处理方法及数据处理装置
CN115270731A (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