WP7 XNA游戏:如何适应不同手机分辨率?

2023-12-31

我创建了一款针对 800 x 480 分辨率的游戏,但对其适应其他 WP7 分辨率很感兴趣。另外,我听说游戏可以通过 Mono 和 ExEn 移植到 iPhone 和 Android,从而开放大量其他屏幕分辨率。

处理这个问题的正确方法是什么?我想让游戏足够智能,能够检测屏幕尺寸并更改资产,使其看起来尽可能接近原始版本并玩相同的游戏。

这是一款 2D 游戏,我认为理想的情况是为所有分辨率提供单独的图像,但为了面向未来,这是行不通的。我想过使用 800 x 480 的基线,在开始时检测大小,并更改所有实体的边界以进行缩放,然后简单地将纹理绘制到这些目标。这将使我能够正确进行碰撞检测并缩放纹理,但可能有更好的方法。

无论如何,我希望我已经清楚地解释了这个问题。如果没有,我会在评论进来后编辑问题。

我很欣赏你的意见。


为了让那些在 Windows Phone 可能支持多种分辨率时来到这里的人们受益(或者寻找这个答案来编写真正的多分辨率引擎),我就是这样做的。

我枚举/检查可用的分辨率,并为具有我已经知道的纵横比的分辨率设置正交投影。为此,我硬编码了一张我测试过的游戏的长宽比表以及每个长宽比的“参考”宽度/高度。然后,我查看当前请求的分辨率,找到其纵横比,并在我的表格中查找最接近的较低匹配的纵横比,并设置正交投影(居中 - 因此,如果高度匹配但宽度不匹配,反之亦然,则字母-装箱会自动发生)并相应地视口。

例如:我会为 qHD (960x540)、WXGA (1280x720) 和 FHD (1920x1080) 设置 1280x720 的正射投影,因为它们三个都具有相同的宽高比。

在宽高比为 1.5 的 SVGA 和 DVGA (960x640) 显示器上,我会设置 SVGA 800x600 分辨率,这样一切看起来都不错。

