游戏中用户界面的更新方法和装置制造方法及图纸

技术编号:20763487 阅读:25 留言:0更新日期:2019-04-03 14:11
本发明专利技术提供一种游戏中用户界面的更新方法和装置,包括:接收游戏中UI对应的元素树中的目标节点的更新命令,根据更新命令,仅对元素树中目标节点以及目标节点的子孙节点进行更新,为每个被更新的节点分别生成新的渲染命令,根据被更新节点的新的渲染命令更新当前帧的前一帧的链表,得到当前帧的链表,当前帧的链表和前一帧的链表均由元素树中的所有节点的渲染命令链接得到,根据当前帧的链表进行渲染得到当前帧对应的UI。所述方法中,当目标节点接收到更新命令时,仅需要目标节点以及目标节点的子孙节点进行更新,对元素树中的其他节点不需要更新,从而降低了UI更新占用的计算资源。

【技术实现步骤摘要】
游戏中用户界面的更新方法和装置
本专利技术涉及游戏领域,尤其涉及一种游戏中用户界面(UserInterface,简称UI)的更新方法和装置。
技术介绍
UI是游戏中玩家与机器交互的媒介,UI中包括一些信息和用于人机交互的按钮。UI中的信息包括小地图、道具栏、角色的各种状态信息等。UI中的按钮包括一些技能按钮、功能按钮等。在游戏运行过程中,UI需要不断更新。UI在逻辑上是由各类子节点按照树形层级结构组织起来的,节点在功能上分为两种:负责实际逻辑,以及负责组织层级。不同节点可以拥有其中一种或是两种功能。现有技术中,对于树形组织结构的UI,在更新时可以采用深度优先遍历算法,遍历所有节点。每个节点被遍历时需要执行更新逻辑,计算变换矩阵,以及输出渲染命令给绘制层。但是,现有技术中,每一帧都需要遍历所有节点,对每个节点执行更新逻辑、计算变换矩阵、输出渲染命令,导致UI更新占用较多的计算资源,影响游戏性能。
技术实现思路
本专利技术提供一种游戏中用户界面的更新方法和装置,能够降低游戏中UI更新占用的计算资源。本专利技术第一方面提供一种游戏中用户界面的更新方法,包括:接收游戏中用户界面UI对应的元素树中的目标节点的更新命令;根据所述更新命令,仅对所述目标节点以及所述目标节点的子孙节点进行更新,为每个被更新的节点分别生成新的渲染命令;根据所述被更新节点的新的渲染命令更新当前帧的前一帧的链表,得到所述当前帧的链表,所述当前帧的链表和所述前一帧的链表均由所述元素树中的所有节点的渲染命令链接得到;根据所述当前帧的链表进行渲染得到所述当前帧对应的UI。可选的,所述根据所述更新命令,仅对所述目标节点以及所述目标节点的子节点进行更新,为每个被更新的节点分别生成新的渲染命令,包括:根据所述更新命令,将所述目标节点以及所述目标节点的子孙节点的状态设置为全更新状态,将所述目标节点的祖先节点的状态设置为链表更新状态;根据所述目标节点以及所述目标节点的子孙节点的状态,对所述目标节点以及所述目标节点的子孙节点进行更新,为每个被更新的节点分别生成新的渲染命令。可选的,所述根据所述被更新节点的新的渲染命令更新当前帧的前一帧的链表,得到所述当前帧的链表,包括:针对所述每个被更新节点,根据该被更新节点的新的渲染命令和该被更新节点的所有子孙节点在所述当前帧中的链表段更新该被更新节点在所述前一帧中的链表段,得到该被更新节点在当前帧中的链表段,该被更新节点在所述当前帧中的链表段为所述当前帧的链表的一部分,该被更新节点在所述前一帧中的链表段为所述前一帧的链表的一部分;保存该被更新节点在所述当前帧中的链表段,并将该被更新节点在所述当前帧中的链表段传递给该被更新节点的父节点;针对所述目标节点的每个祖先节点,根据该祖先节点的状态和该祖先节点的所有子孙节点在所述当前帧中的链表段更新该祖先节点在所述前一帧中的链表段,得到该祖先节点在所述当前帧中的链表段,该祖先节点在所述当前帧中的链表段为所述当前帧的链表的一部分,该祖先节点在所述前一帧中的链表段为所述前一帧的链表的一部分;保存该祖先节点在所述当前帧中的链表段,如果该祖先节点具有父节点,则将该祖先节点在所述当前帧中的链表段传递给该祖先节点的父节点;如果该祖先节点为根节点,则将该祖先节点在当前帧中的链表段传递给渲染模块,该根节点在当前帧中的链表段为所述当前帧的链表。可选的,根据所述更新命令,将所述目标节点以及所述目标节点的子孙节点的状态设置为全更新状态,将所述目标节点的祖先节点的状态设置为链表更新状态,包括:根据所述更新命令递归的向所述目标节点的子算节点传递全更新命令,所述全更新命令用于指示将节点的状态设置为全更新状态;递归的向所述目标节点的祖先节点传递链表更新命令,所述链表更新命用于指示将节点的状态设置为链表更新状态。可选的,根据该被更新节点的新的渲染命令和该被更新节点的所有子孙节点在所述当前帧中的链表段更新该被更新节点在所述前一帧中的链表段,得到该被更新节点在当前帧中的链表段,包括:将该被更新节点的新的渲染命令与该被更新节点的子节点在所述当前帧中的链表段进行链接,得到第一链表段;将该被更新节点在所述前一帧中的链表段中的头指针指向的节点的尾指针指向所述第一链表段的头指针,得到该被更新节点在当前帧中的链表段。可选的,根据该祖先节点的状态和该祖先节点的所有子孙节点在所述当前帧中的链表段更新该祖先节点在所述前一帧中的链表段,得到该祖先节点在所述当前帧中的链表段,包括:当该祖先状态的节点为链表更新状态时,将该祖先节点在所述前一帧中的链表段中的头指针指向的节点的尾指针指向该祖先节点的所有子孙节点在所述当前帧中的链表段的头指针,得到该祖先节点在所述当前帧中的链表段。本专利技术第二方面提供一种游戏中用户界面的更新装置,包括:接收模块,用于接收游戏中用户界面UI对应的元素树中的目标节点的更新命令;更新模块,用于根据所述更新命令,仅对所述目标节点以及所述目标节点的子孙节点进行更新,为每个被更新的节点分别生成新的渲染命令;链接模块,用于根据所述被更新节点的新的渲染命令更新当前帧的前一帧的链表,得到所述当前帧的链表,所述当前帧的链表和所述前一帧的链表均由所述元素树中的所有节点的渲染命令链接得到;渲染模块,用于根据所述当前帧的链表进行渲染得到所述当前帧对应的UI。可选的,所述更新模块具体用于:根据所述更新命令,将所述目标节点以及所述目标节点的子孙节点的状态设置为全更新状态,将所述目标节点的祖先节点的状态设置为链表更新状态;根据所述目标节点以及所述目标节点的子孙节点的状态,对所述目标节点以及所述目标节点的子孙节点进行更新,为每个被更新的节点分别生成新的渲染命令。可选的,所述链接模块具体用于:针对所述每个被更新节点,根据该被更新节点的新的渲染命令和该被更新节点的所有子孙节点在所述当前帧中的链表段更新该被更新节点在所述前一帧中的链表段,得到该被更新节点在当前帧中的链表段,该被更新节点在所述当前帧中的链表段为所述当前帧的链表的一部分,该被更新节点在所述前一帧中的链表段为所述前一帧的链表的一部分;保存该被更新节点在所述当前帧中的链表段,并将该被更新节点在所述当前帧中的链表段传递给该被更新节点的父节点;针对所述目标节点的每个祖先节点,根据该祖先节点的状态和该祖先节点的所有子孙节点在所述当前帧中的链表段更新该祖先节点在所述前一帧中的链表段,得到该祖先节点在所述当前帧中的链表段,该祖先节点在所述当前帧中的链表段为所述当前帧的链表的一部分,该祖先节点在所述前一帧中的链表段为所述前一帧的链表的一部分;保存该祖先节点在所述当前帧中的链表段,如果该祖先节点具有父节点,则将该祖先节点在所述当前帧中的链表段传递给该祖先节点的父节点;如果该祖先节点为根节点,则将该祖先节点在当前帧中的链表段传递给渲染模块,该根节点在当前帧中的链表段为所述当前帧的链表。可选的,所述更新模块具体用于:根据所述更新命令递归的向所述目标节点的子算节点传递全更新命令,所述全更新命令用于指示将节点的状态设置为全更新状态;递归的向所述目标节点的祖先节点传递链表更新命令,所述链表更新命用于指示将节点的状态设置为链表更新状态。可选的,所述链接模块具体用于:将该被更新节点的新的渲染命令与该被更新节点的子节点在所述当前本文档来自技高网...

