由于 VB.NET 的各种缺点(糟糕的音频支持、执行过程中没有读取事件、键盘输入非常弱等),我最终无法进一步使用我的程序。所以我尝试了 SDL.NET 6.1。
尽管它的文档很糟糕,但我能够修复我的代码以使用它,我喜欢它!
但是有一个问题。我不知道如何为它设置我的应用程序设置。启动对象绝对应该是一个类(示例总是在类中,而不是模块中),但启动类必须是一个表单!这很糟糕,因为 SDL 通过 SetVideoMode 创建自己的窗口;你不需要表格。因此,当表单构造函数 New() 完成时,会创建一个无用的表单,并且您有两个窗口。
我尝试在 New() 中调用游戏引擎循环,以便游戏在 New() 没有完成的情况下启动。游戏运行正常,这样就解决了“第二个窗口”的问题……但是无法关闭! X 按钮什么都不做,对 Events.QuitApplication 或 Me.Close 的调用被公然忽略,等等。
我难住了。看来我需要设置一个非表单类作为启动对象,但它不会让我。
哦,对了,好像有两个东西叫做“SDL NET”。为了澄清,我正在使用这个,它存在于SdlDotNet命名空间中。
哦,我忘了提,我还注意到很多例子都有一行写着“[STAThread]”。这很重要吗?
编辑:我已经收到并接受了我的问题的答案,但我想告诉其他人退出/关闭应用程序的问题是什么,即使这不是我的问题:
虽然 SDL.NET 允许您接收输入和运行其他事件而不必停止运行逻辑,应用程序在逻辑运行时仍然无法退出。所以我发现告诉你的 SDL.NET 应用程序在运行逻辑中退出的最佳方法是使用以下两行:
SdlDotNet.Core.Events.QuitApplication
End
将这些放置在 SdlDotNet.Core.Events.Quit 事件的处理程序中,以及您希望程序退出的任何其他位置。