上述方法可确保,如果您根据主要目标设备使用的宽高比设计资源,它们不会出现任何挤压。注意这个方法是NOT用于确定您资产的实际分辨率。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WP7 XNA游戏:如何适应不同手机分辨率? 的相关文章

  • 应用程序在尝试绑定隔离存储映像时崩溃

    在我的应用程序中 我使用下面提到的辅助方法将我的独立存储图像绑定到图像控件 我从链接 获得了这个辅助方法将存储在独立存储中的图像绑定到 Windows Phone 中的图像控件 https stackoverflow com questio
  • 为 Windows Phone 7 创建自定义 InputScope

    在哪里可以找到创建自定义 InputScope 的教程 我想创建一个自定义键盘 在屏幕键盘上仅显示数字 1 9 无符号 您无法创建自定义输入范围 以下是支持的范围输入范围名称值枚举 http msdn microsoft com en us
  • 我怎样才能像 HTC 'Stocks' 应用程序一样绘制漂亮的图表

    我用我的 HTC Mozart 下载了一个名为 Stocks 的应用程序 它主要管理股票 纳斯达克等 图表 图形看起来非常漂亮 我想知道如何做类似的事情 这是图表的图片 我看到 3 种颜色 曲线上方 背景 曲线本身 低于曲线 有没有免费 开
  • ListBox.ScrollIntoView() 似乎在 WP7 中不起作用

    每当将新项目添加到项目源时 我想将列表框滚动条移动到底部 但是ScrollIntoView 如果我向它传递对新添加项目的引用或其索引 它似乎不会执行任何操作 有没有人让它工作 或者对如何将列表框向下滚动到底部有任何其他建议 一些代码 voi
  • 以编程方式设置 Windows Phone 7 音量

    有没有办法以编程方式更改 Windows Phone 7 的声音设置 启用或禁用约会和所有其他通知的声音 还可以更改全局音量 即 铃声 没有 API 可以启用您提到的任务 您可以使用 XNA API 调整应用程序中声音的音量 但这只是当前可
  • 如何在 Windows Phone 7 Silverlight 应用程序中保存应用程序状态(变量值、按钮状态等)?

    如果用户按下后退按钮 或例如按下应用程序内的横幅 以在应用程序恢复时设置相同的设置 如何保存 Silverlight 应用程序的状态 Windows Phone 7中有没有类似注册表的东西 一些本地存储 我可以使用任何数据库来保存应用程序设
  • 禁用 WP7 浏览器控件中的滚动功能?

    是否可以在 Windows Phone 7 1 中禁用 Web 浏览器控件中的滚动 我已经看到很多关于它的问题 Windows Phone 7 0 Silverlight 但还没有答案 有任何想法吗 有一个博客文章在这里 http www
  • 如何创建一个快速加载的包装列表框?

    我制作了一个很好的小三项宽列表 用作开关 它看起来像这样 看起来不错吧 好吧 我在垂直滚动列表中大约有 130 个这样的图块 并且需要很长时间才能加载 根据性能分析工具 每个元素的渲染时间约为 18 毫秒 这给了我大约 2 3 秒的渲染时间
  • XNA - Mouse.Left Button 在更新中执行多次

    我正在制作井字游戏 我需要检查玩家是否正在点击他们已经点击过的方块 问题是第一次单击本身会显示错误 我的更新代码是 MouseState mouse Mouse GetState int x y int go 0 if mouse Left
  • 以编程方式启用 Wi-Fi 和蓝牙

    我需要编写 2 个按钮的处理程序来启用 禁用 wifi 和蓝牙 现在 我只能看到手机设置页面 我可以在其中手动更改启用 禁用 wifi 和蓝牙 那么 我怎样才能以编程方式做到这一点呢 Wi Fi 代码 ConnectionSettingsT
  • 使用 DataContractJsonSerializer WP7 将数组解析为 Json 字符串

    如何使用 DataContractJsonSerializer 解析 Json 字符串中的数组元素 语法是 array elementsProperies SomeLiteral 您不一定使用 DataContractJsonSeriali
  • 科尔多瓦本地存储不持久

    我正在使用Windows Phone 7 sdk 和phonegap 开发混合移动应用程序 使用 Cordova 本地存储我正在存储价值 如果我关闭应用程序并在 Windows Phone 模拟器中再次启动 则存储的值不会保留 任何在 Wi
  • 如何阻止 Windows Phone 7 锁定屏幕?

    The application could not be launched for debugging Ensure that the target device screen is unlocked and that the applic
  • Windows Phone - 运行时的 Storyboard TargetName

    如何在运行时为 DoubleAnimationUsingKeyFrames 设置 TargetName
  • Windows 窗体和 XNA - 绘制不是实时的

    我目前正在为 XNA 开发一个关卡编辑器 它是通过结合 Windows 窗体和 XNA 构建的 我正在使用 App Hub 上示例中的内容链接文本 http create msdn com en US education catalog s
  • 如果 html5

    我的应用程序隔离存储中有视频文件 并且想使用视频标签从 html 播放它 视频播放器运行 然后挂在 正在加载 有人可以设法使用 html5 视频标签和独立存储来播放视频吗 我的观察和测试 HTC HD7 Mango Beta 2 7 10
  • 如果我每次创建粒子时都强制重新初始化每个粒子,我是否应该使用粒子池

    我正在 XNA4 中创建一个粒子系统 但遇到了问题 我的第一个粒子系统是一个简单的粒子列表 其实例是在需要时创建的 但后来我读到了有关使用池的内容 我的第二个系统由一个充满粒子的池和一个发射器 控制器组成 我的池非常基本 这是代码 clas
  • ListBox 内的 WP7 TextBlock 不换行文本

    我有一个ListBox其中有StackPanels 拿着一个TextBlock and an Image水平方向 然后是ContentPresenter XAML 如下所示
  • 每页上的进度条

    我需要一个进度条来显示在大多数 如果不是所有 页面上 有没有一个好方法可以轻松让进度条出现在所有页面上 我有一个基页面类 我的所有页面都继承自该基页面类 我正在考虑将进度条动态添加到基类中的每个页面 但不知道如何做到这一点 我可以让基本页面
  • wp7 芒果中的 DataTemplateSelector

    我的应用程序中需要一个数据模板选择器 我发现这个博客 http www windowsphonegeek com articles Implementing Windows Phone 7 DataTemplateSelector and

