問題タブ [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.
c# - XNA: メソッドが戻らないようにする
特定の条件が満たされるまで、DrawableGameComponent
クラスのメソッドが返されないようにしたい
このクラスがあるとします (クラスのスニペットDrawableGameComponent
):
このクラスはDraw()
メイン スレッドで描画 ( ) されています (この drawablegamecomponent は別のスレッドで実行されているため)。また、メイン スレッドには、順番に実行したいコマンドのリストがあります。Ahead
メソッドが に値を割り当てた直後に戻るとvelocity
、メソッドはほぼ同時に実行され、すべてのアニメーションが同時に実行されます。
では、特定の条件が満たされる前にコマンド ( など)Ahead
であるメソッドが返されないようにするにはどうすればよいと思いますか?TurnLeft
c# - XNA GameComponentの実装設定...?
私は最近XNAプールに飛び込み、C#のフレームワークのすべての詳細を学んでいます。私の調査で気づいたことの1つは、GameComponentsを実装するための広く受け入れられている「適切な」方法がないように思われることです。
このスレッドを(とりわけ)読んだ後、私はゲーム開発者の間で幅広い好みを発見しました。GameComponentsをまったく(または控えめに)使用しないという支持者もいれば、プレーヤー/敵ユニット、ミサイルなど、あらゆるものにGameComponentsを使用すると主張する人もいます。また、GameComponentアーキテクチャを、画面、レンダラー、シーンなどの中レベルから高レベルのエンティティ用に予約します。これらのエンティティは、よりきめ細かいゲームユニットを含み、駆動します。
結局のところ、フレームワークを実装する最善の方法を決定するのはゲーム開発者次第です。StackOverflowには、私が知る以上のことを忘れてしまった知識豊富な開発者がたくさんいるので、フレームワークを自分で使用してこの道をさらに進む前に、ここでのコンセンサスが何であるかを感じてみたいと思います。
誰かが自分の考えを取り入れることを気にしますか?前もって感謝します!
c# - スプライトがDrawableGameComponentsの上に描画されるように、SpriteBatch描画呼び出しの前にXNA DrawableGameComponentsを描画できますか?
いくつかの2Dスプライトがいくつかの3DDrawableGameComponentsを遮るようにしたいと思います。簡単な例として、一時停止メニュー(2Dスプライトとして実装)を一時停止した宇宙船(3Dゲームコンポーネントとして実装)の上に描画する必要があります。
XNAフレームワークは、Microsoft.Xna.Framework.GameおよびMicrosoft.Xna.Framework.DrawableGameComponentからクラスのDrawメソッドを自動的に呼び出します。
私の経験では、描画順序は次のとおりです。
- ゲームのDraw()メソッド
- DrawableGameComponent Draw()メソッド
私のspriteBatch描画メソッド呼び出しは、私のGameクラスの描画メソッドです。したがって、宇宙船は一時停止メニューの上部に描画されます(読み取り不能になります)。
私の問題を解決する最も簡単な方法は、drawメソッドが呼び出される順序を逆にすることだと思います。これは可能ですか?
DrawableGameComponentsのDrawOrderを異なる値(1000、1、0、-1、-1000)に設定しようとしましたが、GameとDrawableGameComponentのインスタンス間のXNAフレームワークのDraw()メソッドの呼び出し順序には影響しません。
SpriteBatch Drawメソッド呼び出しのlayerDepthを調べましたが、GameクラスとDrawableGameComponentクラスの間のXNAFrameworkの描画順序とは関係がないようです。レイヤーの深さは、SpriteBatchのスプライトにのみ影響するようです。
XNAを使用するのは初めてですが、フレームワークについて質問しすぎているのではないかと思います。この場合、3Dオブジェクトの上に2Dオブジェクトを配置するための通常の方法は何でしょうか。
どんな援助もいただければ幸いです。
c# - すべてのDrawableGameComponentsを単一のバッチで描画する
これはXNAの質問です...
ゲームにDrawableGameComponentsであるオブジェクトが多数あり、それらはすべて同じSpriteBatchを共有しています。ただし、各コンポーネントを描画するには、毎回SpriteBatch.Begin()と.End()を呼び出す必要があります。パフォーマンスを向上させるためにすべてを1つのバッチで描画したいのですが、.Draw()が自動的に呼び出されるため(DrawableGameComponentsであるため)、.Begin()と.End()がどこに移動できるかわかりません。
それらをDrawableGameComponentsとして保持しながら、それらすべてを単一の.Begin()呼び出しと.End()呼び出しの間に描画させるために私ができることを誰かが知っていますか?
編集:
このWebサイトから申し分なくhttp://www.progware.org/Blog/post/XNA-Game-Development-(Decentralize).aspxメインゲームループのbase.Draw()呼び出しで呼び出されていることがわかりました...だから私はそれをBeginメソッドとEndメソッドでラップすることができます
現在は機能していますが、この方法で描画するということは、このSpriteBatchの.End()が常に最後に呼ばれます。
これに対する解決策はありますか?
xna - XNA DrawableGameComponent のマウス入力の問題
ゲームボードが DrawableGameComponent として表される単純なボードゲームを開発しています。ボードの更新メソッドでは、マウス入力をチェックして、ボード上のどのフィールドがクリックされたかを判断しています。私が遭遇している問題は、マウス クリックが 5 ~ 6 回のクリックごとに 1 回しか登録されないことです。
マウス クリック コードは基本的なものです。
Game.cs では、自分のボードを Components コレクションに追加しているだけです。
ここで何が欠けているのか、誰か考えていますか?
編集:実際には、マウスだけではなく、キーボード入力も適切に機能しないため、方法がわかりませんが、おそらく 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 が何らかの形で入力を詰まらせているように見えます)、私は本当に知りたいです。
xna - XNA ゲームのさまざまなレベルで複数の SpriteBatches を使用すると、コンポーネントが非表示のままになります
現在、XNA ベースのスペース インベーダー ゲームに Screens ロジックを追加しようとしています。
私の問題は:
各画面は、GameComponentsManager として使用される CompositeDrawableComponent インスタンスの助けを借りて、独自のゲーム コンポーネント (SpaceShip、EnemyMatrix など) を管理します。
各ゲーム コンポーネントには、追加のゲーム コンポーネント (つまり、Bullet を保持する SpaceShip) が含まれているため、独自の GameComponentsManager インスタンスが含まれています。
各 GameComponentsManager には、そのすべてのコンポーネントの SpriteBatch が含まれています。つまり、PlayScreen はその SpaceShip に固有の SpriteBatch を使用し、各 SpaceShip はその弾丸に固有の SpriteBatch を使用します。
その結果、SpaceShip のコンポーネントは単に Screen のコンポーネントの背後 (私の場合は背景) に描画され、ユーザーには見えないままになります。
どうすればこれを解決できますか?
c# - XNA WP7 Mango: DrawableGameComponent を Microsoft.Xna.Framework.Game に動的に追加できますか?
DrawableGameComponent から継承したクラスは、Game1 の Initialize() フェーズでのみ Xna.Framework.Game に追加できるようです。それ以降、コンポーネントの Draw は呼び出されません。回避策はありますか?コンポーネントは実行時に動的に作成できます。描画するコンポーネントを追加する必要があります。ありがとう!
c# - 画面外にあるときに XNA コンポーネントを描画しないようにするにはどうすればよいですか?
XNAで2Dゲームを作っています。描画可能なゲーム コンポーネントを使用する場合、どちらがパフォーマンスに優れていますか?
1. コンポーネントが画面に表示されていない場合はコンポーネント リストから削除し、画面に表示されている場合は追加します。
2. オフスクリーンで描画関数を実行しない場合 (「起動」ブール フィールドと、描画関数内のすべてを if ステートメントで囲むことにより)
現在、方法 2 を使用していますが、問題なく動作します。コンポーネントの描画順序が変更されないのは便利です(それらを削除して再度追加すると変更され、それを管理するためのコードがさらに必要になります)実際、コンポーネントリストにない場合は更新されないことに気付きました画面上にあるかどうかを追跡するために何か他のものが必要になります..
また、私はプロファイラーを備えた豪華なバージョンのビジュアルスタジオを持っていないので、ここで人々が自分の経験からどう思うかを尋ねています.
c# - 別のクラスでモデルを描くことはできますか?
別のクラスでモデルを描画しようとしています。別のクラスでモデルを描画しようとしました。ただし、私のモデルは、私が作成したコードではまったくレンダリングされません。
ここにGame1 のコード: (注:これらのコードは Game1 に適しています)
ここに私の別のクラスのコードがあります: (注:これらのコードはうまく機能しないか、Game1 グラフィックでモデルをレンダリングできません)
OK、私のポイントは、別のクラスで 3D モデルを描画したいだけです,,
さて、これを解決するにはどうすればよいですか?
私はあなたが私を助けても構わないと願っています.