我知道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不支持不安全的代码.出于性能原因,您经常会发现在游戏编程中需要不安全代码的情况.我有一种感觉,微软的决定是基于一系列理由而做出的.
XNA确实支持VB.这是在2011年5月宣布的 - > http://blogs.msdn.com/b/vbteam/archive/2011/05/25/vb-support-for-the-xna-platform.aspx