【问题标题】:C# XNA Scale game based on screen size基于屏幕大小的 C# XNA Scale 游戏
【发布时间】:2013-05-23 16:09:14
【问题描述】:

我一直在尝试让我的游戏根据屏幕尺寸缩放每个精灵,我发现了这个site

然而,他们似乎使用了 XNA 3.1,所以在 spriteBatch.Begin 中他们使用了一些在 XNA 4.0 中不起作用的代码,例如 SpriteBlendMode.AlphaBlend。现在我找到了一个将 3.1 代码转换为 4.0 的网站,我已经做到了。但它说

“spriteBatch.Begin() 方法没有重载需要 3 个参数”

在draw方法中。

目前看起来是这样的:

spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SpriteScale);

它还想要什么?我可以在 SpriteScale 后面加上 null,null 吗?或者有没有更简单的方法来根据您的屏幕尺寸缩放游戏?请帮忙! :)

【问题讨论】:

  • XNA 4.0 有一个版本。 Scaling Sprites Based On Screen Size。我建议在 WindowsGL 项目中使用 MonoGame。
  • Omg 没有看到他们也有 4.0 xD 感谢 Romoku。现在这似乎效果好多了,但是当我按下 A 或 B 按钮时,游戏不会缩小,因此您可以在 800x600 中看到整个游戏,而只能看到游戏的一小部分。我不知道这是故意的还是我错过了什么。这是否也缩小了其他使用自己的缩放和绘制方法的类的对象?
  • 在 MSDN 文档的 cmets 中查看。看起来spriteBatch.Begin(); 应该是spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, null, null, null, null, SpriteScale);。看看这是否能解决您的问题。
  • 要回答您问题的第二部分,我认为这不会缩放自定义比例/绘图。您需要将全局比例传递给需要它的每个对象。
  • 我已经这样做了,但它仍然不起作用。你自己试过代码吗?

标签: c# xna scale xna-4.0 xna-3.0


【解决方案1】:

更改 BackBuffer 只会改变用户可以查看的区域数量。

考虑使用相机将您的 ViewPort 与您的绘图分开,这将允许精灵随屏幕大小缩放。

见:XNA 2D Camera Engine That Follows Sprite

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-10
    • 1970-01-01
    • 2013-11-21
    • 1970-01-01
    • 1970-01-01
    • 2015-12-17
    • 1970-01-01
    • 2011-11-16
    相关资源
    最近更新 更多