そりゃ作ってはくれるでしょ(作ってくれるとは言っていない)
そのあとが問題なんだよな
探検
【軽量】godot engine【無料】 part5
2025/11/05(水) 12:06:45.40ID:BBV6eM8H
17名前は開発中のものです。
2025/11/05(水) 13:16:51.05ID:hChDyjhf さわれないからな、、
2025/11/07(金) 01:44:01.02ID:NCON4E65
IMEの入力中(文字に下線ある状態)にそのTextEditを削除するとその次のキー入力が押下イベントだけ発火して解放イベントが来ない
っていう現象に見舞われてるけどこれどうにかなる?
apply_imeやcancel_ime、release_focusしても無駄でした
っていう現象に見舞われてるけどこれどうにかなる?
apply_imeやcancel_ime、release_focusしても無駄でした
2025/11/07(金) 02:27:51.26ID:lnTYGdBs
言っている意味が良く判らんかった
解放イベントはfocus_exitedと仮定すると
TextEdit(内のテキスト)を削除してもカレットはそこにあるのだから解放イベントは発生しないであってるんじゃないのかな?
解放イベントとはなんぞ?
解放イベントはfocus_exitedと仮定すると
TextEdit(内のテキスト)を削除してもカレットはそこにあるのだから解放イベントは発生しないであってるんじゃないのかな?
解放イベントとはなんぞ?
2025/11/07(金) 12:47:12.11ID:NCON4E65
すみませんもうちょっと詳細に書きます
例えば以下のスクリプトを適当なノードに貼り、その子にTextEditを持たせるとします
func _physics_process(_delta: float) -> void:
if Engine.get_physics_frames() == 500: #時間経過で$TextEditを削除
$TextEdit.queue_free()
func _input(event: InputEvent) -> void:
if event is InputEventKey: #キー入力を記録
print(event)
この状態で適当なキー(たとえば右矢印キー)を押して離すと下記のように出力されます
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
自分が解放イベントと呼んでいるのはpressed=falseなInputEventKeyの事です
TextEditに何かしら日本語を入力して確定せず待機し、TextEditがqueue_freeで削除されるまで待ちます
その後に右矢印キーを押して離すと下記のように出力されます
InputEventKey: keycode=4194321 (Right), mods=none, physical=false, location=unspecified, pressed=true, echo=false
見ての通りpressed=falseなInputEventKeyが出力されません、
同様にインプットマップの組み込みアクションであるui_rightなども入力され続ける状態になっています
次に何かしらキーを離した時は通常の挙動に戻ります
削除そのものが原因ではなく、コードによりIMEの確定待ち状態が解除されることが原因のようです
上記コードのqueue_freeをapply_imeやcancel_ime、release_focusに変更しても同じ現象が起こります
TextEditに限らずLineEditでも同じ現象が起こります
例えば以下のスクリプトを適当なノードに貼り、その子にTextEditを持たせるとします
func _physics_process(_delta: float) -> void:
if Engine.get_physics_frames() == 500: #時間経過で$TextEditを削除
$TextEdit.queue_free()
func _input(event: InputEvent) -> void:
if event is InputEventKey: #キー入力を記録
print(event)
この状態で適当なキー(たとえば右矢印キー)を押して離すと下記のように出力されます
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
自分が解放イベントと呼んでいるのはpressed=falseなInputEventKeyの事です
TextEditに何かしら日本語を入力して確定せず待機し、TextEditがqueue_freeで削除されるまで待ちます
その後に右矢印キーを押して離すと下記のように出力されます
InputEventKey: keycode=4194321 (Right), mods=none, physical=false, location=unspecified, pressed=true, echo=false
見ての通りpressed=falseなInputEventKeyが出力されません、
同様にインプットマップの組み込みアクションであるui_rightなども入力され続ける状態になっています
次に何かしらキーを離した時は通常の挙動に戻ります
削除そのものが原因ではなく、コードによりIMEの確定待ち状態が解除されることが原因のようです
上記コードのqueue_freeをapply_imeやcancel_ime、release_focusに変更しても同じ現象が起こります
TextEditに限らずLineEditでも同じ現象が起こります
2025/11/07(金) 12:52:58.37ID:NCON4E65
コードのインデント消えちゃったけど雰囲気で読み取ってください
修正待ちバグ案件な気もしてきた
修正待ちバグ案件な気もしてきた
2025/11/07(金) 14:02:09.22ID:lnTYGdBs
現象は確認できたけど対応策は判んないな
Linux環境では起きなかったのでWindows環境限定と思う
入力中のTextEditを削除する要件ってのが良く判らんがそこら辺から対策できるんじゃないのかね?
Linux環境では起きなかったのでWindows環境限定と思う
入力中のTextEditを削除する要件ってのが良く判らんがそこら辺から対策できるんじゃないのかね?
2025/11/07(金) 15:51:14.73ID:c4lPyYM9
はーおもしろいバグ見つけたね
これはチケット切りましょ、なんなら自分でプルリク送りましょ
これはチケット切りましょ、なんなら自分でプルリク送りましょ
2025/11/07(金) 22:41:42.71ID:NCON4E65
やっぱりキツいですかねー
やりたいのが制限時間尽きたら入力ダイアログ閉じるみたいなシンプルな動作なんだけどバグ回避するのも結構難しそう
バグ報告とかやったことないけどどうにか調べてやってみますわ……
やりたいのが制限時間尽きたら入力ダイアログ閉じるみたいなシンプルな動作なんだけどバグ回避するのも結構難しそう
バグ報告とかやったことないけどどうにか調べてやってみますわ……
2025/11/07(金) 23:47:34.19ID:lnTYGdBs
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
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名前は開発中のものです。
2025/11/08(土) 08:56:20.17ID:ZjDMOKGY 小さなモックはサクッと作れるようになりたい
2025/11/08(土) 09:57:55.85ID:0lkI1PxY
2025/11/08(土) 10:19:28.84ID:DnZpcrSa
>>27
IMEの候補ウインドウが表示されている時に人がエスケープキーを押して取り消す操作を
Windowsに備わってるAPI呼び出し関数を使って再現する方法を取っています
Windowsの機能を呼ぶためのDLL群の事をWin32APIと呼び
今回はキーボードの入力イベントを再現するkeybd_event関数を利用しています
Win32APIはGDScriptよりもC#からの方が呼び出すのが容易なのでC#で機能を作りました
やってる事はありきたりな方法なのでブラウザのAIにでも聞けば教えてくれると思います
IMEの候補ウインドウが表示されている時に人がエスケープキーを押して取り消す操作を
Windowsに備わってるAPI呼び出し関数を使って再現する方法を取っています
Windowsの機能を呼ぶためのDLL群の事をWin32APIと呼び
今回はキーボードの入力イベントを再現するkeybd_event関数を利用しています
Win32APIはGDScriptよりもC#からの方が呼び出すのが容易なのでC#で機能を作りました
やってる事はありきたりな方法なのでブラウザのAIにでも聞けば教えてくれると思います
2025/11/08(土) 10:26:53.09ID:DnZpcrSa
Godotのプロジェクト内でGDScriptとC#は同時に利用できるので
keybd_eventを呼び出す為だけの.csファイルを用意してGDScriptから呼び出しました
提示ソースのqueue_free()がkeybd_eventの呼び出し関数に置き代わりになります
問題の発生しないcance_ime()代替関数と言えるかもしれません
keybd_eventを呼び出す為だけの.csファイルを用意してGDScriptから呼び出しました
提示ソースのqueue_free()がkeybd_eventの呼び出し関数に置き代わりになります
問題の発生しないcance_ime()代替関数と言えるかもしれません
30名前は開発中のものです。
2025/11/09(日) 06:23:31.32ID:tZtmJDi3 C#とGDscriptどちら使うもんなの
2025/11/09(日) 14:15:38.48ID:yrrBSKKL
ワナビ2057の場合は、GDScript。
それ以外の人は、好きな方を使う。
以上、次の質問どうぞ。
Choosing Between C# and GDScript in Godot | Patrick T Coakley
ttps://patricktcoakley.com/blog/choosing-between-csharp-and-gdscript-in-godot/
それ以外の人は、好きな方を使う。
以上、次の質問どうぞ。
Choosing Between C# and GDScript in Godot | Patrick T Coakley
ttps://patricktcoakley.com/blog/choosing-between-csharp-and-gdscript-in-godot/
32名前は開発中のものです。
2025/11/10(月) 19:32:24.87ID:A216r14H godot用のvscode拡張で、高機能なやつなんだっけ
ピエロみたいなマークのやつ
ピエロみたいなマークのやつ
33名前は開発中のものです。
2025/11/11(火) 05:45:35.64ID:Yis2Hx0Z コードって全て型つけしたほうがわかりやすくなるんやろ?
untyped decralationをエラーにしといたほうがいいのかい?
untyped decralationをエラーにしといたほうがいいのかい?
34名前は開発中のものです。
2025/11/13(木) 13:19:49.42ID:S8ZzI1Dx 配列の型なんだけど、variant使うのがいいのかね?
intにすると空の[]すら入れられないみたい。
色々面倒やな
intにすると空の[]すら入れられないみたい。
色々面倒やな
2025/11/18(火) 11:30:55.19ID:dZjxXGEg
var a :Array[int] = [1, 2, 3]
print(a.size()) # Prints 3
a = []
print(a.size()) # Prints 0
print(a.size()) # Prints 3
a = []
print(a.size()) # Prints 0
36名前は開発中のものです。
2025/11/19(水) 13:30:03.17ID:v8zT46RE ArrayをArray[int]に簡単に変換する方法あったりするの?
for文で回して配列作り直すしかないんかな
as Array[int]はダメっぽいし
for文で回して配列作り直すしかないんかな
as Array[int]はダメっぽいし
37名前は開発中のものです。
2025/11/19(水) 13:30:04.56ID:v8zT46RE ArrayをArray[int]に簡単に変換する方法あったりするの?
for文で回して配列作り直すしかないんかな
as Array[int]はダメっぽいし
for文で回して配列作り直すしかないんかな
as Array[int]はダメっぽいし
2025/11/19(水) 14:15:48.17ID:kHRrMfdl
>intにすると空の[]すら入れられないみたい。
は嘘と提示してるだけなので違う話を持ち出されても困る
らしいではなく自分で試せ
>ArrayをArray[int]に簡単に変換する方法あったりするの?
型指定をするのは自分で型を管理できるからなので不用意な変換が発生する設計をしない
変換そのものはできる、自分で調べろ
は嘘と提示してるだけなので違う話を持ち出されても困る
らしいではなく自分で試せ
>ArrayをArray[int]に簡単に変換する方法あったりするの?
型指定をするのは自分で型を管理できるからなので不用意な変換が発生する設計をしない
変換そのものはできる、自分で調べろ
2025/11/19(水) 14:15:55.11ID:RIPT4Gyy
2025/11/19(水) 14:27:58.58ID:kHRrMfdl
回答書かれてしまったから書くがコンストラクタでもできる
var array: Array = [1,2,3]
var int_array: Array[int] = Array(array, TYPE_INT, "", null) # Array[int]
print(int_array.size()) # Prints 3
マニュアル読め
docs.godotengine.org/ja/4.x/classes/class_array.html
var array: Array = [1,2,3]
var int_array: Array[int] = Array(array, TYPE_INT, "", null) # Array[int]
print(int_array.size()) # Prints 3
マニュアル読め
docs.godotengine.org/ja/4.x/classes/class_array.html
41名前は開発中のものです。
2025/11/19(水) 21:23:07.52ID:v8zT46RE サンクス
jsonで整数の配列を読み込むと値がfloatになるっぽいんだけどこの状態の配列に対してarr.erase(0)とかで整数の値消そうとしても消せないみたい
だから型をintにする必要があった
jsonで整数の配列を読み込むと値がfloatになるっぽいんだけどこの状態の配列に対してarr.erase(0)とかで整数の値消そうとしても消せないみたい
だから型をintにする必要があった
2025/11/19(水) 22:06:24.00ID:kHRrMfdl
>floatになるっぽいんだけどこの状態の配列に対してarr.erase(0)とかで整数の値消そうとしても消せないみたい
実際に試してみたか?
var float_array: Array[float] = [0.0, 1.1, 2.2]
float_array.erase(0)
print(float_array.size()) # Prints 2
>jsonで整数の配列を読み込むと値がfloatになるっぽい
ここから何かが違ってるのだろ
実際に試してみたか?
var float_array: Array[float] = [0.0, 1.1, 2.2]
float_array.erase(0)
print(float_array.size()) # Prints 2
>jsonで整数の配列を読み込むと値がfloatになるっぽい
ここから何かが違ってるのだろ
2025/11/19(水) 22:21:51.78ID:rYGTSCKR
JSONには数値型はあるが、整数型はない
だからJSONを読み込んで整数の配列を期待するのは間違い
だからJSONを読み込んで整数の配列を期待するのは間違い
44名前は開発中のものです。
2025/11/19(水) 22:42:47.34ID:Wy3zyUux ColorRectノードにアウトライン設定する方法インスペクタ上にある?
2025/11/19(水) 22:48:05.89ID:kHRrMfdl
マニュアル読め
docs.godotengine.org/ja/4.x/classes/class_colorrect.html
docs.godotengine.org/ja/4.x/classes/class_colorrect.html
46名前は開発中のものです。
2025/11/20(木) 00:06:13.55ID:6YXRCu32 所持アイテムのIDをintで管理して配列に突っ込んでJSONで保存、読み込みとかありそうだけどダメなのか
2025/11/20(木) 00:20:06.45ID:w9GKd/Ei
JSON だと数値が整数である保証がないので、全部 float として扱うのは自然ではある
48名前は開発中のものです。
2025/11/20(木) 10:17:07.18ID:LMUawr+x2025/11/20(木) 10:44:32.94ID:DggAi5Vf
普通に方法はあるんだけど、お前に教えても意味がないからな
自力でたどり着いてくれ
そうすれば100年後には倉庫番も作れるようになると思うぞ
自力でたどり着いてくれ
そうすれば100年後には倉庫番も作れるようになると思うぞ
2025/11/20(木) 11:13:40.36ID:vmvD/6dA
>>37
ループで回しても簡単では
ループで回しても簡単では
2025/11/20(木) 11:31:51.52ID:arARfAiQ
コード書きたくないからTypeConverterクラスの様な物が欲しいって事だろ
例を上げてもこれができないあれができないと追加してくるから只の構ってちゃんかな
例を上げてもこれができないあれができないと追加してくるから只の構ってちゃんかな
52名前は開発中のものです。
2025/11/20(木) 12:07:22.97ID:mWfe6sRz これgodotヤバいか?
「Unity」と「Epic Games」が協業を発表。Unityで開発したゲームが『フォートナイト』上で公開できるようになり、Unreal Engineでは、Unityの強化されたコマースプラットフォームが利用可能に
https://news.denfaminicogamer.jp/news/2511192d
「Unity」と「Epic Games」が協業を発表。Unityで開発したゲームが『フォートナイト』上で公開できるようになり、Unreal Engineでは、Unityの強化されたコマースプラットフォームが利用可能に
https://news.denfaminicogamer.jp/news/2511192d
2025/11/20(木) 12:26:45.80ID:lNdF/DfM
その内容がUnityなりUEなり使う動機になる奴はgodot使ってないだろ
2025/11/20(木) 12:34:12.95ID:DggAi5Vf
そもそもGodotは商業的にみると競合ですらないからな
どっちかというとRobloxに引導を渡しに来た感じらしいぞ
どっちかというとRobloxに引導を渡しに来た感じらしいぞ
レスを投稿する
ニュース
- 【🐼🇨🇳】「高市総理VS中国」で日本からパンダはゼロに? 上野動物園「パンダ返還期限」まであと4カ月…★2 [BFU★]
- ネット殺到「高市総理の責任」「完全に高市リスク」「負けるな」中国が水産物輸入停止→流石に総理批判の声も「どう責任取る?」 ★5 [樽悶★]
- 【裁判】山上徹也被告の妹「この人は母のふりをした旧統一教会の信者だと思いました」「でも、母の形をしているから突き放せなかった」 [1ゲットロボ★]
- ネット殺到「高市総理の責任」「完全に高市リスク」「負けるな」中国が水産物輸入停止→流石に総理批判の声も「どう責任取る?」 ★6 [樽悶★]
- 【速報】 米大使声明 「日本を支えていく」「中国が威圧的手段に訴えるのは断ち難い悪癖」 [お断り★]
- 【7リメイク】『ドラゴンクエストVII Reimagined』では「プレイヤーの時間」を尊重したい…“100時間超”だった原作をテンポ良く現代化 [おっさん友の会★]
- もう高市政権で経済も外交も破局にならないと愚民ジャップは分からないよっていう加速主義おじさんいるでしょ [731544683]
- 小野田紀美大臣「悪いことをする外国人は日本にいない状況をつくる」 [856698234]
- 自民党 防衛費GDP比2%超へ協議開始 強い!強いぞ! [163661708]
- 外国人「日本の立ちんぼガールやばすぎるwwwwwwwww [977790669]
- 珍🏡珍
- PCデスクと布団を往復するだけの人生
