imgui

Unity编辑器的扩展:IMGUI

僤鯓⒐⒋嵵緔 提交于 2021-02-18 12:29:04
IMGUI 介绍 所有关于 Editor 的相关 UI,包括 Inspector、Hierarchy、Window、Game 视图上动态创建的那些半透明 UI、还有 Scene 视图上可添加的辅助显示 UI,叫做 IMGUI,全称 Immediate Mode GUI 。该名字来源于两类型的 UI 系统: immediate 和 retained 。 retained:当你设置好各种组件如 Text、Button 等的信息,或修改它们的相关属性后,这些组件的相关信息和改动就被保存(retained)下来了,系统会根据这些新的信息来绘制响应事件等,你可以随时去查询如 Text 文本内容或颜色等信息。UGUI 即是典型的 retained mode GUI。 immediate:跟上面的相反,系统不会自动保存 UI 控件上的各种信息,不会用上次的状态继续工作,而是反复的询问你这些控件应当是处于什么位置什么文本等状态信息。因此任何的用户交互结果是立即呈现返回给用户,而不是当用户需要的时候自行查询。如: 1 bool selected = false ; 2 void OnGUI() 3 { 4 selected = GUILayout.Toggle(selected, " A Toggle text " ); 5 if (selected) 6 { 7 DoSomething() 8 }

C#代码优化:拯救你的CPU耗时

扶醉桌前 提交于 2021-02-06 10:28:40
之前,我们已经对 本地资源检测 中和 资源/Prefab的内容做了总结 ,后续UWA也会和大家一起努力,进一步丰富这些检测内容。今天我们要聚焦的是本地资源检测中的C#代码相关的检测项。 要保证游戏在流畅的帧率下运行,就要保证CPU和GPU能够及时地完成它们在一帧当中的“任务”。而本文我们讲解的这些C#代码的性能,就会影响到每帧CPU自身的耗时。当游戏出现帧率降低、间歇性卡顿甚至卡死等现象时, 我们就需要考虑这是否是由开发者自己所编写的脚本性能较差所造成的。 性能的优化问题,实际上是个“时空问题”:我们要尽可能地节省运算所需的时间,节约内存上占用的空间。对C#代码的优化亦是如此,一方面是对CPU耗时的优化,一方面是对内存分配的优化。而“空间问题”与“时间问题”又常常会相互转化——优化内存的目的之一,是减少GC,这又可以归结为减少CPU耗时。本文要讲解的一系列规则,就是主要针对CPU耗时的规则。 1、类中存在OnGUI方法 规则里涉及到的OnGUI,它是Unity的IMGUI系统绘制UI所调用的方法。该方法如果写在继承了Monobehavior的脚本上,那么Unity会在每一帧自动对其进行调用。 使用IMGUI进行UI绘制,想要更改任何内容,整个图形用户界面都要重新绘制,OnGUI会在一帧当中调用多次,这会导致CPU耗时增加。此外,如果OnGUI函数使用不当,容易造成堆内存的持续分配

从零开始手敲次世代游戏引擎(八十三)

橙三吉。 提交于 2020-08-10 03:39:23
本篇我们来实现游戏内交互界面(GUI) 游戏内GUI的实现可以有很多选择,我这里选用轻量级并且支持多平台的Dear ImGui。因为它整体上的结构与我们的引擎比较契合。 https://github.com/ocornut/imgui ​ github.com 这个Dear ImGui在业界也十分有名,其脱胎于PSV的 Tearaway 这款游戏,之后由原作者进行了大量的整理扩展工作,在诸如育碧的《刺客信条 奥德赛》《刺客信条 起源》、索尼的《拯救宇宙机器人》、SE的《FFVII重制版》、Mojang的《我的世界(Bedrock)》、暴雪的《Warcraft III: Reforged》等等知名游戏当中都有应用。同时也被集成在UE、Unity、Cocos2D等知名引擎当中。 Tearaway ​ tearaway.mediamolecule.com https://github.com/ocornut/imgui/wiki/Software-using-dear-imgui ​ github.com Dear ImGui以一组自包含的源代码形式提供。其本身封装了GUI部件的状态逻辑与控制,通过一个被称为ImGui::IO的模块与外部进行通信,包括获取用户输入以及输出渲染指令。Dear ImGui本身是平台及图形渲染API无关的。使用者需要将平台的用户输入事件转换传递给ImGui:

Get Reference to Field from Reflection [duplicate]

三世轮回 提交于 2020-06-09 05:38:04
问题 This question already has answers here : How to create a reference to a value-field (4 answers) Closed 16 hours ago . I'm working on an OpenGL game engine as a passion project and im using the UI library "Dear ImGUI" to display and debug values similar to Unity's inspector. I'm having trouble thinking of a way to get a reference to the field I'm trying to debug. Here is the code i have got at the moment but the problem is that its not a reference to the actual field, its just a reference to a