问题标签 [drawablegamecomponent]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
778 浏览

c# - XNA:防止方法返回

我希望DrawableGameComponent类中的方法在满足特定条件之前不返回

假设我有这个课程(来自DrawableGameComponent课程的片段):

这个类正在Draw()主线程中绘制()(因为这个drawablegamecomponent在单独的线程中执行),并且在主线程中我有一个我想要按顺序执行的命令列表......但是目前,因为Ahead方法在为 赋值后立即返回velocity,这些方法将几乎同时运行,而这反过来只是同时执行所有动画。

那么你认为我应该怎么做才能防止命令(等)的方法AheadTurnLeft满足特定条件之前返回?

0 投票
1 回答
584 浏览

c# - XNA GameComponent 实现首选项...?

我最近加入了 XNA 池,并且正在学习 C# 框架的所有细节。我在研究中注意到的一件事是,似乎没有被广泛接受的“正确”方式来实现 GameComponents。

在阅读了这个帖子(以及其他内容)之后,我发现游戏开发者之间存在广泛的偏好。我见过一些倡导者根本不使用 GameComponents(或只是很少使用),而另一些人则声称将它们用于所有事情,一直到玩家/敌人单位、导弹等。然后有些人采取了更温和的方法,并为中高级实体(例如屏幕、渲染器、场景等)保留 GameComponent 架构,这些实体又包含并驱动其更精细的游戏单元。

归根结底,由游戏开发者决定如何最好地实现框架。由于 StackOverflow 中挤满了精明的开发人员,他们忘记的比我所知道的还要多,所以我想先了解一下这里的共识是什么,然后再继续使用我自己使用的框架。

有人愿意插话他们的想法吗?提前致谢!

0 投票
1 回答
2249 浏览

c# - 是否可以在 SpriteBatch 绘制调用之前绘制 XNA DrawableGameComponents,以便在 DrawableGameComponents 之上绘制精灵?

我想要一些 2D 精灵来遮挡一些 3D DrawableGameComponents。举个简单的例子,暂停菜单(实现为 2D 精灵)应绘制在暂停的太空船(实现为 3D 游戏组件)的顶部。

XNA 框架自动调用 Microsoft.Xna.Framework.Game 和 Microsoft.Xna.Framework.DrawableGameComponent 类的 Draw 方法。

根据我的经验,我发现抽签顺序是:

  1. 游戏 Draw() 方法
  2. DrawableGameComponent Draw() 方法

我的 spriteBatch 绘制方法调用是我的 Game 类的绘制方法。因此,宇宙飞船被绘制在暂停菜单的顶部(使其不可读)。

在我看来,解决我的问题的最简单方法是颠倒调用 draw 方法的顺序。这可能吗?

我尝试将 DrawableGameComponents 的 DrawOrder 设置为不同的值(1000、1、0、-1、-1000),但它对 Game 和 DrawableGameComponent 实例之间的 XNA 框架 Draw() 方法调用顺序没有影响。

我查看了 SpriteBatch Draw 方法调用的 layerDepth,但它们似乎与 Game 和 DrawableGameComponent 类之间的 XNA Framework 绘制顺序无关。层深度似乎只影响 SpriteBatch 中的精灵。

我是使用 XNA 的新手,但我怀疑我对框架的要求太多了。如果是这种情况,实现将 2D 对象放置在 3D 对象之上的正常方法是什么?

任何援助将不胜感激。

0 投票
1 回答
621 浏览

c# - 一次性绘制所有 DrawableGameComponents

这是一个 XNA 问题...

我的游戏中有大量的 DrawableGameComponents 对象,它们都共享相同的 SpriteBatch。但是,我每次都必须调用 SpriteBatch.Begin() 和 .End() 来绘制每个组件。我想在一个批次中绘制所有内容以获得更好的性能,但我不知道 .Begin() 和 .End() 可以去哪里,因为 .Draw() 被自动调用(因为它们是 DrawableGameComponents)

有谁知道我可以做些什么来使它们都在单个 .Begin() 和 .End() 调用之间绘制,同时将它们保持为 DrawableGameComponents?

编辑:

好吧,从这个网站http://www.progware.org/Blog/post/XNA-Game-Development-(Decentralize).aspx我想它是在主游戏循环的 base.Draw() 调用中调用的......所以我可以用 Begin 和 End 方法包装它

现在可以了,但是这样做似乎意味着我想在不同的 SpriteBatch 中绘制的所有其他内容将始终绘制在此下方(因为它们是首先绘制的),因为此 SpriteBatch 的 .End() 始终是最后调用。

有什么解决办法吗?

0 投票
1 回答
671 浏览

