Tag: xna

XNA游戏,全屏动画/video播放

我有一个XNA游戏(它是老虎机)。 我有一些非常酷的动画,我的艺术家为我制作的或多或少1600×1000和超过50帧。 到目前为止,对于所有的动画,我一直在使用精灵表。 (所有帧都在一个图像文件中,当渲染时,它选择要显示的图像部分)。 问题是您只能加载一定大小的图像。 2kx2k或4kx4k,具体取决于您的显卡。 显然,将每个帧放入一个文件对于这个大型动画来说是不可能的。 你能单独加载每个图像并按顺序显示它们吗? (在我发现不是你应该怎么做之前,这就是我以前为较小的动画所做的事情) 我的问题: 如果有什么是播放这些大型动画的好方法怎么办? 有一个spritesheet而不是像Texture2D一样单独加载框架有什么好处? 是否有(免费)方式在XNA中播放全屏video?

XNA窗口resize调用LoadContent

无论何时我将XNA窗口调整到尽可能小的分辨率(0像素高),程序再次开始调用LoadContent,这会导致我的应用程序崩溃(因为我只想让它加载一次内容)。 我能做些什么,是否可以阻止用户过多地调整窗口大小(例如Java中的setMinimumSize)。 还是有其他解决方案吗? 谢谢,

得到一个没有很多if语句的类

