我知道XNA游戏没有VB.Net项目类型,但作为一个简单的测试,我将一个引用Microsoft.XNA.*
的VB解决方案整合在一起。它有一个实现Microsoft.XNA.Framework.Game
的类。然后在C#Game1.cs
中,我只是删除了所有样板代码并将其修改为继承自我的VB类......
namespace MyGame {
public class Game1 : GameEngine.Engine {
}
}
继承......
Public Class Engine
Inherits Microsoft.Xna.Framework.Game
Protected Overrides Sub Update(GameTime As Microsoft.Xna.Framework.GameTime)
If GamePad.GetState(PlayerIndex.One).Buttons.Back = ButtonState.Pressed Then
Me.Exit()
End If
For Each Element In Elements
Element.Update(GameTime)
Next
MyBase.Update(GameTime)
End Sub
...
这似乎有效,我已经能够加载内容,渲染模型,进行游戏手柄输入等......
所以我要问的是......由于VB.Net不支持某些高级功能,是否真的存在限制,或仅仅是没有项目模板/支持可用?
编译到MSIL时,VB编译器是否缺少某些性能优化?
答案 0 :(得分:14)
VB.NET和C#都在语义级别编译到同一个MSIL,所以这不是技术限制。正如您所见,将一个访问XNA的VB.NET应用程序混合起来并不困难。
限制仅仅是因为一个人必须用特定语言编写示例,大多数专业游戏开发人员都将来自C ++背景。这是一个人力资源限制 - 他们只能编写如此多的示例代码。
还有一些performance differences between C# and VB.NET,可能有助于微软的决定。
更新:事实证明VB.NET doesn't support unsafe code。出于性能原因,您经常会发现在游戏编程中需要不安全代码的情况。我有一种感觉,微软的决定是基于一系列原因而做出的。
答案 1 :(得分:8)
XNA确实支持VB。这是在2011年5月宣布的 - > http://blogs.msdn.com/b/vbteam/archive/2011/05/25/vb-support-for-the-xna-platform.aspx