CN110457054B - 一种UnityNGUI控件锚点更新模式优化方法及装置 - Google Patents

一种UnityNGUI控件锚点更新模式优化方法及装置 Download PDF

Info

Publication number
CN110457054B
CN110457054B CN201910660280.1A CN201910660280A CN110457054B CN 110457054 B CN110457054 B CN 110457054B CN 201910660280 A CN201910660280 A CN 201910660280A CN 110457054 B CN110457054 B CN 110457054B
Authority
CN
China
Prior art keywords
mode
prefab
anchor point
uirect
point updating
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
CN201910660280.1A
Other languages
English (en)
Other versions
CN110457054A (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.)
Guangzhou Xishanju Network Technology Co ltd
Zhuhai Kingsoft Digital Network Technology Co Ltd
Original Assignee
Guangzhou Xishanju Network Technology Co ltd
Zhuhai Kingsoft Digital Network 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 Guangzhou Xishanju Network Technology Co ltd, Zhuhai Kingsoft Digital Network Technology Co Ltd filed Critical Guangzhou Xishanju Network Technology Co ltd
Priority to CN201910660280.1A priority Critical patent/CN110457054B/zh
Publication of CN110457054A publication Critical patent/CN110457054A/zh
Application granted granted Critical
Publication of CN110457054B publication Critical patent/CN110457054B/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/60Software deployment
    • G06F8/65Updates

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明涉及一种UnityNGUI控件锚点更新模式优化方法及装置,其中的方法包括以下步骤:A、遍历unityNGUI控件,查找Prefab类型的资源并将其进行实例化;B、获取各实例化对象的锚点更新模式,筛选锚点更新模式为OnUpdate的Prefab资源,记录其文件路径;C、进一步筛选锚点更新模式可修改的Prefab资源;D、将最终筛选出的Prefab资源的锚点更新模式修改为OnEnable模式。本发明通过扫描NGUI中UI的锚点更新模式,对非必须使用OnUpdate的锚点进行修改使其锚点更新模式为OnEnable,可以减少UIRect.Update函数的开销,提升游戏fps。

Description

