25/11/07 23:47:34.19 lnTYGdBs.net
IME制御がOSの管理下でGodotEngineから制御しきれてないのが原因と仮定して
win32apiのkeybd_eventでVK_ESCAPEを下げ上げしてIME操作を取り消した所、問題の回避に成功したと思われ
ui_rightが押されっぱなしの挙動はなくなりました
ログはこんな感じ(IMEオン→1キー入力→取り消し操作の時間まで待機→右カーソル入力)
InputEventKey: keycode=8388607 (Unknown), mods=none, physical=false, location=unspecified, pressed=false, echo=false
InputEventKey: keycode=8388607 (Unknown), mods=none, physical=false, location=unspecified, pressed=true, echo=false
InputEventKey: keycode=4194321 (Right), mods=none, physical=false, location=unspecified, pressed=true, echo=false
InputEventKey: keycode=4194321 (Right), mods=none, physical=false, location=unspecified, pressed=false, echo=false
26:名前は開発中のものです。
25/11/08 08:56:20.17 ZjDMOKGY.net
小さなモックはサクッと作れるようになりたい
27:名前は開発中のものです。
25/11/08 09:57:55.85 0lkI1PxY.net
>>25
質問者です
ちょっと俺のスキル足りなくて理解し切れてないんだけど希望ありそうなのはありがたい
ありがとう
28:名前は開発中のものです。
25/11/08 10:19:28.84 DnZpcrSa.net
>>27
IMEの候補ウインドウが表示されている時に人がエスケープキーを押して取り消す操作を
Windowsに備わってるAPI呼び出し関数を使って再現する方法を取っています
Windowsの機能を呼ぶためのDLL群の事をWin32APIと呼び
今回はキーボードの入力イベントを再現するkeybd_event関数を利用しています
Win32APIはGDScriptよりもC#からの方が呼び出すのが容易なのでC#で機能を作りました
やってる事はありきたりな方法なのでブラウザのAIにでも聞けば教えてくれると思います
29:名前は開発中のものです。
25/11/08 10:26:53.09 DnZpcrSa.net
Godotのプロジェクト内でGDScriptとC#は同時に利用できるので
keybd_eventを呼び出す為だけの.csファイルを用意してGDScriptから呼び出しました
提示ソースのqueue_free()がkeybd_eventの呼び出し関数に置き代わりになります
問題の発生しないcance_ime()代替関数と言えるかもしれません
30:名前は開発中のものです。
25/11/09 06:23:31.32 tZtmJDi3.net
C#とGDscriptどちら使うもんなの
31:名前は開発中のものです。
25/11/09 14:15:38.48 yrrBSKKL.net
ワナビ2057の場合は、GDScript。
それ以外の人は、好きな方を使う。
以上、次の質問どうぞ。
Choosing Between C# and GDScript in Godot | Patrick T Coakley
URLリンク(patricktcoakley.com)
32:名前は開発中のものです。
25/11/10 19:32:24.87 A216r14H.net
godot用のvscode拡張で、高機能なやつなんだっけ
ピエロみたいなマークのやつ
33:名前は開発中のものです。
25/11/11 05:45:35.64 Yis2Hx0Z.net
コードって全て型つけしたほうがわかりやすくなるんやろ?
untyped decralationをエラーにしといたほうがいいのかい?
34:名前は開発中のものです。
25/11/13 13:19:49.42 S8ZzI1Dx.net
配列の型なんだけど、variant使うのがいいのかね?
intにすると空の[]すら入れられないみたい。
色々面倒やな