随机推荐

  • 如何访问字典中的第一个和最后一个元素?

    在发帖之前 我已经经历过在Python中访问字典中的任意元素 https stackoverflow com questions 3097866 python access to first element in dictionary 但我
  • 为什么我不能使用 Set:union() 而不是 Set.union?

    我正在学习 Lua 我宁愿使用冒号 的方法 不幸的是 它并不是在所有地方都有效 看我的代码 Set local mt function Set new m local set setmetatable set mt for a b in p
  • 如何使用 RabbitMQ-JMS 恢复消费者,或指定自定义异常处理程序?

    我正在尝试使用 RabbitMQ JMS 客户端 并有意创建了一个长 onMessage 侦听器来查看客户端将如何恢复 Context context new InitialContext rabbitMQ RMQConnectionFac
  • 如果构造函数中引发异常会发生什么[重复]

    这个问题在这里已经有答案了 可能的重复 如果派生类析构函数抛出异常 基类析构函数会发生什么情况 https stackoverflow com questions 4508533 what happens to base class des
  • 创建注册表项(和子项)?

    我正在尝试创建一个注册表项和子项 以便为计算机上的所有用户启用 IE 11 企业模式 这就是我当前用于 VBScript 的内容 但它失败得很厉害 不添加密钥 我需要一些帮助来纠正这个问题 Const HKEY LOCAL MACHINE
  • 如何删除 Eclipse 项目相关文件而不从 Eclipse 中删除源

    每当我们想要使用现有源位置创建 Eclipse 项目时 我们都会选择现有源位置 根 作为项目位置 Eclipse 将在该源的根目录中创建所有项目特定文件 现在 由于某种原因 如果我们想使用不同的设置重新创建项目 我们应该如何告诉 Eclip
  • 启用 Lambda@Edge 后调试 CloudFront 的问题

    下列的本文 https aws amazon com blogs apn using amazon cloudfront with multi region amazon s3 origins 我正在尝试从 AWS 内的多个区域 同一域下
  • JAVA 面向方面编程 - 运行时方面编织和类加载时方面编织

    我看到一篇关于 AOP 的文章 其中提到切面编织可以在编译时 类加载时和运行时发生 在java中 我可以想象 甚至可以理解 方面编织在编译时实际上是如何发生的 代理类是在类编译期间生成的 在项目上启用了方面 生成的字节码将具有代理代码 但我
  • .Net Twitter OAuth 如何执行成功的 GET 请求

    按照本教程 我能够成功向 Twitter API 发布帖子并更新我的状态 但是我在处理成功的 GET 请求时遇到问题 我正在尝试修改 Post 请求来完成此操作 但在我的网络异常上不断收到 无效协议 错误 以下是将发布状态更新的工作代码 h
  • 原则 2. orm:schema-tool:update 。设置开始ID

    当我使用 bin doctrine orm fixtures load使用示例数据填充表首先迁移设置自动增量表 ID 如 1 2 3 4 5 等 第二次之后orm fixtures load迁移命令它会清除所有数据并设置 id 如 5 6
  • 如何在 Vim 中设置工作/当前目录?

    因此 当我想使用 e 命令创建新文件时 我不想指定整个路径 而只想指定新文件名 能做到吗 正如已经建议的 您可以使用 autochdir 它将更改为您打开的文件的目录 另一个选项是 cd mydirectory 这将更改目录 这可以是绝对路
  • ruby - 覆盖方法然后恢复

    我正在尝试找到一种方法 可以覆盖方法 执行某些操作 然后在不留下任何工件的情况下进行恢复 我已经使用 mocha 实现了这个 但显然这不会在生产应用程序中运行 请注意 新方法有参数 而旧方法没有 示例如下 require rubygems
  • CSS 宽度和高度属性的最大像素值是多少?

    最大有效值是多少pxCSS 的值width and height属性接受吗 我目前正在构建一个网络应用程序 它创建一个非常大的可缩放容器元素 我想知道实际的限制是什么 在元素上使用某些浏览器附带的 CSS 检查器10000000000px
  • 从 javascript 运行 bat 文件

    我正在尝试使用 javascript 运行 bat 文件 我尝试过使用 powershell 但它似乎无法正常工作 这是我尝试过的代码 var oShell WScript CreateObject WScript Shell oShell
  • 将浮动栏添加到滚动视图,就像 Facebook iOS 应用程序的时间线中一样

    我一直在尝试向我的测试项目添加不同的交互 但在添加 Facebook 的帖子状态栏之类的东西时遇到了麻烦 该状态栏位于时间线滚动视图上 并在向下滚动时随滚动视图一起滚动视图 但当您向上滚动时仍停留在导航栏下方 我一直在创建一个单独的 UIV
  • 如何在 docker 上运行电子应用程序

    我创建了一个托管电子应用程序的存储库的分支 该应用程序是一个聊天客户端 https github com Serkan devel BetterDiscordApp docker https github com Serkan devel
  • 是否可以克隆 ValueType?

    当已知对象是装箱 ValueType 时 是否可以克隆对象 而无需编写特定于类型的克隆代码 一些代码供参考 List
  • 如何从 statsmodels 中检索模型估计值?

    从这样的数据集 import pandas as pd import numpy as np import statsmodels api as sm A dataframe with two variables np random see
  • 如何使我的代码诊断语法节点操作对关闭的文件起作用?

    我正在使用 Roslyn 在 VS2015 预览版中 构建一组代码诊断 理想情况下 我希望它们产生的任何错误都充当持久错误 就像我违反了正常的语言规则一样 有很多选择 但我很难让其中任何一个都能持续工作 我已经成功实现了一个基本的语法节点操
  • WP7 XNA游戏:如何适应不同手机分辨率?

    我创建了一款针对 800 x 480 分辨率的游戏 但对其适应其他 WP7 分辨率很感兴趣 另外 我听说游戏可以通过 Mono 和 ExEn 移植到 iPhone 和 Android 从而开放大量其他屏幕分辨率 处理这个问题的正确方法是什么