Questions tagged «gui»

图形用户界面。用于描述玩家可用于与游戏互动的工具的术语。

9
OpenGL的GUI好吗?[关闭]
我开始使用Superbible和我从基本图形中学到的知识来学习Free技巧来学习FreeGLUT的技能。 为了从这种经验中获得更多收益,我想集成一个GUI来覆盖FreeGLUT所使用的一个,现在的问题是:这可能吗?我应该使用哪个库? 该库的一些特征: 开源的 多平台(Linux和Windows) C / C ++ 如果您有任何其他建议,请随时将其与您的答案一起发布给我。

7
即时图形用户界面-是或否?[关闭]
几年前,我一直在使用许多“保留的” GUI系统(以下是我的意思)进行应用程序开发,例如MFC,QT,Forms,SWING和多个Web-GUI框架。我总是发现大多数GUI系统的概念过于复杂和笨拙。与应用程序中的其他部分相比,大量的回调事件,侦听器,数据副本,从字符串到字符串的内容-转换(等等)始终是错误和头痛的来源。(即使“正确”使用了数据绑定/模型)。 现在我正在写电脑游戏:)。到目前为止,我使用的是一个GUI:Miyagi(不知名,但与所有其他系统基本相同的Idea。) 那太差了。 对于像游戏这样的实时渲染环境,我觉得“保留的” GUI系统已经过时了。用户界面通常不需要自动布局或动态调整窗口大小。相反,他们需要与不断变化的数据进行非常有效的交互(例如世界上模型的3D位置) 几年前,我偶然发现了“ IMGUI”,它基本上类似于即时图形模式,但是用于用户界面。我没有太在意,因为我仍在进行应用程序开发,而IMGUI本身似乎并不广泛也不成功。仍然,他们采用的方法似乎是如此性感和优雅,以至于让我想使用这种UI方式为下一个项目编写一些东西(我未能说服工作中的任何人:(...) 让我总结一下“保留”和“立即”的意思: 保留的GUI:在一个单独的初始化阶段,您将创建“ GUI控件”(如Labels,Buttons,TextBoxes等),并使用某种描述性(或编程性)方式将它们放置在屏幕上-始终在呈现任何内容之前。控件在内存中拥有大多数状态,例如X,Y位置,大小,边框,子控件,标签文本,图像等。您可以添加回调和侦听器,以了解事件并更新GUI控件中的数据。 即时GUI:GUI库由一次性“ RenderButton”,“ RenderLabel”,“ RenderTextBox” ...功能组成(编辑:不要被Render弄糊涂字首。这些功能还可以执行控件背后的逻辑,例如轮询用户输入,插入字符,在用户按住键时处理字符重复速度等...),您可以调用它们以“立即”呈现控件(doesn'不必立即将其写入GPU。通常会记住当前帧的GPU,并在以后将其分类。这些库不包含任何“状态”。如果要隐藏按钮...,请不要调用RenderButton函数。所有具有用户交互作用的RenderXXX函数(如按钮或复选框)都具有返回值,这些返回值指示例如用户是否单击了按钮。所以你的“ RenderGUI” 函数看起来像一个很大的if / else函数,您可以在其中调用或不调用RenderXXX函数,具体取决于游戏状态,并且所有数据更新逻辑(当按下按钮时)都将插入到流程中。所有数据存储都在gui的“外部”,并按需传递给Render函数。(当然,您可以将大功能分成几个功能,或使用一些类抽象来对gui的各个部分进行分组。我们不再像1980年那样编写代码了,对吗?)) 现在,我发现Unity3D实际上对其内置GUI系统使用了完全相同的基本方法。也可能有两种使用这种方法的GUI? 仍然..环顾四周时,似乎对保留的GUI系统有强烈的偏见?至少我没有在Unity3D中找到这种方法,并且原始的IMGUI社区似乎相当安静。 因此,有人同时使用这两种想法并有强烈的见解? 编辑:我对来自现实经验的观点最感兴趣。我认为IMGUI论坛中有很多关于直接GUI方法的“理论缺陷”的热烈讨论,但是我总是发现了解现实中的缺陷会更具有启发性。
38 gui 

9
游戏中的HUD和GUI有什么区别?
有谁知道游戏中图形HUD(抬头显示)和GUI(图形用户界面)之间的区别?HUD是GUI的一部分,仅显示信息吗?那是否意味着我不能在技术上与HUD交互,而可以与GUI交互(例如单击按钮)?还是两个术语基本上都描述了同一件事? 注意:我在游戏中谈论的是这些词。 请参见以下示例: 在此图像中什么将被描述为GUI,什么将被描述为HUD?
34 gui  terminology  hud 

9
为什么我应该选择设计保健棒而不是心脏容器?
设计任何基于英雄的游戏时,无论是冒险游戏,RPG游戏,斗士游戏还是类似游戏,最终都需要决定您的健康系统。除非用户界面为零,否则禁止使用任何再生系统(例如《使命召唤》),您应该使用一组独立的心脏容器(塞尔达风格)还是连续的健康栏(例如Street Fighter)? 这是我一直在考虑的一些争论点: 内心更容易理解(非常清楚可以击中多少击中) 扩张时,心灵会给人更好的成就感(多一分心!而不是更长的杠(或更糟,没有变化)) 心脏会占据很多屏幕空间,而健康栏可以保持紧凑 使用健康栏可以对健康/损害平衡进行真正的精细控制(使用float而不是int) 由于我无法找到与此主题相关的任何游戏设计文章,因此,如果对每个人都具有一定了解,甚至只是一些有见地的链接的所有人都能够为我提供帮助,我将非常感谢!

3
您如何在基于光栅的图形内容中实现分辨率独立性?
那些不幸无法在锁定平台规格上运行的游戏(例如掌上电脑)需要在各种分辨率格式和宽高比上运行。 在3D游戏中,您可能具有基于栅格图形的HUD或菜单GUI,而在2D游戏中,您可能具有一堆四边形,它们是精灵的容器。 所以我的问题是,您如何处理各种分辨率和纵横比下的设计和操作内容?假设您有一个精灵字符,它是300x400像素的精灵,并被平铺的水平包围。在不同的分辨率/纵横比下,您将看到完全不同的FOV。或者,如果您具有HUD或GUI菜单,则希望将某些东西相对于屏幕放置在相同的位置,并且尺寸相同。但是,图形源是栅格位图,而不是矢量。 显然,问题已经解决了很多次。我很想听听到目前为止对您有用的各种方法。您是否保留了任意尺寸不可知的“像素”单位,并通过基于分辨率和纵横比的公式或其他方法将其神奇地转换为所需的尺寸? 编辑: 因此,结论是枚举您的宽高比。方面的最低组合:分辨率是您将重要内容设计的一种。一个安全的地方,如果你愿意的话。相同的长宽比,但更高的分辨率是简单的缩放问题。艺术内容旨在实现最高分辨率。较大的宽高比仅显示更多的级别/ FOV,并且所显示的信息并不重要,安全区域中的信息并不重要。我做的像这张照片。
32 2d  sprites  gui 

9
您可以建议使用什么C ++ GUI库?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 6年前关闭。 我正在用C ++构建自己的游戏引擎,目前正在确定应使用的用户界面。 我应该使用图书馆吗?我应该自己做吗?
26 c++  gui 

7
HTML5游戏(画布)-UI技术?
我正在使用PhoneGap开发用于移动设备(Android / iPhone / WebOS)的JavaScript / HTML5游戏(使用Canvas)。我目前正在尝试设计UI和游戏板的构建方式以及它们之间的交互方式,但我不确定最佳解决方案是什么。这是我能想到的- 使用drawImage和fillText之类的东西将UI正确地构建到画布中。使用常规DOM对象在画布外部构建UI的一部分,然后在UI元素需要与游戏面板画布重叠时在画布上浮动div。还有其他我可能没有想到的可用于构建游戏UI的技术吗?另外,以下哪一种将被视为“标准”方式(我知道HTML5游戏不是很流行,因此可能还没有“标准”方式)?最后,您会推荐/使用哪种方式? 提前谢谢了!

7
接口101:使其漂亮
我做了一些游戏,实际上已经发布了。我一遍又一遍碰到一个特定的问题,那就是游戏的界面/主题。 您如何对游戏的外观和界面做出非任意,一致的决定? 例如,在我基于Silverlight化学的游戏的第一个版本中,我做出了一个(不好的决定)决定采用自然的,横向样式的外观,从而产生了以下UI: 然后,在以后的迭代中,我变得更聪明,并且使用了更加“机械”的,gr脚的外观,从而得到了(最终UI): 我肯定会说,我在UI中的品味通过迭代得到了改善。但这是许多最初的任意决定然后进行大量调整的结果。 有没有更好的方法来弄清楚如何为游戏设定主题? 为了使写作平行,当您写幻想/科幻小说时,需要描述很多要素。虽然您可以随意发明物体/生物/地点/等,但是当您坐下来几分钟并设计区域,区域,行星或宇宙时,您会获得一个更加一致的世界。这样,所有东西就很好地融合在一起了,您可以问自己“ 这在宇宙中将如何工作? 编辑:似乎我没有很好地解释这一点。让我简化一个极端的问题:当我需要布置标题屏幕(带有背景,字体,带有皮肤的按钮)时,如何确定它们的外观?绿色还是蓝色?垃圾或没有?圆形还是扁平?衬线还是无衬线? 将这个问题带入整个游戏中。您如何确定事物的外观?您使用什么过程使它们一致且非任意? 再次查看屏幕截图。我本可以固守在草/天空/岩石上,但金属似乎更适合化学反应和原子的概念。
23 gui  ui-design 

6
使用什么坐标系来处理2D UI?
在长宽比问题之后,我很想听听其他人在2D UI系统(最有可能是他们自己开发的解决方案)上工作时正在使用什么。具体来说,如何处理坐标系。我认为有三种选择: 硬编码的坐标(例如:0-> 720,0-> 576) 归一化的坐标(0.0-> 1.0,0.0-> 1.0),在渲染之前映射到真实坐标 虚拟坐标(例如:0-> 1600、0-> 1000),在渲染之前已映射到真实坐标 硬编码显然仅在以下情况下有用:在固定平台上并且事先知道屏幕空间坐标是什么,或者准备为每组可能的屏幕尺寸编写屏幕布局。 归一化的坐标很好,但是当屏幕的宽高比不固定时(例如0.75映射到宽屏而不是4:3时,则0.75映射到不同的物理坐标)会产生歧义。同样,对于作者来说,将UI元素声明为(0.2 x 0.2)真的违反直觉,只是发现渲染时它实际上不是正方形。 虚拟坐标是明确的,但在重新映射阶段遇到与标准化坐标相同的问题:很小的十进制差异会导致偏离一对一的错误,这意味着应该平铺的UI元素之间现在有接缝。 同样,当您有固定分辨率的屏幕时,归一化坐标和虚拟坐标都意味着很难保证UI图像中艺术家的精细像素与屏幕上像素之间的1:1映射,这意味着您存在以下风险:令人讨厌的缩放伪影(假设您在屏幕上渲染为带纹理的四边形)。 我们采用了虚拟坐标方法,特别是为了避免对宽高比产生歧义。因此,当渲染到16:10屏幕时,UI空间为(0,0)->(1600,1000),但是当渲染为4:3时,可用的UI空间实际上为(133,0)->(1467 ,0)。 有我不知道的更好的解决方案吗?有什么好的策略可以最小化这三种方法的问题?
20 rendering  gui 

4
Unity新UI-动态更改GUI元素调用的功能
希望动态更改按钮OnClick和滑块On Value Changed中的值 。 如果我不得不猜测如何完成此操作,请获取对button / gui元素的引用。接下来,获取Button脚本组件,并访问该函数调用列表。但是我不确定如何修改该列表。有人有想法么? 可能有帮助的更多详细信息: 所调用的函数是自定义脚本组件的一部分 对滑块使用“动态”变量选项 可用于创建动态按钮
17 c#  unity  gui 

7
用户界面模型的代码
我的UI设计师为UI和所有内容制作了一个可爱的photoshop PSD。我遇到的最大问题是将一些更优雅的字体转换为游戏中可渲染的东西。是否可以将Photoshop中的这些字体样式转换为某种位图字体? 我需要能够在我的代码中呈现这样的文本:
17 xna  c#  gui  fonts 

4
魔法/法力/能量的一些好的(复古)符号是什么?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 5年前关闭。 就像心脏被广泛用于健康和生活在古老的复古游戏中一样。 ...什么是用于能量,法力和/或魔法点的好图标?
17 art  gui 

1
使用OpenGL(LWJGL)制作HUD / GUI
我处于游戏开发阶段,需要制作HUD或GUI。我从来没有涉及到这一部分,所以我不知道它是如何完成的。我尝试在屏幕上的固定位置渲染一个简单的四边形,但是有一个问题。为了使我的相机与正交摄影配合使用,我使用以下方法: public void lookThrough() { GL11.glMatrixMode(GL11.GL_PROJECTION); GL11.glLoadIdentity(); GL11.glOrtho(position.x, position.x + Display.getDisplayMode().getWidth()/zoom, position.y + Display.getDisplayMode().getHeight()/zoom, position.y, -1, 1); GL11.glMatrixMode(GL11.GL_MODELVIEW); } 我看不到如何使用这种方法将某些东西固定在屏幕上?可以解决吗?谢谢 :)
15 opengl  java  gui  lwjgl 

2
实体/组件系统和UI“实体”
我对实体/组件系统仍然很满意。我发现,由于我具有用于绘制精灵(或精灵表)和处理输入(鼠标/触摸点击)的有用组件,因此我自然希望重用这些组件来创建UI组件(例如按钮,例如,级别选择屏幕)。 这让我感到非常奇怪。我一直将实体理解为“游戏模型”,例如玩家,敌人,道具等。从代码重用的角度来看,为UI重用组件是很有意义的。 UI / GUI关注点如何(以及在​​哪里)适合实体/组件系统? (注意:此问题与平台无关,因为它适用于多种平台/语言)

2
尽管使用了Time.deltaTime,但移动似乎与帧速率有关。
我有以下代码来计算在Unity中移动游戏对象所需的转换LateUpdate。据我了解,我对的使用Time.deltaTime应使最终的翻译帧速率独立(请注意CollisionDetection.Move(),仅用于进行射线广播)。 public IMovementModel Move(IMovementModel model) { this.model = model; targetSpeed = (model.HorizontalInput + model.VerticalInput) * model.Speed; model.CurrentSpeed = accelerateSpeed(model.CurrentSpeed, targetSpeed, model.Accel); if (model.IsJumping) { model.AmountToMove = new Vector3(model.AmountToMove.x, model.AmountToMove.y); } else if (CollisionDetection.OnGround) { model.AmountToMove = new Vector3(model.AmountToMove.x, 0); } model.FlipAnim = flipAnimation(targetSpeed); // If we're ignoring gravity, then just …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.