トップページ > 過去ログ > 記事閲覧
[GetHitKeyStateAll] in .NET
名前:synqark 日時: 2010/05/07 00:32

初めまして。 先日からDXライブラリを用いてゲーム開発を行わせていただいております、synqarkと申します。 早速ですが、1つ質問です。 GetHitKeyStateAll(ttp://homepage2.nifty.com/natupaji/DxLib/function/dxfunc_input.html#R5N28)の項目ですが、 この記事での引数は[char * (char[])]となっておりますが、 .NET用のライブラリでは、引数が[out byte]となっております。 この影響で、全てのキー情報を取得する事ができずに困っております。 サンプル等の挙動から察するに、 おそらくはout byte[]又はout char[]だと思われます。 現在は個別にCheckHitKey()を実行し代用しておりますが、この項目について検査を行っていただけたら幸いです。 (GetHitKeyStateAllを使う理由ですが、「キー押下時のフレームのみTRUEを返す」挙動を全てのキーに対して行うのに最も効率が良いと判断したためです。) どうぞよろしくお願いします。

Page: 1 |

申し訳ありません。自己解決しました。 ( No.1 )
名前:synqark(解決) 日時:2010/05/07 15:13

「ん?ポインタ?」とふと考えて気付きました。 unsafeを利用するのですね・・・。 このような形で目的の処理を達成することができました。 //////////////////////////////////////////////////////////////////// static byte[] keysA = new byte[256]; static byte[] keysB = new byte[256]; static bool swi = false; unsafe public static void Update() { byte* b = stackalloc byte[256]; DX.GetHitKeyStateAll(out *b); System.Runtime.InteropServices.Marshal.Copy(new IntPtr(b), swi ? keysA : keysB, 0, 256); swi = !swi; } //////////////////////////////////////////////////////////////////// 短時間で勝手に自己解決してしまい、申し訳ありません。 次回がありましたら、もう少しじっくり考えてから投稿することにいたします・・・。

Page: 1 |