一种UnityNGUI控件锚点更新模式优化方法及装置
技术领域
本发明涉及一种UnityNGUI控件锚点更新模式优化方法及装置,属于手游优化领域。
背景技术
在游戏中,UI模块占据着非常大的比重,在使用Unity开发游戏的团队中使用NGUI开发UI的占据了绝大部分,而UI元素越多,则其消耗则会越大,NGUI默认的每个元素的锚点更新模式为每帧更新(OnUpdate),这样越多的UI元素,则其开销UIRect.Update的开销越大,为了减少UIRect.Update的开销,提升fps,需要修改UI控件的锚点更新模式,但是在unity编辑器中,要修改UI控件的锚点更新模式需要手动逐个修改,操作繁琐,浪费时间。
发明内容
本发明提供一种UnityNGUI控件锚点更新模式优化方法及装置,对所有UI prefab进行扫描,统计所有锚点模式为每帧更新的UI控件,并自动批量修改相应的锚点更新模式。
本发明的技术方案第一方面为一种UnityNGUI控件锚点更新模式优化方法,所述方法包括以下步骤:
A、遍历unityNGUI控件,查找Prefab类型的资源并将其进行实例化;
B、获取各实例化对象的锚点更新模式,筛选锚点更新模式为OnUpdate的Prefab资源,记录其文件路径;
C、进一步筛选锚点更新模式可修改的Prefab资源;
D、将最终筛选出的Prefab资源的锚点更新模式修改为OnEnable模式。
进一步,所述步骤A包括:定位unityNGUI控件的路径,获取该路径下的所有Prefab类型资源的文件路径;根据获取的Prefab资源的文件路径,使用AssetDatabase加载所有的Prefab资源并实例化。
进一步,所述步骤B包括:获取所有实例化对象的UIRect组件对象,得到UIRect集合;逐个扫描UIRect集合的每个UIRect组件对象,获取并判断其锚点更新模式是否为OnUpdate模式,若为OnUpdate模式,则记录该UIRect组件对象。
进一步,所述步骤C包括:获取记录的各UIRect组件对象的锚点更新模式,若其预设模式为OnUpdate且不允许修改,则从记录中删除该UIRect组件对象。
本发明的技术方案第二方面为一种UnityNGUI控件锚点更新模式优化装置,该装置包括:实例化模块,用于遍历unityNGUI控件,查找Prefab类型的资源并将其进行实例化;第一筛选模块,用于获取各实例化对象的锚点更新模式,筛选锚点更新模式为OnUpdate的Prefab资源,记录其文件路径;第二筛选模块,用于进一步筛选锚点更新模式可修改的Prefab资源;设置模块,用于将最终筛选出的Prefab资源的锚点更新模式修改为OnEnable模式。
进一步,所述实例化模块包括:路径获取模块,用于定位unityNGUI控件的路径,获取该路径下的所有Prefab类型资源的文件路径;资源实例化模块,用于根据获取的Prefab资源的文件路径,使用AssetDatabase加载所有的Prefab资源并实例化。
进一步,所述第一筛选模块包括:筛选组件模块,用于获取所有实例化对象的UIRect组件对象,得到UIRect集合;锚点更新模式判断及记录模块,用于逐个扫描UIRect集合的每个UIRect组件对象,获取并判断其锚点更新模式是否为OnUpdate模式,若为OnUpdate模式,则记录该UIRect组件对象。
进一步,所述第二筛选模块包括:剔除模块,用于获取记录的各UIRect组件对象的锚点更新模式,若其预设模式为OnUpdate且不允许修改,则从记录中删除该UIRect组件对象。
本发明的技术方案第三方面为一种计算机可读存储介质,其上储存有计算机程序,所述计算机程序被处理器执行时实现如上述第一方面所述的方法。
本发明的有益效果为:
本发明通过扫描NGUI中UI的锚点更新模式,对非必须使用OnUpdate的锚点进行修改使其锚点更新模式为OnEnable,可以减少UIRect.Update函数的开销,提升游戏fps,提升了游戏开发人员的开发效率。
附图说明
图1所示为根据本发明的方法流程图;
图2所示为根据本发明的装置示意图。
具体实施方式
以下将结合实施例和附图对本发明的构思、具体结构及产生的技术效果进行清楚、完整的描述,以充分地理解本发明的目的、方案和效果。
需要说明的是,如无特殊说明,在本公开中所使用的单数形式的“一种”、“所述”和“该”旨在包括多数形式,除非上下文清楚地表示其他含义。此外,除非另有定义,本文所使用的所有的技术和科学术语与本技术领域的技术人员通常理解的含义相同。本文说明书中所使用的术语只是为了描述具体的实施例,而不是为了限制本发明。本文所使用的术语“和/或”包括一个或多个相关的所列项目的任意的组合。
应当理解,尽管在本公开可能采用术语第一、第二、第三等来描述各种模块,但这些模块不应限于这些术语。这些术语仅用来将同一类型的模块彼此区分开。例如,在不脱离本公开范围的情况下,第一模块也可以被称为第二模块,类似地,第二模块也可以被称为第一模块。本文所提供的任何以及所有实例或示例性语言(“例如”、“如”等)的使用仅意图更好地说明本发明的实施例,并且除非另外要求,否则不会对本发明的范围施加限制。
本发明的基本思想是:利用AssetDatabase我们可以将Assets下目录下所有的Perfab资源进行加载与实例化,实例化后通过对目标组件UIRect的锚点模式进行统计与修改,以达到优化的目的。
参考图1,一种UnityNGUI控件锚点更新模式优化方法,包括以下步骤:
A、遍历unityNGUI控件,查找Prefab类型的资源并将其进行实例化;
B、获取各实例化对象的锚点更新模式,筛选锚点更新模式为OnUpdate的Prefab资源,记录其文件路径;
C、进一步筛选锚点更新模式可修改的Prefab资源;
D、将最终筛选出的Prefab资源的锚点更新模式修改为OnEnable模式。
进一步,所述步骤A包括:定位unityNGUI控件的路径,获取该路径下的所有Prefab类型资源的文件路径;根据获取的Prefab资源的文件路径,使用AssetDatabase加载所有的Prefab资源并实例化。
进一步,所述步骤B包括:获取所有实例化对象的UIRect组件对象,得到UIRect集合;逐个扫描UIRect集合的每个UIRect组件对象,获取并判断其锚点更新模式是否为OnUpdate模式,若为OnUpdate模式,则记录该UIRect组件对象。
进一步,所述步骤C包括:获取记录的各UIRect组件对象的锚点更新模式,若其预设模式为OnUpdate且不允许修改,则从记录中删除该UIRect组件对象。
参考图2,一种UnityNGUI控件锚点更新模式优化装置,该装置包括:实例化模块1,用于遍历unityNGUI控件,查找Prefab类型的资源并将其进行实例化;第一筛选模块2,用于获取各实例化对象的锚点更新模式,筛选锚点更新模式为OnUpdate的Prefab资源,记录其文件路径;第二筛选模块3,用于进一步筛选锚点更新模式可修改的Prefab资源;设置模块4,用于将最终筛选出的Prefab资源的锚点更新模式修改为OnEnable模式。
进一步,所述实例化模块1包括:路径获取模块11,用于定位unityNGUI控件的路径,获取该路径下的所有Prefab类型资源的文件路径;资源实例化模块12,用于根据获取的Prefab资源的文件路径,使用AssetDatabase加载所有的Prefab资源并实例化。
进一步,所述第一筛选模块2包括:筛选组件模块21,用于获取所有实例化对象的UIRect组件对象,得到UIRect集合;锚点更新模式判断及记录模块22,用于逐个扫描UIRect集合的每个UIRect组件对象,获取并判断其锚点更新模式是否为OnUpdate模式,若为OnUpdate模式,则记录该UIRect组件对象。
进一步,所述第二筛选模块3包括:剔除模块31,用于获取记录的各UIRect组件对象的锚点更新模式,若其预设模式为OnUpdate且不允许修改,则从记录中删除该UIRect组件对象。
具体的实施说明如下:
第一步、通过给定的UI路径文件夹,获取该文件夹下所有UIPrefab的文件路径。
第二步、根据上面获取到的文件路径,通过AssetDatabase.LoadAssetAtPath来加载UIPerfab文件,并将其实例化。
第三步、通过上面得到的实例化对象,获取其所有的UIRect组件对象,代码如:UIRect[]uiRects=obj.GetComponentsInChildren<UIRect>(true)。
第四步、对上面获取到的uiRects进行逐个的锚点判断,如果锚点更新模式为OnUpdate模式则记录这个组件,代码如:
if(uiRect.updateAnchors==UIRect.AnchorUpdate.OnUpdate&&
(uiRect.leftAnchor.target!=null||
uiRect.rightAnchor.target!=null||
uiRect.topAnchor.target!=null||
uiRect.bottomAnchor.target!=null)){//记录组件}
修改工具的实现:
前三步与上述方式相同。
第四步、对上面获取到的uiRects进行逐个的锚点判断,如果锚点更新模式为OnUpdate模式则修改为OnEnable模式,代码如:
Figure BDA0002138284760000041
然后保存此次修改,代码为:
EditorUtility.SetDirty(obj);
AssetDatabase.SaveAssets()。
应当认识到,本发明的实施例可以由计算机硬件、硬件和软件的组合、或者通过存储在非暂时性计算机可读存储器中的计算机指令来实现或实施。所述方法可以使用标准编程技术-包括配置有计算机程序的非暂时性计算机可读存储介质在计算机程序中实现,其中如此配置的存储介质使得计算机以特定和预定义的方式操作——根据在具体实施例中描述的方法和附图。每个程序可以以高级过程或面向对象的编程语言来实现以与计算机系统通信。然而,若需要,该程序可以以汇编或机器语言实现。在任何情况下,该语言可以是编译或解释的语言。此外,为此目的该程序能够在编程的专用集成电路上运行。
此外,可按任何合适的顺序来执行本文描述的过程的操作,除非本文另外指示或以其他方式明显地与上下文矛盾。本文描述的过程(或变型和/或其组合)可在配置有可执行指令的一个或多个计算机系统的控制下执行,并且可作为共同地在一个或多个处理器上执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用)、由硬件或其组合来实现。所述计算机程序包括可由一个或多个处理器执行的多个指令。
进一步,所述方法可以在可操作地连接至合适的任何类型的计算平台中实现,包括但不限于个人电脑、迷你计算机、主框架、工作站、网络或分布式计算环境、单独的或集成的计算机平台、或者与带电粒子工具或其它成像装置通信等等。本发明的各方面可以以存储在非暂时性存储介质或设备上的机器可读代码来实现,无论是可移动的还是集成至计算平台,如硬盘、光学读取和/或写入存储介质、RAM、ROM等,使得其可由可编程计算机读取,当存储介质或设备由计算机读取时可用于配置和操作计算机以执行在此所描述的过程。此外,机器可读代码,或其部分可以通过有线或无线网络传输。当此类媒体包括结合微处理器或其他数据处理器实现上文所述步骤的指令或程序时,本文所述的发明包括这些和其他不同类型的非暂时性计算机可读存储介质。当根据本发明所述的UnityNGUI控件锚点更新模式优化方法和技术编程时,本发明还包括计算机本身。
计算机程序能够应用于输入数据以执行本文所述的功能,从而转换输入数据以生成存储至非易失性存储器的输出数据。输出信息还可以应用于一个或多个输出设备如显示器。在本发明优选的实施例中,转换的数据表示物理和有形的对象,包括显示器上产生的物理和有形对象的特定视觉描绘。
以上所述,只是本发明的较佳实施例而已,本发明并不局限于上述实施方式,只要其以相同的手段达到本发明的技术效果,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。在本发明的保护范围内其技术方案和/或实施方式可以有各种不同的修改和变化。

