有一段时间了,我一直想在C ++和DirectX 9中创建自己的GUI“库”。我已经看到了很多关于GUI的问题,但我想要的是一个特定于游戏的GUI。大多数库都非常复杂,非常通用,它们支持命令行解析和窗口创建等。这些库不适合我的需求,所以我想编写自己的库。唯一的问题是我不知道从哪里开始。
我不知道如何为库构建框架/基础。我不知道如何使GUI元素/对象相互通信以及如何处理事件。我也不知道如何管理GUI的图形。例如,我是否让程序员对GUI的外观负责,还是创建默认设计?然后我存储一个单独的文件来设计按钮,文本框,标签,组合框等吗?
我还想指出,我只在全屏模式下计划我的GUI,而且我只想支持按钮,文本框,静态标签等基本元素。我希望能够创建一个HUD与图书馆。我知道我要问很多问题,但我从来没有试过创造这么复杂的东西。
答案 0 :(得分:6)
如果您对所有这些事情一无所知,我建议您不要从头开始编写自己的GUI。 (我实际上是从头开始编写我自己的游戏GUI,我有点后悔 - 我最终得到的结果有点半生不熟,我相信周围有更好的选择。)
但我明白你的意思:你不想使用标准的GUI工具包,因为它不会“感觉”像游戏一样。好消息是,现有的GUI工具包专为游戏而设计。最受欢迎的似乎是CEGUI(Crazy Eddie的GUI系统)。从你的website可以看出,它看起来很漂亮,看起来根本不像Windows应用程序。
我没有使用它,但我建议你在设计自己的之前先查看它。
答案 1 :(得分:3)
编写自己的gui将是一项很好的教育任务,因为您很快就会学习用于使其可扩展的设计模式。如果您有兴趣,GoF book 使用GUI作为许多模式的一个例子。
然而,这是一个很大的(巨大的 - 我的意思是你的生命多年)任务。
然而,您可能感兴趣的一个项目是cIMG库。这是一个图像处理库而不是gui库。它不支持按钮或任何类似的东西,但它确实做了较低级别的绘图,可能更接近你的最终目标(它不会将其成像外包给gui /图形库)。它也是一个仅头文件库,所有代码都在一个头文件中,所以很容易看到。
答案 2 :(得分:3)
我恭敬地不同意这里表达的其他意见。 (bg:我在大学里学过CS,而且我已经编程了30年。)
您可以编写自己的GUI系统,如果您知道自己在做什么,就可以在不到两周的时间内完成。即使作为一个有点高级的编程初学者。我相信"如何编写GUI系统"失去了知识,导致人们认为编写GUI系统需要数年时间。
我建议(并且我认识到这是少数报告)您的努力中的以下战略要点:
我在500行Python中编写了非常复杂的GUI环境(使用pysdl2。)这包括我的包装器。我还用C ++编写了GUI系统 - 它需要更多的代码行,但实际上并不是那么多。
我绝对100%建议您为自己的工作编写自己的GUI系统。你将不得不开箱即用#34;关于当代主流编程思想,但你可以实现的控制水平是令人难以置信的解放 - 不仅仅是你的游戏工作,而是涉及与用户互动的所有编程领域。
如果你想摆脱主流盒子,可以考虑阅读Alan Kay,Chuck Moore或任何一位年长的程序员。他们并没有感染这种想法"你必须使用其他人在你面前写的东西,因为其他人比你更了解你需要什么以及如何制作东西,而你只是在重复他们的如果你无论如何走上他们的道路都会犯错误,"当他们做了他们所做的事。他们的想法是什么有用"与当代有效的观念完全不同。我鼓励探索。
答案 3 :(得分:2)
对于这个问题已经有很多成熟的解决方案,例如自定义游戏的Scaleform和Unity等游戏引擎中的集成gui API,更不用说来自你之前的许多经验丰富的开发人员的Flotsam和jetsam: / p>
http://www.google.com/search?q=game+gui+library
鉴于你承认缺乏经验和你提出的建议的冗余,我认为你选择一些更小,更有用的东西是明智的。