【技术保护点】
1.一种游戏中用户界面的更新方法,其特征在于,包括:接收游戏中用户界面UI对应的元素树中的目标节点的更新命令;根据所述更新命令,仅对所述目标节点以及所述目标节点的子孙节点进行更新,为每个被更新的节点分别生成新的渲染命令;根据所述被更新节点的新的渲染命令更新当前帧的前一帧的链表,得到所述当前帧的链表,所述当前帧的链表和所述前一帧的链表均由所述元素树中的所有节点的渲染命令链接得到;根据所述当前帧的链表进行渲染得到所述当前帧对应的UI。

【技术特征摘要】
1.一种游戏中用户界面的更新方法,其特征在于,包括:接收游戏中用户界面UI对应的元素树中的目标节点的更新命令;根据所述更新命令,仅对所述目标节点以及所述目标节点的子孙节点进行更新,为每个被更新的节点分别生成新的渲染命令;根据所述被更新节点的新的渲染命令更新当前帧的前一帧的链表,得到所述当前帧的链表,所述当前帧的链表和所述前一帧的链表均由所述元素树中的所有节点的渲染命令链接得到;根据所述当前帧的链表进行渲染得到所述当前帧对应的UI。2.根据权利要求1所述的方法,其特征在于,所述根据所述更新命令,仅对所述目标节点以及所述目标节点的子节点进行更新,为每个被更新的节点分别生成新的渲染命令,包括:根据所述更新命令,将所述目标节点以及所述目标节点的子孙节点的状态设置为全更新状态,将所述目标节点的祖先节点的状态设置为链表更新状态;根据所述目标节点以及所述目标节点的子孙节点的状态,对所述目标节点以及所述目标节点的子孙节点进行更新,为每个被更新的节点分别生成新的渲染命令。3.根据权利要求2所述的方法,其特征在于,所述根据所述被更新节点的新的渲染命令更新当前帧的前一帧的链表,得到所述当前帧的链表,包括:针对所述每个被更新节点,根据该被更新节点的新的渲染命令和该被更新节点的所有子孙节点在所述当前帧中的链表段更新该被更新节点在所述前一帧中的链表段,得到该被更新节点在当前帧中的链表段,该被更新节点在所述当前帧中的链表段为所述当前帧的链表的一部分,该被更新节点在所述前一帧中的链表段为所述前一帧的链表的一部分;保存该被更新节点在所述当前帧中的链表段,并将该被更新节点在所述当前帧中的链表段传递给该被更新节点的父节点;针对所述目标节点的每个祖先节点,根据该祖先节点的状态和该祖先节点的所有子孙节点在所述当前帧中的链表段更新该祖先节点在所述前一帧中的链表段,得到该祖先节点在所述当前帧中的链表段,该祖先节点在所述当前帧中的链表段为所述当前帧的链表的一部分,该祖先节点在所述前一帧中的链表段为所述前一帧的链表的一部分;保存该祖先节点在所述当前帧中的链表段,如果该祖先节点具有父节点,则将该祖先节点在所述当前帧中的链表段传递给该祖先节点的父节点;如果该祖先节点为根节点,则将该祖先节点在当前帧中的链表段传递给渲染模块,该根节点在当前帧中的链表段为所述当前帧的链表。4.根据权利要求2或3所述的方法,其特征在于,根据所述更新命令,将所述目标节点以及所述目标节点的子孙节点的状态设置为全更新状态,将所述目标节点的祖先节点的状态设置为链表更新状态,包括:根据所述更新命令递归的向所述目标节点的子算节点传递全更新命令,所述全更新命令用于指示将节点的状态设置为全更新状态;递归的向所述目标节点的祖先节点传递链表更新命令,所述链表更新命用于指示将节点的状态设置为链表更新状态。5.根据权利要求3所述的方法,其特征在于,根据该被更新节点的新的渲染命令和该被更新节点的所有子孙节点在所述当前帧中的链表段更新该被更新节点在所述前一帧中的链表段,得到该被更新节点在当前帧中的链表段,包括:将该被更新节点的新的渲染命令与该被更新节点的子节点在所述当前帧中的链表段进行链接,得到第一链表段;将该被更新节点在所述前一帧中的链表段中的头指针指向的节点的尾指针指向所述第一链表段的头指针,得到该被更新节点在当前帧中的链表段。6.根据权利要求3所述的方法,其特征在于,根据该祖先节点的状态和该祖先节点的所有子孙节点在所述当前帧中的链表段更新该祖先节点在所述前一帧中的链表段,得到该祖先节点在所述当前帧中的链表段,包括:当该祖先状态的节点为链表更新状态时,将该祖先节点在所述前一帧中的链表段中的头指针指向的节点的尾指针指向该祖先节点的所有子孙节点在所...

【专利技术属性】
技术研发人员:陆胜
申请(专利权)人:网易杭州网络有限公司
类型:发明
国别省市:浙江,33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1