windows-phone-7 - 如何在 Windows Phone 7 中加载文件?使用 XNA

标签 windows-phone-7

我正在将一款 iphone 游戏移植到 Windows Phone 7。iphone 的工作方式与 Winmo7 非常相似,因为您可以将您希望能够读取的所有文件添加到项目中。我们不希望在我们的 Assets 创建管道中有这个额外的步骤,所以我们只是将所有文件都放入我们自己的基本文件存档中,然后将那个存档文件添加到项目中。然后我们有一个 Assets 构建过程,导出我们所有的 Assets ,然后从中创建这个文件。

在 winmo7 中,您不能只做同样的事情,这让我感到惊讶。据我所知,加载数据的唯一方法是通过内容管道。我们通过简单地制作一个 contentImporter 将所有文件转换为 byte[] 并将它们导出为字节数组来相当容易地解决了这个问题,然后您可以简单地加载它们并直接访问文件中的所有字节。不幸的是,与你只是将内存转换为结构的 c++ 不同(因为文件已经以结构的格式存储)c# 似乎需要更手动的方法,你使用诸如 BitConverter 之类的东西将所有数据加载到结构和类中来自字节数组。

问题是,我们希望将现有的 Assets 导出流程用于纹理和网格之类的东西,如果我们已经有东西设置来确定应该用于每个纹理等的确切像素格式。所以在这些情况下我们不想使用默认的纹理和网格内容导入器。我们尝试通过简单地使它返回一个 Texture2D 来制作我们的 on Texture ContentImporter,但是为了创建一个 Texture2D,您需要一个图形设备。

第二个问题是必须将每项 Assets 添加到项目的过程。我们决定我们不想像为 iphone 那样只加载我们的 dataArchive,因为我们确实想对某些数据(如声音)使用默认的 ContentImporters。但是我们通过制作它解决了这个问题所以你只需添加一个文本文件,其中包含根数据目录,到项目中,然后制作一个 ContentImporter 遍历该目录结构并在所有文件上调用'context.BuildAsset' .

综上所述,我们有一个 Assets 和 ContentImporter 自动处理数据目录中所有 Assets 的导入,从而解决了必须手动将它们添加到项目中的问题。其中一些 Assets 将通过默认的 ContentImporters(如声音和音乐,以及 xml)进行定向,而其他 Assets 将作为 byte[] 导入并手动加载,因为我们已经拥有我们想要的格式的 Assets 。对于这些 Assets ,如果我们可以在自定义 ContentImporters 中执行“byte[] -> 手动加载”就好了 - 离线 - 但对于我们尝试的第一个 - 纹理 - 它需要一个图形设备来创建原生Textue2D 结构,我们在 ContentImporter 框架中找不到。

有什么想法吗?指针?还是这是做所有事情的最佳方式?我想另一种选择是将所有 Assets 转换为默认纹理和网格处理器可以接受的格式,以及每个 Assets 的参数(所以我们有一个手工制作的 565 纹理,将其转换回 888 tga,然后通过默认纹理管道发送它,参数为“将其转换为 565”)

最佳答案

标题容器

这是他们在 4.0 中添加的这个新类,并且比 File 东西更不明确

只需转到 TitleContainer.OpenStream(path)

关于windows-phone-7 - 如何在 Windows Phone 7 中加载文件?使用 XNA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3058231/

相关文章:

c++ - 我们可以使用c来开发Windows Phone 7.5应用程序吗?

windows-phone-7 - 申请参加 Windows Phone 7 应用挑战赛后,我还可以使用免费的 APPA Market 帐户进行其他事件吗?

windows-phone-7 - 如何在 Windows Phone 上自定义定期任务?

windows-phone-7 - 如何在未锁定的 Windows Phone 中测试 .xap 文件?

c# - WP7 Json 序列化器不处理 "space"?

c# - Silverlight:字形宽度

android - google keep chrome 应用程序使用什么样的数据库/存储?

c# - 如何使用 CollectionViewSource 对 LongListSelector 进行排序

windows-phone-7 - window 电话 7 : How do I open the web browser?

windows-phone-7 - 每个页面上的进度条