我有一定数量的类inheritance自抽象类: abstract public class baseClass { //logics } public class child1 : baseClass { } public class child2 : baseClass { } 现在我有一些管理类,必须创建这些类中的一个,具体取决于枚举,它将具有相同名称的值,如下所示: public enum ClassType { child1, child2 } public class Manager { private List _workers; public void Initialize(ClassType type) { //what logics to put here? (resulting in correctChild) _workers.Add(correctChild); } } 我在考虑使用typeof,但不知道如何实现它。 注意:在这个例子中它是2个类,但在实际情况下,它是任意数量的类。

C#XNA 2D轨迹效果优化

目前,作为我游戏中的一种线索效果,我每5帧就有一个精灵的半透明纹理副本被添加到一个List 的路径中。 这些轨迹的alpha值每帧递减,绘制函数遍历列表并绘制每个纹理。 一旦它们达到0 alpha,它们就会从List 中删除。 结果是移动实体背后的一个很好的小尾迹效果。 问题是大约100多个实体,帧速率开始急剧下降。 所有的跟踪纹理来自同一个精灵表,所以我不认为它是批处理问题。 我描述了代码,并且在FPS下降峰值期间CPU强度较低然后它处于正常FPS,所以我认为这意味着它的GPU限制? 有没有办法更有效地实现这种效果? 下面是使用的通用代码: // fade alpha m_alpha -= (int)(gameTime.ElapsedGameTime.TotalMilliseconds / 10.0f); // draw if (m_alpha > 0) { // p is used to alter RGB of the trails color (m_tint) depending on alpha value float p = (float)m_alpha/255.0f; Color blend = new Color((int)(m_tint.R*p), (int)(m_tint.G*p), (int)(m_tint.B*p), m_alpha); […]

XNA游戏不会在“拖动”窗口,任何事件处理程序时更新?

我是XNA和C#的新手,我已经到了我的XNA项目,我需要事件处理程序来预测游戏何时失去焦点,以便我可以在再次获得焦点后同步音乐和视觉效果。 但是我遇到了一个问题; 被拖动时游戏不会“更新”,但我似乎无法为此找到合适的事件监听器。 我试过了: System.Windows.Forms.Control.FromHandle(Window.Handle).Move += new EventHandler(DeactivateGame); 移动窗口时,这个叫做“DeactivateGame”很多次。 但即使它工作,尽管它不止一次调用该函数,我看不到一个事件处理程序,当窗口句柄被释放时调用一个函数,以便通过调用“ActivateGame”再次恢复游戏 旁注(如果有帮助的话); this.Activated += new EventHandler(NotifyActivated); this.Deactivated += new EventHandler(NotifyDeactivated); 这些事件处理程序在最小化窗口或将焦点放在除游戏窗口之外的其他内容时工作正常,但它不会注册被拖动的窗口。 对于习惯编程的人来说可能很明显,但我只是想确保我已经提供了足够的信息 编辑:我想要添加的事件作为事件处理程序的结果是一个DateTime / TimeSpan,当窗口失焦或拖动时调用它。 当丢弃或再次聚焦时,这将比较当前时间与窗口失去焦点时设置的时间,以计算两者之间的丢失时间。

XNA:当前顶点声明不包括当前顶点着色器所需的所有元素。 Normal0缺失

嘿,我有点麻烦。 我已经和xna合作了一段时间,但我对3D完全不熟悉。 我在msdn网站上的winformsgraphicsdevice示例中逐字跟踪代码。 它有一个控件,可以将原始三角形绘制到屏幕上。 很简单,但我在这一行得到一个例外: GraphicsDevice.DrawUserPrimitives(PrimitiveType.TriangleList, vertices, 0, 1); 哪个说: “The current vertex declaration does not include all the elements required by the current vertex shader. Normal0 is missing.” 我假设它与我的VertexPositionColor变量vertices 。 那段代码在这里: vertices = new VertexPositionColor[3]; vertices[0] = new VertexPositionColor(new Vector3(-1, -1, 0), Color.Black); vertices[1] = new VertexPositionColor(new Vector3( 1, -1, 0), Color.Black); vertices[2] = […]

将XNA Color对象转换为字符串

我知道如何将字符串转换为XNA Color对象 ,但如何将Color.Blue类的C# Color对象转换为其字符串表示forms(例如“Blue”)。

极低的FPS,我应该使用什么样的分析应用程序来查找性能问题?

我正在创建一个XNA游戏并获得意想不到的结果,极低的FPS(约2-12 fps)。 我应该使用什么程序来测试性能并找出降低速度的程序?

在紫色屏幕中更改RenderTarget结果?

我试图在运行时更改RenderTargets,因此我可以在运行时绘制一些元素,操纵它们,然后最终将纹理绘制到屏幕上。 问题是,如果我在运行时更改RenderTarget,屏幕会变为紫色。 这是我在Draw中得到的代码: RenderTarget2D tempTarget = new RenderTarget2D(GraphicsDevice, 128, 128, 1, GraphicsDevice.DisplayMode.Format, GraphicsDevice.PresentationParameters.MultiSampleType, GraphicsDevice.PresentationParameters.MultiSampleQuality, RenderTargetUsage.PreserveContents); GraphicsDevice.SetRenderTarget(0, tempTarget); GraphicsDevice.Clear(ClearOptions.Target, Color.SpringGreen, 0, 0); GraphicsDevice.SetRenderTarget(0, null); 如果我在运行时创建RenderTarget似乎并不重要(我确实需要在运行时创建内存中的纹理并使用SpriteBatch绘制它们),这会导致完全紫色的屏幕。 我该怎么做才能解决这个问题?

MonoGame和Microsoft.XNA.Framework名称空间之间的模糊引用

MonoGame(一个基本上将XNA引入Windows Phone 8的框架)具有以Microsoft.Xna.Framework为前缀的所有名称空间。我相信最小化将XNA应用程序移植到MonoGame时所需的代码更改量。 我的问题是,我希望访问Microphone类,因为尚未在MonoGame中创建,我必须在官方的Microsoft XNA类中使用它,这需要取消标准Microsoft.XNA.Framework.dll的显式强制删除Microsoft.XNA.Framework.dll我的MonoGame模板已设置的.csproj中的Microsoft.XNA.Framework.dll引用以避免冲突,这很好用,现在可以访问Microphone ,但是这样做我在Microsoft标准问题和Microsoft标准问题中存在的几个关键类之间产生了歧义。 MonoGame。 我收到的错误是: 含糊不清的参考: Microsoft.Xna.Framework.Color Microsoft.Xna.Framework.Color 这显然是因为除了标准的Microsoft发布的XNA库之外,我还引用了MonoGame.Framework.dll来命名命名空间,从而产生了这种模糊性。 但是,在所有情况下,我都希望访问MonoGame版本。 有什么想法我怎么能明确地告诉编译器使用Color和Vector2类的MonoGame版本而不是官方的Microsoft版本? using Color = Microsoft.Xna.Framework任何尝试显然都不会起作用,因为它们在编译的dll中都被标记为相同!