Claims (9)

1.一种UnityNGUI控件锚点更新模式优化方法,其特征在于,所述方法包括以下步骤:
A、遍历unityNGUI控件,查找Prefab类型的资源并将其进行实例化;
B、获取各实例化对象的锚点更新模式,筛选锚点更新模式为OnUpdate的Prefab资源,记录其文件路径;
C、进一步筛选锚点更新模式可修改的Prefab资源;
D、将最终筛选出的Prefab资源的锚点更新模式修改为OnEnable模式。
2.根据权利要求1所述的UnityNGUI控件锚点更新模式优化方法,其特征在于,所述步骤A包括:
定位unityNGUI控件的路径,获取该路径下的所有Prefab类型资源的文件路径;
根据获取的Prefab资源的文件路径,使用AssetDatabase加载所有的Prefab资源并实例化。
3.根据权利要求1所述的UnityNGUI控件锚点更新模式优化方法,其特征在于,所述步骤B包括:
获取所有实例化对象的UIRect组件对象,得到UIRect集合;
逐个扫描UIRect集合的每个UIRect组件对象,获取并判断其锚点更新模式是否为OnUpdate模式,若为OnUpdate模式,则记录该UIRect组件对象。
4.根据权利要求1所述的UnityNGUI控件锚点更新模式优化方法,其特征在于,所述步骤C包括:
获取记录的各UIRect组件对象的锚点更新模式,若其预设模式为OnUpdate且不允许修改,则从记录中删除该UIRect组件对象。
5.一种UnityNGUI控件锚点更新模式优化装置,其特征在于,包括:
实例化模块(1),用于遍历unityNGUI控件,查找Prefab类型的资源并将其进行实例化;
第一筛选模块(2),用于获取各实例化对象的锚点更新模式,筛选锚点更新模式为OnUpdate的Prefab资源,记录其文件路径;
第二筛选模块(3),用于进一步筛选锚点更新模式可修改的Prefab资源;
设置模块(4),用于将最终筛选出的Prefab资源的锚点更新模式修改为OnEnable模式。
6.根据权利要求5所述的UnityNGUI控件锚点更新模式优化装置,其特征在于,所述实例化模块(1)包括:
路径获取模块(11),用于定位unityNGUI控件的路径,获取该路径下的所有Prefab类型资源的文件路径;
资源实例化模块(12),用于根据获取的Prefab资源的文件路径,使用AssetDatabase加载所有的Prefab资源并实例化。
7.根据权利要求5所述的UnityNGUI控件锚点更新模式优化装置,其特征在于,所述第一筛选模块(2)包括:
筛选组件模块(21),用于获取所有实例化对象的UIRect组件对象,得到UIRect集合;
锚点更新模式判断及记录模块(22),用于逐个扫描UIRect集合的每个UIRect组件对象,获取并判断其锚点更新模式是否为OnUpdate模式,若为OnUpdate模式,则记录该UIRect组件对象。
8.根据权利要求5所述的UnityNGUI控件锚点更新模式优化装置,其特征在于,所述第二筛选模块(3)包括:
剔除模块(31),用于获取记录的各UIRect组件对象的锚点更新模式,若其预设模式为OnUpdate且不允许修改,则从记录中删除该UIRect组件对象。
9.一种计算机可读存储介质,其上储存有计算机程序,所述计算机程序被处理器执行时实现如权利要求1-4任一项所述的方法。
CN201910660280.1A 2019-07-22 2019-07-22 一种UnityNGUI控件锚点更新模式优化方法及装置 Active CN110457054B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910660280.1A CN110457054B (zh) 2019-07-22 2019-07-22 一种UnityNGUI控件锚点更新模式优化方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910660280.1A CN110457054B (zh) 2019-07-22 2019-07-22 一种UnityNGUI控件锚点更新模式优化方法及装置

