[過去ログ] 【軽量】godot engine - part2 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
827(1): 名前は開発中のものです。 [] 2024/02/01(木) 13:03:53.68 ID:RbvII5uE(1/2) AAS
状況が判らないなエラーコード書いたらハイライト表示されてフリーズはしないが
828: 名前は開発中のものです。 [] 2024/02/01(木) 15:11:31.28 ID:d1tWUBD1(2/3) AAS
親ノードのスクリプトから子ノードを取得して、子ノード(rigidbody2d)のメソッドを使いたいのですが、この場合はオートコンプリートは出ないものですか?(apply_impulse)
子ノードにスクリプトつけて、そこからなら効くんですが
>>827
プレイ画面のことでした
エディターのエラーを見て実行しなければいいだけなんですけどもね
829(1): 名前は開発中のものです。 [] 2024/02/01(木) 15:57:12.68 ID:RbvII5uE(2/2) AAS
ノードをget_nodeで取得していると仮定するとこうかな
var node = get_node(path) as RigidBody2D
エラーがあっても可能な限り止まらないで動作させるポリシーらしいので
動かす動かさないは利用者に委ねられるのでしょう
830(1): 名前は開発中のものです。 [sage] 2024/02/01(木) 19:13:23.54 ID:wFSVR3t/(1) AAS
みんなgodotでシコシコどんなゲーム作ってるん?
ちなみに俺は何も作ってない
831: 名前は開発中のものです。 [] 2024/02/01(木) 19:51:19.77 ID:d1tWUBD1(3/3) AAS
>>829
その書き方でいけました
しかし、readyの中だと出るのにprocessの中だとでません
これって正常な仕様なんでしょうか?
832: 名前は開発中のものです。 [sage] 2024/02/01(木) 20:58:13.75 ID:2YEqIkXl(1) AAS
var a : RigidBody2D
こうじゃないの
ダックタイピングしないときは型は書いた方がいい、可読性が全然違う
833(1): 名前は開発中のものです。 [] 2024/02/01(木) 21:13:34.80 ID:Fw0MlK/N(1) AAS
短くしたかったので一行に纏めたのが良くなかった
宣言と初期設定と使用が分かれるならこんな感じ
_readyの中で型指定しても_processからは見えないから上位で型指定する
var node:RigidBody2D
func _ready()
node = get_node(path)
func _process(_delta):
node.apply_impulse(impuls)
834(1): 名前は開発中のものです。 [] 2024/02/01(木) 22:23:33.00 ID:9xF8Tfdc(1) AAS
>>830
寒いからやってない
ローグライクゲームのダッシュって実装がめんどくさいな
835: 名前は開発中のものです。 [sage] 2024/02/02(金) 00:02:58.39 ID:csXE6Gch(1/2) AAS
自分はreadyの中でよそのシーンをインスタンス化しても何故かシーンツリーに登録されないから
だんだんready使わなくなったなあ
readyは全ノード読み込み済みの最初のアップデートと云うけれど、なんか挙動が掴み切れないというか
836(1): 名前は開発中のものです。 [] 2024/02/02(金) 01:00:55.38 ID:1cSrS8bV(1/13) AAS
多分ノードツリーを変更する場合はcall_deferredを挟むのと良いのではないかな?知らんけど
837: 名前は開発中のものです。 [sage] 2024/02/02(金) 01:57:44.07 ID:csXE6Gch(2/2) AAS
>>836
こんな感じに書き換えたら行けましたぞ
ありがとう!
func _ready():
node = node_scene.instaniate()
get_tree().root.call_deferred("add_child, node)
ちなみにルートにぶら下げないで、単に
func _ready():
node = node_scene.instaniate()
add_child(node)
って書いても無事にインスタンス化された
ルートの準備okなタイミングがスクリプトより遅いとかそんな感じなのかな
838: 名前は開発中のものです。 [] 2024/02/02(金) 02:19:14.30 ID:1cSrS8bV(2/13) AAS
root配下の全ノードを処理している最中にノードの変更があった場合にどうするのが正しいのか?
ノード変更のタイミングによってノードがあったりなかったりすると不安定な挙動になる
なので確実に_readyや_process等のノード処理の完了後に動作させる為にcall_deferredを使う
add_child(node)で動くのはたまたまな可能性があるのでcall_deferredお勧め
839: 名前は開発中のものです。 [] 2024/02/02(金) 02:27:59.11 ID:1cSrS8bV(3/13) AAS
ソースを見てないので推測だが一般的にツリーノードは再帰処理で回しているはず
root直下のノード群は最初に取得済となって後から追加しても無視されると思われる
840(1): 名前は開発中のものです。 [] 2024/02/02(金) 05:57:16.86 ID:KtCPrk0G(1/6) AAS
>>833
ありがとう
自動型つけってこういうデメリット?があるんですね。自動で取得したノードの型まで取ってくれるわけではないのはなぜなんでしょうか。
あと、型つけ忘れたりありますが、gdscriptで型付け強制出来ますかね
841: 名前は開発中のものです。 [sage] 2024/02/02(金) 11:21:24.43 ID:HJWQqSOJ(1) AAS
>>834
ダッシュって次の曲がり角までスキップ(早回し?)するアレ?
ローグライクって周りのマス参照したりターン制御したりダンジョン自動生成したり複雑だよな
俺も作ってみるか
842(2): 名前は開発中のものです。 [] 2024/02/02(金) 13:26:01.70 ID:1cSrS8bV(4/13) AAS
>>840
ノードの型は実行時に取得するまで判らないので編集時はコードから判断される
型指定は宣言時に自分で行う
宣言時に初期設定も終わらせるなら
var rigidbody := get_node(path) as RigidBody2D
で宣言時の型指定を省略できる
付け忘れ対策はlintの様な外部ツールを使うしかないと思う
便利機能安全機構が増えるほどプログラムサイズは大きくなり処理は重くなる
GodotEngineは軽量な点が魅力なので標準でなくて構わないと自分は思う
843(1): 名前は開発中のものです。 [sage] 2024/02/02(金) 13:56:07.61 ID:SAYqJfSZ(1/2) AAS
>>842
調べたらプロジェクト設定 debug/gdscript/warnings/untyped_declaration を errorに設定するとエラーになるっぽい
使うならエディタ設定の型ヒントをオンにしたほうが良さそう
他にも使えそうな警告がいっぱいあった
844: 名前は開発中のものです。 [] 2024/02/02(金) 14:04:57.68 ID:1cSrS8bV(5/13) AAS
エディタの設定だと思ってプロジェクトの方見てなかったありがとう
845: 名前は開発中のものです。 [] 2024/02/02(金) 14:30:28.27 ID:KtCPrk0G(2/6) AAS
>>842
明治してやらないと駄目なんですね そう受け入れます
untyped decralationを設定したらそうなりました
ありがとう(*´ω`*)
unityと併用すること考えたら型付けしといたほうがいいですね
846(1): 名前は開発中のものです。 [] 2024/02/02(金) 14:41:20.81 ID:KtCPrk0G(3/6) AAS
スクリプトのデフォルトコードって型付けされたものになるもんですか?
自分の環境ではならないです
847: 名前は開発中のものです。 [sage] 2024/02/02(金) 14:51:05.77 ID:bD7U8OGn(1/2) AAS
ローグライクみたいなコテコテの2DRPGならjs使えるツクールの方が向いてるんじゃないの
作るなとは言わんけどシステム的に要求が多すぎて挫折しがち
848(1): 名前は開発中のものです。 [] 2024/02/02(金) 15:21:56.69 ID:1cSrS8bV(6/13) AAS
試しに今触ってるプロジェクト設定のuntyped_declarationを変更してみたが後から変更だと修正キツイ
他のIgnoreになってる設定を有効にすると更にキツイ
自分が使うなら開発開始時にuntyped_declarationを有効にするまでかな
>>846
デフォルトコードの意味が解らんのでエスパーするが変数宣言は以下の様な書き方ができる
var a #Variant型になる
var a = 0 #Variant型になる
var a:int = 0 #int型になる
var a: = 0 #設定値の型が適用されるつまりint型になる
849: 名前は開発中のものです。 [sage] 2024/02/02(金) 15:29:23.51 ID:bD7U8OGn(2/2) AAS
型付けもライフサイクルもドキュメント見りゃ大体丁寧に書いてあるけど皆そんなドキュメント見ないのかな
850: 名前は開発中のものです。 [sage] 2024/02/02(金) 15:36:21.15 ID:zgD08SYH(1/2) AAS
他の言語触った事ない(GDが初めて)ならドキュメントの見方読み方もよくわかんないんじゃない
851: 名前は開発中のものです。 [] 2024/02/02(金) 15:42:57.64 ID:1cSrS8bV(7/13) AAS
自分で調べられる人は質問しないから質問が多く見えるのだと思う
上下前次1-新書関写板覧索設栞歴
あと 151 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.021s