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

Bas*_*sic 13 .net xna

我知道XNA游戏没有VB.Net项目类型,但作为一个简单的测试,我将VB解决方案汇总在一起Microsoft.XNA.*.它有一个实现的类Microsoft.XNA.Framework.Game.然后在C#中Game1.cs,我只是删除了所有样板代码并将其修改为继承自我的VB类...

namespace MyGame {
    public class Game1 : GameEngine.Engine {
    }
}
Run Code Online (Sandbox Code Playgroud)

哪个继承......

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

   ...
Run Code Online (Sandbox Code Playgroud)

这似乎工作,我已经能够加载内容,渲染模型,采取游戏手柄输入等...

所以我要问的是......由于VB.Net不支持某些高级功能,是否真的存在限制,或仅仅是没有项目模板/支持可用?

在编译为MSIL时,VB编译器是否缺少某些性能优化?

Pol*_*ial 14

VB.NET和C#都在语义级别编译到同一个MSIL,因此它不是技术限制.正如您所见,将一个访问XNA的VB.NET应用程序混合起来并不困难.

限制仅仅是因为示例必须由一个人用特定语言编写,并且大多数专业游戏开发人员将来自C++背景.这是一个人力资源限制 - 他们只能编写如此多的示例代码.

C#和VB.NET之间也存在一些性能差异,这可能是微软决定的原因.

更新:事实证明VB.NET不支持不安全的代码.出于性能原因,您经常会发现在游戏编程中需要不安全代码的情况.我有一种感觉,微软的决定是基于一系列理由而做出的.

  • @Polynomial:虽然我同意它更快,但其他人应该记住,不安全的代码无法从XNA部署到Xbox 360. (3认同)