Publications (2)

Publication Number Publication Date
CN110457054A CN110457054A (zh) 2019-11-15
CN110457054B true CN110457054B (zh) 2023-01-03

Family

ID=68481613

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910660280.1A Active CN110457054B (zh) 2019-07-22 2019-07-22 一种UnityNGUI控件锚点更新模式优化方法及装置

Country Status (1)

Country Link
CN (1) CN110457054B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111104144B (zh) * 2019-12-27 2023-10-20 珠海金山数字网络科技有限公司 一种锚点更新的方法及装置
CN111552468B (zh) * 2020-04-26 2021-03-05 苏州沁游网络科技有限公司 一种基于Unity的预制件编辑方法、装置及存储介质
WO2023039898A1 (zh) * 2021-09-18 2023-03-23 厦门雅基软件有限公司 编辑指令的响应方法、装置、电子设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105487885A (zh) * 2015-11-23 2016-04-13 盛趣信息技术(上海)有限公司 手游热更新方法
CN108304178A (zh) * 2018-01-17 2018-07-20 珠海金山网络游戏科技有限公司 一种基于Unity3D的数据集引用方法及系统
CN109885310A (zh) * 2019-01-14 2019-06-14 珠海金山网络游戏科技有限公司 一种降低手机游戏Shader模块内存占用的方法及装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8185731B2 (en) * 2007-09-25 2012-05-22 International Business Machines Corporation Device for configuring functional capabilities in a data processing system

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105487885A (zh) * 2015-11-23 2016-04-13 盛趣信息技术(上海)有限公司 手游热更新方法
CN108304178A (zh) * 2018-01-17 2018-07-20 珠海金山网络游戏科技有限公司 一种基于Unity3D的数据集引用方法及系统
CN109885310A (zh) * 2019-01-14 2019-06-14 珠海金山网络游戏科技有限公司 一种降低手机游戏Shader模块内存占用的方法及装置

