你为什么不能在VB.Net中开发XNA游戏?

时间:2012-02-07 09:11:37

标签: .net xna

我知道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编译器是否缺少某些性能优化?

2 个答案:

答案 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