問題タブ [spritebatch]
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 私の menuscreen クラスは、以前の spritebatch.begin による描画を受け入れません
私のゲーム状態管理システムには、現在のゲームに追加されたスクリーン マネージャーとメニュースクリーンがあります。画面マネージャーはスプライトバッチを開き、サブスクライブされたすべての画面の描画メソッドを呼び出しますが、最初のサブスクライブ画面で最初の SpriteBatch.Draw 呼び出しに到達すると、SpriteBatch.Begin を事前に呼び出す必要があるというエラーが表示されます。そうだった。
ScreenManager 描画コード:
そして私のMenuScreen描画コード:
最後に、ベース ゲームの初期化コードで、これらすべてのコンポーネントを作成します。
注: MainMenuScreen は、抽象クラスである MenuScreen から継承します。また、MenuScreen クラスには ScreenManager クラスからスプライトバッチが渡されるため、同じスプライトバッチである必要があります。
c# - C#XNA SpriteBatchはnullですか?
やあみんな私は本当にここでいくつかの助けが必要です私のspriteBatchはNullReference例外を返し続けますそして私は私が間違っていることを知りません!?(私はブリックブレーカーゲームを作成しています)そして、Game1.cs内でブリックが作成されると、それは正常に機能しますが、Wall.cs(ブリックのパターンを表示したい場所)に移動すると、ゲームがクラッシュして、 NullReference例外。これが私のコードです:
編集:これをwall.csに追加することで、古い問題を修正しました
しかし、現在、コリジョンボックスはまったく機能していません。
c# - XNA spriteBatch.Draw - スプライトのちらつき
XNAでスプライトアニメーションを書いています。これを行うには、spriteBatch.Draw メソッドを使用します。
問題は、それがほぼ機能することですが、アニメーションの終わり近くで一度点滅してアニメーションを続行することです。どうなり得るか?
c# - 2Darrays を使用して XNA でボード ゲーム Ludo を描画する
私は C# と XNA の初心者で、現在ボード ゲーム LUDO を作ろうとしています。私は以前にいくつかのJavaプログラミングを行ったことがあり、オブジェクト指向プログラミングと共通しています。現時点で私が立ち往生しているのは、「ボード」のスプライトを描画することです。
MS ペイントで自分で使用しているすべてのスプライトを作成しました。すべての異なるスプライト (26 の異なるスプライト) はすべて同じサイズの 45px X 45px です。私が考えていたのは、数値を含む 2Darray を作成することでした。これらの数値は、テクスチャ配列内の特定のスプライトを参照します。例: ここに、私が設定しているボードの種類へのリンクがあります: http://upload.wikimedia.org/wikipedia/commons/thumb/6/6c/Klassisk_ludo-spill.JPG/220px-Klassisk_ludo-spill.JPG
私の 2Darray のセットアップは次のとおりです。ボードの上部から開始し、左から右に進みます。だから、これは私が私の2Darrayを作った方法です:
私が言ったように、これらの数値は、別のテクスチャ配列の特定のスプライトに対応すると想定されています。どの番号がどのスプライトに対応するかの概要は次のとおりです。
現時点では、バックグラウンド クラスで次のようなコンテンツ マネージャーを作成しました。
そして、これが私の主な問題に出くわすところです。このようにコンテンツをロードする必要がありますか? もしそうなら、textureArray のテクスチャをどのように参照して、数値が 2DArray にあるはずのテクスチャと一致するようにすればよいでしょうか?
ボードは 15 X 15 スプライト (合計 225) であるため、すべてのスプライトを正しい位置に配置するネストされた for ループを作成することを考えていました。また、「public void Draw(SpriteBatch spriteBatch)」メソッドで foreach ステートメントを使用する必要がありますか?
誰かが私にいくつかの指針を教えてくれることを本当に願っています。
よろしくお願いします!
xna - XNA 4.0 で PrimitiveBatch と SpriteBatch を一緒に使用する
周りを見回しても、この質問と回答を得た人が見つからないので、ここに投稿します!
2Dカメラを使用しているときにxnaでprimitiveBatchとspriteBatchを一緒に使用する方法はありますか? PrimitiveBatch の spriteBatch で行われる投影を適用する方法はありますか?
c# - XNA の Draw() メソッドが for ループ内で機能しなくなる
これまでのところ、これは私の最初の XNA ゲームであり、これを学ぶのに本当に苦労しています。ここにあるマイクロソフトのチュートリアルに従っています:XNA Xbox Live Indie Games
時々、コードが壊れます。確かに、私は必要とは思わなかったいくつかのビットを削除し、1 つだけでなく 2 つの敵クラスを作成しましたが、調整によって大きな障害にぶつかったとは思いません.
メインの Game1.cs ファイルの Draw() メソッドには、使用可能な敵のリストを反復処理し、更新時にそれらを描画する for ループを含める必要がありました。ただし、コード行は正しくないというフラグが立てられ、その理由はまったくわかりません。チュートリアルに従ったところ、動作するように見えますが、動作しません。Draw() メソッド全体を次に示します。
動作しないのは for ループ内のコードです。それを修正する方法やより良いチュートリアルの提案はありますか?
android - Android で OpenGL ES 2.0 を使用したスプライト (2D) のぎくしゃくした動き
編集 2. logcat のスクリーンショットを追加。スプライトの数を 1 に減らしても、この断続的な「停止/開始」が発生します。スプライトが 1 つの場合、フレーム レートは 85 ~ 90 fps 前後になるため、これは私のコードではないと思います。私はそれが電話で何かだと推測しています.logcatによって多くのことがログに記録されているので、バックグラウンドで多くのことが実行されていると想定しています. 実行中にアプリを他のサービスより優先させる方法はありますか?
編集 1. 質問の最後にある編集の詳細を参照してください
約 290 のスプライトをレンダリングするスプライト テストを作成しました。
スプライトが 1 の場合の 1 秒あたりのフレーム数は約 80 で、288 の場合はまだ約 30 です。問題は、スプライトが時々停止して開始することです。これは明らかにフレーム レートではありません。これ?(明確にするために、それは遅くなるのではなく、しばらくの間滑らかな動きであり、その後、すべてが一瞬停止し、その後滑らかに戻ります)。
これは、画面上の 1 つのスプライトでも発生しますが、断続的かつ 5 秒ごとにのみ発生します。スプライトを追加すればするほど発生しますが、フレーム レートが 30 fps を下回ることはありません。スムーズな動き)、これが何であるかを理解しようとしています。
私のスプライトはカスタム クラスから作成されますが、作成される実際のオブジェクトは 3 つだけです (背景、画面上を移動するスプライト (滑らかさを測定できるようにするため)、および 288 個のスプライト (実際には再利用される同じオブジェクトです))。 ) 6 つのバッチでレンダリングされます。
助けてくれてありがとう。
ハードウェアは、Samsung Galaxy Ace 電話です。
編集OK、バッチルーチンで変更し、呼び出しごとに 24 のスプライトをレンダリングしています (14 呼び出し = 336 クワッド + スプライトの移動 + バックグラウンド = 338 クワッド)。約 47 FPS になっています。 GC とは別に、この「ぎくしゃくした」動きまたはフレームレートが下がりすぎていますか?
xna - XNA Spritebatch ポイント クランプ テクスチャ レンダー グリッチ
XNA では、PointClamp サンプラー状態を使用してテクスチャをレンダリングしています。各タイルをレンダリングするために、さまざまな 8 x 8 タイル イメージの水平方向に配置されたスプライトシートを使用するタイルマップがあります。また、カメラのスケーリングと移動に変換マトリックスを使用しています。私の問題は、スケール 1 ではタイルマップ スプライトが正しく描画されますが、スケールが大きくなると (2、3 など)、カメラを動かすたびにタイル イメージが 1 ピクセルずれるということです。このスクリーンショットで私が抱えている問題を見ることができます:
また、表示される小さな白い線はそこにあるとは想定されておらず、画像がこのようにずれて描画されている場合にのみ表示されます。このようにタイルが描かれないようにする方法を知っている人はいますか?
白い「ドット」は、スプライトシートの隣のタイルから来ているような気がします。スプライトシートのタイル画像間に 1 ピクセルのバッファを追加することもできますが、この問題が発生すると、タイル間に透明な線が表示される可能性があります。
c# - SpriteSortMode.Texture、時々描画順序が間違っている
私の XNA ゲームでは、spritesortmode.texture をかなり安価な方法で描画するため、多く使用しています。私の問題は、物事がほとんどの場合正しい方法で描画されることですが、時々間違っていることです (つまり、背景が前景の上に描画されます)。これは、デスクトップがフルスクリーンかどうか、または 2 番目のモニターはラップトップに接続されています。
これは、時々混同されるこれらのものがどこに描画されるかを示す私の描画ブロックの一部です。
ここでテクスチャをロードします.. (すべて同時にロードします)
spritesortmode.texture は、テクスチャが読み込まれる順序を使用して描画順序を決定することをいくつかの場所で読みましたが、これを使用して正しい順序を取得する方法が明示的に説明されたことはありません。これが実際にどのように機能するかを誰かが説明できれば、それは素晴らしいことです!