xna - XNA 组件:所有游戏实体都应该扩展 GameComponent 还是 DrawableGameComponent?

我是一个新手,试图为一个简单的 2D 游戏构建一个基于原始组件的引擎,我想知道从“人类”到“板条箱”的所有东西是否应该扩展两者中的一个。我可以看到调用 Update 和 Draw 的好处,但是对于每个实体来说,这似乎是很多额外的包袱。任何想法将不胜感激。

另一方面,我还可以看到管理器类型的类,例如粒子引擎,当然应该扩展 DrawableGameComponent。

0 投票
1 回答
605 浏览

xna - XNA DrawableGameComponent鼠标输入问题

我正在开发一个简单的棋盘游戏,其中我的游戏板表示为 DrawableGameComponent。在板的更新方法中,我正在检查鼠标输入以确定板上的哪个字段被单击。我遇到的问题是鼠标点击每 5-6 次点击才会注册一次。

鼠标点击代码是基本的:

在 Game.cs 中,我只是将我的板添加到组件集合中。

有谁知道我在这里可能会错过什么?

编辑:实际上,不仅仅是鼠标,键盘输入也不能正常工作,所以我可能搞砸了 DrawableGameComponent 的实现,虽然我不知道怎么做。

EDIT2:在这里找到一些人:http://forums.create.msdn.com/forums/p/23752/128804.aspx 在这里:http : //forums.create.msdn.com/forums/t/71524.aspx有非常相似的问题。在调试失败后,我放弃了 DrawableGameComponent 并实现了手动 LoadContent/Update/Draw 调用,并将所有输入收集放入 game.cs。奇迹般有效。但是,如果有人有任何解释可能出了什么问题(看起来 DrawableGameComponent 以某种方式阻塞输入),我真的很想知道。

0 投票
1 回答
773 浏览

xna - 在 XNA 游戏的不同关卡中使用多个 SpriteBatch 导致组件保持不可见

我目前正在尝试将屏幕逻辑添加到基于 XNA 的太空入侵者游戏中。

我的问题是:

每个屏幕都在 CompositeDrawableComponent 实例的帮助下管理它自己的游戏组件(SpaceShip、EnemyMatrix 等),该实例用作 GameComponentsManager。

每个游戏组件都包含其自身的其他游戏组件(即 SpaceShip 持有子弹),因此包含它自己的 GameComponentsManager 实例。

每个 GameComponentsManager 都包含一个 SpriteBatch 用于它的所有组件,即 PlayScreen 使用一个独特的 SpriteBatch 用于它的 SpaceShips,每个 SpaceShip 使用一个独特的 SpriteBatch 用于它的子弹。

结果,SpaceShip 的组件被简单地绘制在屏幕组件的后面(在我的例子中,背景)并且对用户保持不可见。

我该如何解决这个问题?

0 投票
1 回答
212 浏览

c# - XNA WP7 Mango:DrawableGameComponent 可以动态添加到Microsoft.Xna.Framework.Game?

从 DrawableGameComponent 继承的类似乎只能在 Game1 的 Initialize() 阶段添加到 Xna.Framework.Game 中。之后,组件的 Draw 将不会被调用。有什么解决方法吗?组件可以在运行时动态创建。我需要添加要绘制的组件。谢谢!

0 投票
1 回答
1633 浏览

c# - 如何防止在离屏时绘制 XNA 组件?

我正在 XNA 中制作 2d 游戏。使用可绘制游戏组件时,哪一个更具有性能?

1.当一个组件不在屏幕上时,从组件列表中删除它,当它在屏幕上时添加它。

2.当它的屏幕外不运行它的绘图函数时(通过使用“唤醒”布尔字段和围绕绘图函数中所有内容的 if 语句)

我目前正在使用方法2,效果很好。它很方便,因为组件的draworder不会改变(如果我删除并重新添加它们会改变,我需要更多代码来管理它)事实上我只是想到如果它不在组件列表中它不会更新我需要其他东西来跟踪它是否在屏幕上..

另外我没有带有分析器的视觉工作室的精美版本,所以我只是在这里问人们从他们的经验中的想法

0 投票
1 回答
229 浏览

c# - 我可以在另一个班级画模型吗?

我正在尝试在另一个班级中绘制模型。我试图在另一个班级中绘制模型。但是,我的模型根本无法使用我所做的代码进行渲染。

这里是 Game1 的代码:(注意这些代码适用于 Game1)

这里是我的另一个类的代码:(注意这些代码不能正常工作或模型无法在 Game1 图形上渲染)

好的,我的观点只是想在另一个类中绘制 3D 模型,,

好吧,我该怎么做才能解决这个问题?

我希望你不介意帮助我,你能理解我的意思..