Also Published As

Publication number Publication date
CN110457054A (zh) 2019-11-15

Similar Documents

Publication Publication Date Title
CN110457054B (zh) 一种UnityNGUI控件锚点更新模式优化方法及装置
KR102630035B1 (ko) 신경망 기반 영상 신호 처리를 수행하는 방법 및 장치
US6226783B1 (en) Object oriented method of structuring a software step program
CN108845861B (zh) 虚拟摄像头的实现方法及装置
CN105378689B (zh) 用于统一可扩展固件接口(uefi)驱动器和协议的方法和装置
CN110363172A (zh) 一种视频处理方法、装置、电子设备及可读存储介质
US9501825B2 (en) Real-time functional-MRI connectivity analysis
KR102476103B1 (ko) 공유 컨텐츠 운용 방법 및 이를 지원하는 전자 장치
JP2013210207A (ja) レーダ画像の目標識別装置、目標識別方法、及び目標識別プログラム
CN111966361B (zh) 用于确定待部署模型的方法、装置、设备及其存储介质
WO2017173922A1 (zh) 虚拟机升级方法及装置
CN103518183A (zh) 图形对象分类
Wloka et al. Smiler: Saliency model implementation library for experimental research
US10162908B1 (en) Systems and methods for extracting bounding planes of solid models
CN109246467A (zh) 标记待分享视频的方法、装置、摄像机和智能手机
CN110188815B (zh) 一种特征点采样方法、装置、设备及存储介质
KR20180111242A (ko) 채색 가능한 콘텐트를 제공하는 전자 장치 및 그 방법
CN103942131A (zh) 监控底层接口是否变化的方法及装置
KR20170046496A (ko) 카메라를 갖는 전자 장치와 그의 이미지 처리 방법
EP3201790A1 (en) Evaluating documentation coverage
CN111858018B (zh) Cgroup配置的方法、装置、计算机设备及存储介质
CN109117326A (zh) 基于申威架构的用户态网卡自动探测的处理方法及装置
CN109885783B (zh) 一种三维建筑模型的加载方法及其装置
CN108845791B (zh) 应用程序代码开发处理方法及装置、可读存储介质、终端
CN112149836B (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
CB02 Change of applicant information
CB02 Change of applicant information

Address after: 519000 Room 102, 202, 302 and 402, No. 325, Qiandao Ring Road, Tangjiawan Town, high tech Zone, Zhuhai City, Guangdong Province, Room 102 and 202, No. 327 and Room 302, No. 329

Applicant after: Zhuhai Jinshan Digital Network Technology Co.,Ltd.

Applicant after: Guangzhou Xishanju Network Technology Co.,Ltd.

Address before: Building 3, Jinshan Software Park, 325 Qiandao Ring Road, Tangjiawan Town, high tech Zone, Zhuhai, Guangdong 519000

Applicant before: ZHUHAI KINGSOFT ONLINE GAME TECHNOLOGY Co.,Ltd.

Applicant before: GUANGZHOU SEASUN ENTERTAINMENT NETWORK TECHNOLOGY Co.,Ltd.

GR01 Patent grant
GR01 Patent grant