CN109558159B - 游戏中用户界面的更新方法和装置 - Google Patents
游戏中用户界面的更新方法和装置 Download PDFInfo
- Publication number
- CN109558159B CN109558159B CN201811508100.XA CN201811508100A CN109558159B CN 109558159 B CN109558159 B CN 109558159B CN 201811508100 A CN201811508100 A CN 201811508100A CN 109558159 B CN109558159 B CN 109558159B
- Authority
- CN
- China
- Prior art keywords
- node
- linked list
- current frame
- updated
- ancestor
- 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
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/656—Updates while running
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Human Computer Interaction (AREA)
- User Interface Of Digital Computer (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种游戏中用户界面的更新方法和装置,包括:接收游戏中UI对应的元素树中的目标节点的更新命令,根据更新命令,仅对元素树中目标节点以及目标节点的子孙节点进行更新,为每个被更新的节点分别生成新的渲染命令,根据被更新节点的新的渲染命令更新当前帧的前一帧的链表,得到当前帧的链表,当前帧的链表和前一帧的链表均由元素树中的所有节点的渲染命令链接得到,根据当前帧的链表进行渲染得到当前帧对应的UI。所述方法中,当目标节点接收到更新命令时,仅需要目标节点以及目标节点的子孙节点进行更新,对元素树中的其他节点不需要更新,从而降低了UI更新占用的计算资源。
Description
技术领域
本发明涉及游戏领域,尤其涉及一种游戏中用户界面(User Interface,简称UI)的更新方法和装置。
背景技术
UI是游戏中玩家与机器交互的媒介,UI中包括一些信息和用于人机交互的按钮。UI中的信息包括小地图、道具栏、角色的各种状态信息等。UI中的按钮包括一些技能按钮、功能按钮等。
在游戏运行过程中,UI需要不断更新。UI在逻辑上是由各类子节点按照树形层级结构组织起来的,节点在功能上分为两种:负责实际逻辑,以及负责组织层级。不同节点可以拥有其中一种或是两种功能。现有技术中,对于树形组织结构的UI,在更新时可以采用深度优先遍历算法,遍历所有节点。每个节点被遍历时需要执行更新逻辑,计算变换矩阵,以及输出渲染命令给绘制层。
但是,现有技术中,每一帧都需要遍历所有节点,对每个节点执行更新逻辑、计算变换矩阵、输出渲染命令,导致UI更新占用较多的计算资源,影响游戏性能。
发明内容
本发明提供一种游戏中用户界面的更新方法和装置,能够降低游戏中UI更新占用的计算资源。
本发明第一方面提供一种游戏中用户界面的更新方法,包括:
接收游戏中用户界面UI对应的元素树中的目标节点的更新命令;
根据所述更新命令,仅对所述目标节点以及所述目标节点的子孙节点进行更新,为每个被更新的节点分别生成新的渲染命令;
根据所述被更新节点的新的渲染命令更新当前帧的前一帧的链表,得到所述当前帧的链表,所述当前帧的链表和所述前一帧的链表均由所述元素树中的所有节点的渲染命令链接得到;
根据所述当前帧的链表进行渲染得到所述当前帧对应的UI。
可选的,所述根据所述更新命令,仅对所述目标节点以及所述目标节点的子节点进行更新,为每个被更新的节点分别生成新的渲染命令,包括:
根据所述更新命令,将所述目标节点以及所述目标节点的子孙节点的状态设置为全更新状态,将所述目标节点的祖先节点的状态设置为链表更新状态;
根据所述目标节点以及所述目标节点的子孙节点的状态,对所述目标节点以及所述目标节点的子孙节点进行更新,为每个被更新的节点分别生成新的渲染命令。
可选的,所述根据所述被更新节点的新的渲染命令更新当前帧的前一帧的链表,得到所述当前帧的链表,包括:
针对所述每个被更新节点,根据该被更新节点的新的渲染命令和该被更新节点的所有子孙节点在所述当前帧中的链表段更新该被更新节点在所述前一帧中的链表段,得到该被更新节点在当前帧中的链表段,该被更新节点在所述当前帧中的链表段为所述当前帧的链表的一部分,该被更新节点在所述前一帧中的链表段为所述前一帧的链表的一部分;
保存该被更新节点在所述当前帧中的链表段,并将该被更新节点在所述当前帧中的链表段传递给该被更新节点的父节点;
针对所述目标节点的每个祖先节点,根据该祖先节点的状态和该祖先节点的所有子孙节点在所述当前帧中的链表段更新该祖先节点在所述前一帧中的链表段,得到该祖先节点在所述当前帧中的链表段,该祖先节点在所述当前帧中的链表段为所述当前帧的链表的一部分,该祖先节点在所述前一帧中的链表段为所述前一帧的链表的一部分;
保存该祖先节点在所述当前帧中的链表段,如果该祖先节点具有父节点,则将该祖先节点在所述当前帧中的链表段传递给该祖先节点的父节点;
如果该祖先节点为根节点,则将该祖先节点在当前帧中的链表段传递给渲染模块,该根节点在当前帧中的链表段为所述当前帧的链表。
可选的,根据所述更新命令,将所述目标节点以及所述目标节点的子孙节点的状态设置为全更新状态,将所述目标节点的祖先节点的状态设置为链表更新状态,包括:
根据所述更新命令递归的向所述目标节点的子算节点传递全更新命令,所述全更新命令用于指示将节点的状态设置为全更新状态;
递归的向所述目标节点的祖先节点传递链表更新命令,所述链表更新命用于指示将节点的状态设置为链表更新状态。
可选的,根据该被更新节点的新的渲染命令和该被更新节点的所有子孙节点在所述当前帧中的链表段更新该被更新节点在所述前一帧中的链表段,得到该被更新节点在当前帧中的链表段,包括:
将该被更新节点的新的渲染命令与该被更新节点的子节点在所述当前帧中的链表段进行链接,得到第一链表段;
将该被更新节点在所述前一帧中的链表段中的头指针指向的节点的尾指针指向所述第一链表段的头指针,得到该被更新节点在当前帧中的链表段。
可选的,根据该祖先节点的状态和该祖先节点的所有子孙节点在所述当前帧中的链表段更新该祖先节点在所述前一帧中的链表段,得到该祖先节点在所述当前帧中的链表段,包括:
当该祖先状态的节点为链表更新状态时,将该祖先节点在所述前一帧中的链表段中的头指针指向的节点的尾指针指向该祖先节点的所有子孙节点在所述当前帧中的链表段的头指针,得到该祖先节点在所述当前帧中的链表段。
本发明第二方面提供一种游戏中用户界面的更新装置,包括:
接收模块,用于接收游戏中用户界面UI对应的元素树中的目标节点的更新命令;
更新模块,用于根据所述更新命令,仅对所述目标节点以及所述目标节点的子孙节点进行更新,为每个被更新的节点分别生成新的渲染命令;
链接模块,用于根据所述被更新节点的新的渲染命令更新当前帧的前一帧的链表,得到所述当前帧的链表,所述当前帧的链表和所述前一帧的链表均由所述元素树中的所有节点的渲染命令链接得到;
渲染模块,用于根据所述当前帧的链表进行渲染得到所述当前帧对应的UI。
可选的,所述更新模块具体用于:
根据所述更新命令,将所述目标节点以及所述目标节点的子孙节点的状态设置为全更新状态,将所述目标节点的祖先节点的状态设置为链表更新状态;
根据所述目标节点以及所述目标节点的子孙节点的状态,对所述目标节点以及所述目标节点的子孙节点进行更新,为每个被更新的节点分别生成新的渲染命令。
可选的,所述链接模块具体用于:
针对所述每个被更新节点,根据该被更新节点的新的渲染命令和该被更新节点的所有子孙节点在所述当前帧中的链表段更新该被更新节点在所述前一帧中的链表段,得到该被更新节点在当前帧中的链表段,该被更新节点在所述当前帧中的链表段为所述当前帧的链表的一部分,该被更新节点在所述前一帧中的链表段为所述前一帧的链表的一部分;
保存该被更新节点在所述当前帧中的链表段,并将该被更新节点在所述当前帧中的链表段传递给该被更新节点的父节点;
针对所述目标节点的每个祖先节点,根据该祖先节点的状态和该祖先节点的所有子孙节点在所述当前帧中的链表段更新该祖先节点在所述前一帧中的链表段,得到该祖先节点在所述当前帧中的链表段,该祖先节点在所述当前帧中的链表段为所述当前帧的链表的一部分,该祖先节点在所述前一帧中的链表段为所述前一帧的链表的一部分;
保存该祖先节点在所述当前帧中的链表段,如果该祖先节点具有父节点,则将该祖先节点在所述当前帧中的链表段传递给该祖先节点的父节点;
如果该祖先节点为根节点,则将该祖先节点在当前帧中的链表段传递给渲染模块,该根节点在当前帧中的链表段为所述当前帧的链表。
可选的,所述更新模块具体用于:
根据所述更新命令递归的向所述目标节点的子算节点传递全更新命令,所述全更新命令用于指示将节点的状态设置为全更新状态;
递归的向所述目标节点的祖先节点传递链表更新命令,所述链表更新命用于指示将节点的状态设置为链表更新状态。
可选的,所述链接模块具体用于:
将该被更新节点的新的渲染命令与该被更新节点的子节点在所述当前帧中的链表段进行链接,得到第一链表段;
将该被更新节点在所述前一帧中的链表段中的头指针指向的节点的尾指针指向所述第一链表段的头指针,得到该被更新节点在当前帧中的链表段。
可选的,所述链接模块具体用于:
当该祖先状态的节点为链表更新状态时,将该祖先节点在所述前一帧中的链表段中的头指针指向的节点的尾指针指向该祖先节点的所有子孙节点在所述当前帧中的链表段的头指针,得到该祖先节点在所述当前帧中的链表段。
本发明第三方面提供一种终端设备,包括:处理器、存储器和收发器,所述存储器用于存储指令,所述收发器用于和其他设备通信,所述处理器用于执行所述存储器中存储的指令,以使所述终端设备执行如本发明第一方面所述的方法。
本发明第四方面提供一种计算机可读存储介质,所述计算机可读存储介质存储有指令,当所述指令被执行时,使得计算机执行如本发明第一方面所述的方法。
本发明提供的游戏中用户界面的更新方法和装置,包括:接收游戏中UI对应的元素树中的目标节点的更新命令,根据更新命令,仅对元素树中目标节点以及目标节点的子孙节点进行更新,为每个被更新的节点分别生成新的渲染命令,根据被更新节点的新的渲染命令更新当前帧的前一帧的链表,得到当前帧的链表,当前帧的链表和前一帧的链表均由元素树中的所有节点的渲染命令链接得到,根据当前帧的链表进行渲染得到当前帧对应的UI。所述方法中,当目标节点接收到更新命令时,仅需要目标节点以及目标节点的子孙节点进行更新,对元素树中的其他节点不需要更新,从而降低了UI更新占用的计算资源。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
图1为元素树的一种示意图;
图2为本发明实施例一提供的游戏中用户界面的更新方法的流程图;
图3为本发明实施例三提供的一种游戏中用户界面的更新装置;
图4为本发明实施例三提供的终端设备的结构示意图。
通过上述附图,已示出本发明明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本发明构思的范围,而是通过参考特定实施例为本领域技术人员说明本发明的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
本发明提供一种游戏中用户界面的更新方法,应用在终端设备中,该终端设备可以为智能手机、平板电脑、笔记本电脑、游戏机、个人数字助理(Personal DigitalAssistant,PDA)等电子设备。
游戏的用户界面(User Interface,简称UI)中包括很多元素,该元素可以是控件或者信息,UI中的元素可以通过一个元素树表示,UI对应的元素树包括多个节点,每个节点对应UI中的一个元素。每个节点上存储有该节点的父节点、子节点列表,以及渲染命令等信息。
图1为元素树的一种示意图,如图1所示,该元素树包括12个节点,节点A为根节点,该元素树只有一个根节点。该根节点具有三个子节点:子节点B、子节点C和子节点D。节点B具有两个子节点:节点E和节点F,节点C具有一个子节点:节点G,节点D具有两个子节点:节点H和节点I,节点H具有一个子节点K,节点I具有一个子节点L。
以下对元素树中一些概念进行说明。
节点的度:节点所拥有的子树的个数。图1中节点A的度为3,节点B和节点D的度均为2,节点C、节点G、节点H和节点I的度均为1,节点E、节点F、节点J、节点K和节点L的度均为0。
根节点:没有父节点的节点。图1中节点A没有父节点,因此,A节点为根节点。
叶子节点:度为0的节点或者没有子节点的节点。图1中节点E、节点F、节点J、节点K和节点L的度均为0,因此,节点E、节点F、节点J、节点K和节点L均为叶子节点。
父节点:节点的上层节点称为该节点的父节点。图1中节点B、C、D的父节点均为节点A,节点G的父节点为节点C,节点K的父节点为节点H。
子节点:节点的下层节点称为该节点的子节点。图1中节点B是节点A的子节点,节点E和节点F是节点B的子节点,节点L是节点I的子节点。
子孙节点:节点的子孙节点是指以该节点为根的子树中的所有节点。图1中以节点C为例,节点C的子孙节点包括节点G和节点J,以节点D为例,节点D的子孙节点包括节点H、节点I、节点K和节点L。以节点H为例,节点H的子孙节点为节点K。
祖先节点:节点的祖先节点是指从根节点到该节点所经分支上的所有节点。图1中节点B、节点C、节点D的祖先节点均为节点A,节点G的祖先节点包括节点A和几点C,节点H的祖先节点包括节点D和节点A,节点L的祖先节点包括节点A、节点D和节点I。
图2为本发明实施例一提供的游戏中用户界面的更新方法的流程图,本实施例的方法由终端设备执行,具体由终端设备上的游戏应用(application,app)执行,如图1所示,本实施例提供的方法包括以下步骤:
步骤S101、接收游戏中UI对应的元素树中的目标节点的更新命令。
当用户触发目标节点的位置变换、节点上的图片变更、节点缩放等操作时,目标节点会接收到更新命令,更新命令用于更新该目标节点。
步骤S102、根据更新命令,仅对目标节点以及目标节点的子孙节点进行更新,为每个被更新的节点分别生成新的渲染命令。
元素树中的节点是为了展示和点击,绝大多数都是静止的,大多数节点更新频率相较于帧率非常低,现有技术中,任意一个节点收到更新命令时,需要对元素树中的所有节点进行更新,更新过程中的大量计算都是重复的,造成了计算资源的浪费。
而本实施例中,仅对元素树中的目标节点以及目标节点的子孙节点进行更新,为每个被更新的节点分别生成新的渲染命令,对于元素树中除目标节点以及目标节点的子孙节点外的其他节点不更新,从而降低了UI更新占用的计算资源。
对每个节点更新时,需要执行更新逻辑,计算变换矩阵以及生成新的渲染命令等操作。
一种可选方式中,终端设备根据更新命令,将目标节点以及目标节点的子孙节点的状态设置为全更新状态,将目标节点的祖先节点的状态设置为链表更新状态。根据目标节点以及目标节点的子孙节点的状态,对目标节点以及目标节点的子孙节点进行更新,为每个被更新的节点分别生成新的渲染命令。
通过状态标记元素树中的节点共有三种状态:全更新状态、链表更新状态和非更新状态。图1所示元素树中,假设目标节点为节点D,则目标节点的子孙节点包括:节点H、节点I、节点K和节点L,目标节点的祖先节点为节点A。
节点A的状态为链表更新状态,节点D、节点H、节点I、节点K和节点L的状态为全更新状态。节点B、节点C、节点E、节点F、节点G和节点J的状态为非更新状态。
对于全更新状态的节点需要更新节点,生成新的渲染命令,根据新的渲染命令更新该节点在前一帧中的链表段。对于链表更新状态的节点不需要更新节点,只需要根据子节点的链表段更新该节点在前一帧中的链表段。对于非更新状态的节点,不需要执行任何操作。
可选的,可以通过如下方式设置节点的状态:根据更新命令递归的向目标节点的子孙节点传递全更新命令,该全更新命令用于指示将节点的状态设置为全更新状态。递归的向目标节点的祖先节点传递链表更新命令,链表更新命用于指示将节点的状态设置为链表更新状态。
本实施例中递归的更新节点的状态时,以目标节点为起始节点,向下传递的所有节点的状态都为全更新状态,向上传递的所有节点的状态为链表更新状态。这是因为,当子树的根节点更新时,该子树上的所有节点的绘制命令都需要更新。
步骤S103、根据被更新节点的新的渲染命令更新当前帧的前一帧的链表,得到当前帧的链表,当前帧的链表和前一帧的链表均由元素树中的所有节点的渲染命令链接得到。
当前帧的前一帧是指与当前帧相邻且播放时间在当前帧之前的帧,本实施例中,元素树中的每个节点都会保存自己在当前帧中的链表段,以便于后续帧能够根据该链表段重新链接。
本实施例中,节点的渲染命令以链表的形式存在和存储,链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。
本实施例中链表和链表段由渲染命令链接组成,链表或者链表段具有一个头指针和一个尾指针,通过头指针和为尾指针与其他链表或者链表段链接,头指针为链表指向的前一个节点的标识,尾指针为链表指向的后一个节点的标识。
本实施例中,链表段属于链表的一部分,一个链表由多个链表段组成。当前帧的链表由元素树中的所有节点在当前帧中生成的渲染命令链接得到,前一帧的链表由元素树中的所有节点在前一帧中生成的渲染命令连接得到。
节点在当前帧中的链表段由该节点以及该节点的所有子孙节点在当前帧中生成的渲染命令链接得到,节点在前一帧中的链表段由该节点以及该节点的所有子孙节点在前一帧中生成的渲染命令链接得到。
针对每个被更新节点,根据该被更新节点的新的渲染命令和该被更新节点的所有子孙节点在当前帧中的链表段更新该被更新节点在前一帧中的链表段,得到该被更新节点在当前帧中的链表段。该被更新节点在当前帧中的链表段为当前帧的链表的一部分,该被更新节点在前一帧中的链表段为前一帧的链表的一部分。
该被更新节点的所有子孙节点在当前帧中的链表段由该节点的子节点发送给该更新节点。对于每个被更新节点主要完成两个操作:更新节点和重新连接链表。被更新节点在完成更新后,会生成新的渲染命令,该新的渲染命令可能是一个或者多个。
将该被更新节点的新的渲染命令与该被更新节点的子节点在当前帧中的链表段进行链接,得到第一链表段。相当于将该被更新节点的新的渲染命令和子节点在当前帧中的链表段进行拼接。
其中,将该被更新节点的新的渲染命令与该被更新节点的子节点在当前帧中的链表段进行链接时,可以将所有的新的渲染命令链接在该被更新节点的子节点在当前帧中的链表段之前,也可以将所有的新的渲染命令链接在该被更新节点的子节点在当前帧中的链表段之后,还可以将部分渲染命令链接在该被更新节点的子节点在当前帧中的链表段之前,剩余的渲染命令链接在该被更新节点的子节点在当前帧中的链表段之后。
将该被更新节点在前一帧中的链表段中的头指针指向的节点的尾指针指向第一链表段的头指针,得到该被更新节点在当前帧中的链表段。相当于将该被更新节点在前一帧中的链表段替换为该更新节点在当前帧中的链表段。
保存该被更新节点在当前帧中的链表段,并将该被更新节点在当前帧中的链表段传递给该被更新节点的父节点。
以图1所示例子为例,假设目标节点为D,在更新链表时,从叶子节点开始更新,以节点K为例,节点K更新并生成新的渲染命令,将新的渲染命令链接得到第一链表段,将节点K在前一帧中的链表段中的头指针指向的节点的尾指针指向第一链表段的头指针,得到节点K在当前帧中的链表段,保存节点K在当前帧中的链表段,将节点K在当前帧中的链表段发送给节点H。
节点H将新的渲染命令和节点K在当前帧中的链表段进行链接得到第一链表段,将节点H在前一帧中的链表段中的头指针指向的节点的尾指针指向第一链表段的头指针,得到节点H在当前帧中的链表段。节点H保存在当前帧中的链表段,并将节点H在当前帧中的链表段发送给节点D。
节点L以及节点I的链表更新过程与节点K和节点H类似,这里不再赘述。节点D接收到节点H在当前帧中的链表段以及节点I在当前帧中的链表段后,将节点D的新的渲染命令与节点H在当前帧中的链表段以及节点I在当前帧中的链表段进行链接,得到第一链表段,将节点D在前一帧中的链表段中的头指针指向的节点的尾指针指向第一链表段的头指针。
针对目标节点的每个祖先节点,根据该祖先节点的状态和该祖先节点的所有子孙节点在当前帧中的链表段更新该祖先节点在前一帧中的链表段,得到该祖先节点在所述当前帧中的链表段,该祖先节点在当前帧中的链表段为当前帧的链表的一部分,该祖先节点在前一帧中的链表段为前一帧的链表的一部分。
保存该祖先节点在当前帧中的链表段,如果该祖先节点具有父节点,则将该祖先节点在当前帧中的链表段传递给该祖先节点的父节点。如果该祖先节点为根节点(没有父节点),则将该祖先节点在当前帧中的链表段传递给渲染模块,该根节点在当前帧中的链表段为当前帧的链表。
目标节点的祖先节点只进行链表更新,不需要执行更新逻辑。具体的,当该祖先状态的节点为链表更新状态时,,将该祖先节点在所述前一帧中的链表段中的头指针指向的节点的尾指针指向该祖先节点在前一帧中的链表段中的头指针的前一指针,得到该祖先节点在当前帧中的链表段。
步骤S104、根据当前帧的链表进行渲染得到当前帧对应的UI。
根节点得到当前帧的链表后,将当前帧的链表发送给渲染模块,渲染模块根据当前帧的链表中包括的渲染命令,顺序执行渲染命令得到当前帧对应的UI。
本实施例中,接收游戏中UI对应的元素树中的目标节点的更新命令,根据更新命令,仅对元素树中目标节点以及目标节点的子孙节点进行更新,为每个被更新的节点分别生成新的渲染命令,根据被更新节点的新的渲染命令更新当前帧的前一帧的链表,得到当前帧的链表,当前帧的链表和前一帧的链表均由元素树中的所有节点的渲染命令链接得到,根据当前帧的链表进行渲染得到当前帧对应的UI。所述方法中,当目标节点接收到更新命令时,仅需要目标节点以及目标节点的子孙节点进行更新,对元素树中的其他节点不需要更新,从而降低了UI更新占用的计算资源。
图3为本发明实施例三提供的一种游戏中用户界面的更新装置,如图3所示,本实施例提供的装置包括:
接收模块11,用于接收游戏中用户界面UI对应的元素树中的目标节点的更新命令;
更新模块12,用于根据所述更新命令,仅对所述目标节点以及所述目标节点的子孙节点进行更新,为每个被更新的节点分别生成新的渲染命令;
链接模块13,用于根据所述被更新节点的新的渲染命令更新当前帧的前一帧的链表,得到所述当前帧的链表,所述当前帧的链表和所述前一帧的链表均由所述元素树中的所有节点的渲染命令链接得到;
渲染模块14,用于根据所述当前帧的链表进行渲染得到所述当前帧对应的UI。
可选的,所述更新模块12具体用于:
根据所述更新命令,将所述目标节点以及所述目标节点的子孙节点的状态设置为全更新状态,将所述目标节点的祖先节点的状态设置为链表更新状态;
根据所述目标节点以及所述目标节点的子孙节点的状态,对所述目标节点以及所述目标节点的子孙节点进行更新,为每个被更新的节点分别生成新的渲染命令。
可选的,所述链接模块13具体用于:
针对所述每个被更新节点,根据该被更新节点的新的渲染命令和该被更新节点的所有子孙节点在所述当前帧中的链表段更新该被更新节点在所述前一帧中的链表段,得到该被更新节点在当前帧中的链表段,该被更新节点在所述当前帧中的链表段为所述当前帧的链表的一部分,该被更新节点在所述前一帧中的链表段为所述前一帧的链表的一部分;
保存该被更新节点在所述当前帧中的链表段,并将该被更新节点在所述当前帧中的链表段传递给该被更新节点的父节点;
针对所述目标节点的每个祖先节点,根据该祖先节点的状态和该祖先节点的所有子孙节点在所述当前帧中的链表段更新该祖先节点在所述前一帧中的链表段,得到该祖先节点在所述当前帧中的链表段,该祖先节点在所述当前帧中的链表段为所述当前帧的链表的一部分,该祖先节点在所述前一帧中的链表段为所述前一帧的链表的一部分;
保存该祖先节点在所述当前帧中的链表段,如果该祖先节点具有父节点,则将该祖先节点在所述当前帧中的链表段传递给该祖先节点的父节点;
如果该祖先节点为根节点,则将该祖先节点在当前帧中的链表段传递给渲染模块,该根节点在当前帧中的链表段为所述当前帧的链表。
可选的,所述更新模块12具体用于:
根据所述更新命令递归的向所述目标节点的子算节点传递全更新命令,所述全更新命令用于指示将节点的状态设置为全更新状态;
递归的向所述目标节点的祖先节点传递链表更新命令,所述链表更新命用于指示将节点的状态设置为链表更新状态。
可选的,所述链接模块13具体用于:
将该被更新节点的新的渲染命令与该被更新节点的子节点在所述当前帧中的链表段进行链接,得到第一链表段;
将该被更新节点在所述前一帧中的链表段中的头指针指向的节点的尾指针指向所述第一链表段的头指针,得到该被更新节点在当前帧中的链表段。
可选的,所述链接模块13具体用于:
当该祖先状态的节点为链表更新状态时,将该祖先节点在所述前一帧中的链表段中的头指针指向的节点的尾指针指向该祖先节点的所有子孙节点在所述当前帧中的链表段的头指针,得到该祖先节点在所述当前帧中的链表段。
本实施例的装置,可用于执行实施例一的方法,具体实现方式和技术效果类似,这里不再赘述。
图4为本发明实施例三提供的终端设备的结构示意图,如图4所示,本实施例提供的终端设备,包括:处理器21、存储器22和收发器23,所述存储器22用于存储指令,所述收发器23用于和其他设备通信,所述处理器21用于执行所述存储器22中存储的指令,以使所述终端设备执行如上述实施例一的方法,具体实现方式和技术效果类似,这里不再赘述。
本发明实施例四提供一种计算机可读存储介质,所述计算机可读存储介质存储有指令,当所述指令被执行时,使得计算机执行如上述实施例一至实施例三的方法,具体实现方式和技术效果类似,这里不再赘述。
应理解,上述实施例中,处理器可以是中央处理单元(英文:Central ProcessingUnit,简称:CPU),还可以是其他通用处理器、数字信号处理器(英文:Digital SignalProcessor,简称:DSP)、专用集成电路(英文:Application Specific IntegratedCircuit,简称:ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,而前述的存储器可以是只读存储器(英文:read-only memory,缩写:ROM)、随机存取存储器(英文:random access memory,简称:RAM)、快闪存储器、硬盘或者固态硬盘。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本发明旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求书指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求书来限制。
Claims (12)
1.一种游戏中用户界面的更新方法,其特征在于,包括:
接收游戏中用户界面UI对应的元素树中的目标节点的更新命令;
根据所述更新命令,仅对所述目标节点以及所述目标节点的子孙节点进行更新,为每个被更新的节点分别生成新的渲染命令;
根据被更新节点的新的渲染命令更新当前帧的前一帧的链表,得到所述当前帧的链表,所述当前帧的链表和所述前一帧的链表均由所述元素树中的所有节点的渲染命令链接得到;
根据所述当前帧的链表进行渲染得到所述当前帧对应的UI;
所述根据所述被更新节点的新的渲染命令更新当前帧的前一帧的链表,得到所述当前帧的链表,包括:
针对每个被更新节点,根据该被更新节点的新的渲染命令和该被更新节点的所有子孙节点在所述当前帧中的链表段更新该被更新节点在所述前一帧中的链表段,得到该被更新节点在当前帧中的链表段,该被更新节点在所述当前帧中的链表段为所述当前帧的链表的一部分,该被更新节点在所述前一帧中的链表段为所述前一帧的链表的一部分;
保存该被更新节点在所述当前帧中的链表段,并将该被更新节点在所述当前帧中的链表段传递给该被更新节点的父节点;
针对所述目标节点的每个祖先节点,根据该祖先节点的状态和该祖先节点的所有子孙节点在所述当前帧中的链表段更新该祖先节点在所述前一帧中的链表段,得到该祖先节点在所述当前帧中的链表段,该祖先节点在所述当前帧中的链表段为所述当前帧的链表的一部分,该祖先节点在所述前一帧中的链表段为所述前一帧的链表的一部分;
保存该祖先节点在所述当前帧中的链表段,如果该祖先节点具有父节点,则将该祖先节点在所述当前帧中的链表段传递给该祖先节点的父节点;
如果该祖先节点为根节点,则将该祖先节点在当前帧中的链表段传递给渲染模块,该根节点在当前帧中的链表段为所述当前帧的链表。
2.根据权利要求1所述的方法,其特征在于,所述根据所述更新命令,仅对所述目标节点以及所述目标节点的子节点进行更新,为每个被更新的节点分别生成新的渲染命令,包括:
根据所述更新命令,将所述目标节点以及所述目标节点的子孙节点的状态设置为全更新状态,将所述目标节点的祖先节点的状态设置为链表更新状态;
根据所述目标节点以及所述目标节点的子孙节点的状态,对所述目标节点以及所述目标节点的子孙节点进行更新,为每个被更新的节点分别生成新的渲染命令。
3.根据权利要求1或2所述的方法,其特征在于,根据所述更新命令,将所述目标节点以及所述目标节点的子孙节点的状态设置为全更新状态,将所述目标节点的祖先节点的状态设置为链表更新状态,包括:
根据所述更新命令递归的向所述目标节点的子算节点传递全更新命令,所述全更新命令用于指示将节点的状态设置为全更新状态;
递归的向所述目标节点的祖先节点传递链表更新命令,所述链表更新命用于指示将节点的状态设置为链表更新状态。
4.根据权利要求1所述的方法,其特征在于,根据该被更新节点的新的渲染命令和该被更新节点的所有子孙节点在所述当前帧中的链表段更新该被更新节点在所述前一帧中的链表段,得到该被更新节点在当前帧中的链表段,包括:
将该被更新节点的新的渲染命令与该被更新节点的子节点在所述当前帧中的链表段进行链接,得到第一链表段;
将该被更新节点在所述前一帧中的链表段中的头指针指向的节点的尾指针指向所述第一链表段的头指针,得到该被更新节点在当前帧中的链表段。
5.根据权利要求1所述的方法,其特征在于,根据该祖先节点的状态和该祖先节点的所有子孙节点在所述当前帧中的链表段更新该祖先节点在所述前一帧中的链表段,得到该祖先节点在所述当前帧中的链表段,包括:
当该祖先节点的状态为链表更新状态时,将该祖先节点在所述前一帧中的链表段中的头指针指向的节点的尾指针指向该祖先节点的所有子孙节点在所述当前帧中的链表段的头指针,得到该祖先节点在所述当前帧中的链表段。
6.一种游戏中用户界面的更新装置,其特征在于,包括:
接收模块,用于接收游戏中用户界面UI对应的元素树中的目标节点的更新命令;
更新模块,用于根据所述更新命令,仅对所述目标节点以及所述目标节点的子孙节点进行更新,为每个被更新的节点分别生成新的渲染命令;
链接模块,用于根据被更新节点的新的渲染命令更新当前帧的前一帧的链表,得到所述当前帧的链表,所述当前帧的链表和所述前一帧的链表均由所述元素树中的所有节点的渲染命令链接得到;
渲染模块,用于根据所述当前帧的链表进行渲染得到所述当前帧对应的UI;
所述链接模块具体用于:
针对每个被更新节点,根据该被更新节点的新的渲染命令和该被更新节点的所有子孙节点在所述当前帧中的链表段更新该被更新节点在所述前一帧中的链表段,得到该被更新节点在当前帧中的链表段,该被更新节点在所述当前帧中的链表段为所述当前帧的链表的一部分,该被更新节点在所述前一帧中的链表段为所述前一帧的链表的一部分;
保存该被更新节点在所述当前帧中的链表段,并将该被更新节点在所述当前帧中的链表段传递给该被更新节点的父节点;
针对所述目标节点的每个祖先节点,根据该祖先节点的状态和该祖先节点的所有子孙节点在所述当前帧中的链表段更新该祖先节点在所述前一帧中的链表段,得到该祖先节点在所述当前帧中的链表段,该祖先节点在所述当前帧中的链表段为所述当前帧的链表的一部分,该祖先节点在所述前一帧中的链表段为所述前一帧的链表的一部分;
保存该祖先节点在所述当前帧中的链表段,如果该祖先节点具有父节点,则将该祖先节点在所述当前帧中的链表段传递给该祖先节点的父节点;
如果该祖先节点为根节点,则将该祖先节点在当前帧中的链表段传递给渲染模块,该根节点在当前帧中的链表段为所述当前帧的链表。
7.根据权利要求6所述的装置,其特征在于,所述更新模块具体用于:
根据所述更新命令,将所述目标节点以及所述目标节点的子孙节点的状态设置为全更新状态,将所述目标节点的祖先节点的状态设置为链表更新状态;
根据所述目标节点以及所述目标节点的子孙节点的状态,对所述目标节点以及所述目标节点的子孙节点进行更新,为每个被更新的节点分别生成新的渲染命令。
8.根据权利要求6或7所述的装置,其特征在于,所述更新模块具体用于:
根据所述更新命令递归的向所述目标节点的子算节点传递全更新命令,所述全更新命令用于指示将节点的状态设置为全更新状态;
递归的向所述目标节点的祖先节点传递链表更新命令,所述链表更新命用于指示将节点的状态设置为链表更新状态。
9.根据权利要求6所述的装置,其特征在于,所述链接模块具体用于:
将该被更新节点的新的渲染命令与该被更新节点的子节点在所述当前帧中的链表段进行链接,得到第一链表段;
将该被更新节点在所述前一帧中的链表段中的头指针指向的节点的尾指针指向所述第一链表段的头指针,得到该被更新节点在当前帧中的链表段。
10.根据权利要求6所述的装置,其特征在于,所述链接模块具体用于:
当该祖先节点的状态为链表更新状态时,将该祖先节点在所述前一帧中的链表段中的头指针指向的节点的尾指针指向该祖先节点的所有子孙节点在所述当前帧中的链表段的头指针,得到该祖先节点在所述当前帧中的链表段。
11.一种终端设备,其特征在于,包括:处理器、存储器和收发器,所述存储器用于存储指令,所述收发器用于和其他设备通信,所述处理器用于执行所述存储器中存储的指令,以使所述终端设备执行如权利要求1-5任一项所述的方法。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有指令,当所述指令被执行时,使得计算机执行如权利要求1-5任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811508100.XA CN109558159B (zh) | 2018-12-11 | 2018-12-11 | 游戏中用户界面的更新方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811508100.XA CN109558159B (zh) | 2018-12-11 | 2018-12-11 | 游戏中用户界面的更新方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109558159A CN109558159A (zh) | 2019-04-02 |
CN109558159B true CN109558159B (zh) | 2022-02-15 |
Family
ID=65869455
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811508100.XA Active CN109558159B (zh) | 2018-12-11 | 2018-12-11 | 游戏中用户界面的更新方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109558159B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110032384B (zh) * | 2019-04-18 | 2021-12-21 | 腾讯科技(深圳)有限公司 | 资源更新的方法、装置、设备及存储介质 |
CN112348934B (zh) * | 2020-10-20 | 2024-07-23 | 珠海金山数字网络科技有限公司 | 基于大链表的游戏贴图展示方法、装置及介质 |
CN112685110B (zh) * | 2020-12-23 | 2024-09-06 | 广东三维家信息科技有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
CN114470767A (zh) * | 2022-02-15 | 2022-05-13 | 竞技世界(北京)网络技术有限公司 | 一种任务处理方法、装置及电子设备 |
CN118227903A (zh) * | 2022-12-20 | 2024-06-21 | 华为技术有限公司 | 一种渲染方法、装置、电子设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106445284A (zh) * | 2016-09-13 | 2017-02-22 | 柚子(北京)科技有限公司 | 画面显示方法和装置 |
CN106598574A (zh) * | 2016-11-25 | 2017-04-26 | 腾讯科技(深圳)有限公司 | 页面渲染的方法和装置 |
CN107845144A (zh) * | 2017-07-21 | 2018-03-27 | 浙江科澜信息技术有限公司 | 一种高效组织和切换OpenGL渲染状态的方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110289141A1 (en) * | 2010-05-20 | 2011-11-24 | Salesforce.Com, Inc. | Methods and systems for providing a user interface in a multi-tenant database environment |
-
2018
- 2018-12-11 CN CN201811508100.XA patent/CN109558159B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106445284A (zh) * | 2016-09-13 | 2017-02-22 | 柚子(北京)科技有限公司 | 画面显示方法和装置 |
CN106598574A (zh) * | 2016-11-25 | 2017-04-26 | 腾讯科技(深圳)有限公司 | 页面渲染的方法和装置 |
CN107845144A (zh) * | 2017-07-21 | 2018-03-27 | 浙江科澜信息技术有限公司 | 一种高效组织和切换OpenGL渲染状态的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109558159A (zh) | 2019-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109558159B (zh) | 游戏中用户界面的更新方法和装置 | |
CN110109659A (zh) | 一种实现前端应用脚手架的系统和服务器 | |
CN107613007A (zh) | 游戏分享互动方法、装置、系统及电子设备 | |
CN110008326B (zh) | 会话系统中的知识摘要生成方法及系统 | |
CN111339191B (zh) | 一种区块链的数据存储方法、装置、设备和介质 | |
CN107330014B (zh) | 一种数据表的创建方法与设备 | |
CN116151384B (zh) | 量子电路处理方法、装置及电子设备 | |
CN106202224B (zh) | 搜索处理方法及装置 | |
CN109324731A (zh) | 信息展现方法和装置 | |
CN108984178B (zh) | 一种通信方法和装置 | |
CN104683310A (zh) | 联网游戏的新手向导实现方法 | |
CN113642295B (zh) | 页面排版方法、装置及计算机程序产品 | |
CN103092582A (zh) | 用于处理发布事件和订阅事件的方法及系统 | |
CN107577658A (zh) | 词向量处理方法、装置以及电子设备 | |
CN112774191A (zh) | 游戏操作指引方法、装置及系统、非易失性存储介质 | |
CN112579451A (zh) | 一种基于测试元素排序的测试方法、装置及设备 | |
JP3208635U (ja) | 切替式漢字組立システム | |
CN112269958A (zh) | 将虚拟dom在浏览器中进行快速渲染的差异算法的实现方法 | |
CN110347333A (zh) | 提高克隆镜像性能的方法、装置、计算机设备及存储介质 | |
CN109669944B (zh) | 表单修改方法、装置、存储介质和电子设备 | |
CN110032401B (zh) | 一种特殊样式数字的转化方法、存储介质、设备及系统 | |
CN113946332B (zh) | 基于gui界面显示属性的方法及存储介质 | |
CN110781194B (zh) | 应用程序的表数据处理方法、装置、电子设备及存储介质 | |
CN112466291B (zh) | 语言模型的训练方法、装置和电子设备 | |
CN116187458B (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 |