c# - 我可以用 C# 编写 Windows 8 RT 游戏吗

标签 c# xna windows-runtime monogame sharpdx

是否可以使用 C# 编写 Windows 8 RT 和/或 Windows 8 Phone 游戏代码?

最佳答案

我对“C# 中的游戏”这件事做了很多研究,所以我想我会把它发布给其他人:

XNA 是制作 C# 游戏的简单方法。您可以在 Windows 应用商店上发布新的 XNA 游戏,它会运行良好。

但是,您不能使用 XNA 制作 Windows Phone 8 或 Windows 8 游戏。 (您只能针对 Windows Phone 7.1 版。)XNA 不支持这些操作系统的新 API。

但是,Windows Phone 8 和 Windows 8 都将运行 XNA 应用程序。这些应用无法针对特定于 Windows 8 或 Windows 8 Phone 的任何功能。

总结一下。当前版本的 XNA (4.0) 支持较旧的 API 与 Windows 和 Windows Phone 通信。它们仍然可以在 Windows 8 上运行,但您不能使用较新的东西。

Microsoft 没有为新的 Windows 8 和 Windows Phone 8 API 使用 C# 制作游戏的产品。

但是,如果您不介意使用开源项目,您可以采取一些措施来使用 C# 编写可以使用更新的 Windows 8 和 Windows Phone 8 API 的游戏:

单人游戏

如果您想使用 XNA 的 api 为新的 Windows 8 API 制作游戏,您可以使用 MonoGame(这就是我使用的)。它是一个实现 XNA API 的开源 api,但具有适用于 IOS、Android 和 Windows 8 的插件。这是一个非常好的跨平台选项。 MonoGame 最近开始支持 3D 图形(即 Infinite FlightArmed )。 (注意:我不以任何方式隶属于 MonoGame。)

夏普 DX (DirectX)

如果您希望以 Microsoft 支持的方式制作针对 Windows 8 API 的游戏,您最好的选择是 DirectX。但 Direct X 是一个 C++ API。这也真的很难。

如果您想要制作一款 2D 游戏(例如植物大战僵尸或愤怒的小鸟),那么 Direct X 就太过分了。你最好走 MonoGame 路线。我花了几天时间仔细研究教程并非常努力地理解 Direct X。到那段时间结束时,我获得了在屏幕上绘制单个三角形的能力。 (我的游戏循环和 Sprite 在 MonoGame 中移动的时间相同。)

所以我再说一遍,如果您还不知道 DirectX 并且您正在制作 2D 应用程序,请不要走 DirectX/SharpDX 之路。

不支持 Direct2D 的 Windows Phone 8 进一步阻碍了 DirectX 2D 路线。 DirectX 有一个称为 Direct2D 的子集,用于 2D 渲染。但是,此子集在 Windows Phone 8 上不受支持。“替代品”(目前)是 Direct X 工具包。

如果您仍然完全走在 Direct X 道路上,那么您可以使用 SharpDX 在 C# 中编写它。它是 DirectX 的 C# 包装器,运行良好(尽管我不知道它是否支持 Direct X 工具包)。


总结

它的缺点(对我来说)是微软没有更新他们的 C# 游戏开发 API 来支持 Windows 8 和 Windows Phone 8 中的新东西。但是 MonoGame 允许您使用 XNA API 来做到这一点。它还允许您编写跨平台游戏,所以无论如何它都更好。 (您可以“免费”移植到 IOS 和 Android。)

我的游戏在 MonoGame 中运行良好,到目前为止没有任何问题!

关于c# - 我可以用 C# 编写 Windows 8 RT 游戏吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14445379/

相关文章:

vb.net - 在 WinRT、Windows8(10) 应用程序中获取 Windows 版本

c++ - 从C++/CX迁移到C++/WinRT时与 header 和 namespace 有关的错误

c# - 如何在 asp.net 中的按钮单击事件调用之前和之后调用 javascript 函数

c# - 在 MVC 程序中调用 Web API

c# - XNA游戏性能

c# - 平铺对象位置与 MonoGame 位置不匹配

c# - 在 Windows 应用商店应用程序中使用 httpclient 获取 UTF-8 响应

c# - 从ProgID获取dll目录

c# - System.Timers.Timer 不工作编辑 [在 asp.net web 表单中]

c# - 使用手机存储中的歌曲实现播放列表 [windows phone]