0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

「_setup_local_to_scene: Path to node is invalid」エラーが出るとき

Last updated at Posted at 2023-12-04

Godot v4.1.3

結論

エラー文に書いてあるノードが見つからず困っている。
godotのシーンファイルを直接みてこれが書いてあるアイテムを見つけ、再度設定し直せば正しく動くようになる。
これが起きた原因はGodotがシーンを切り分けたり統合する機能のバグ。

現象

image.png

原因と思われること

サブビューポートが望ましい順番で読み込まれていない。
シーン内ツリー構造や、取り込んだシーンなどが疑わしい。

状況①

image.png
こういうSubViewPortをテクスチャとして利用する構造にする
Viewportができてないと使う側で怒られるので使う側よりも上にViewportを配置している
このシーンをまた別のシーンの子として吊り下げる
image.png
すると上のエラーが出た。

右クリックから「ローカルにする」を選ぶとエラーは消える。
image.png
けどシーンの再利用性が使えないのは困る。

妥協案

image.png
上記「編集可能な子」にチェックをつけると下記のように黄色く表示される。
image.png
あくまで推測だが、サブビューポートはレンダリングに関係するので内部でも特別な扱いを受けているのではないだろうか。どういった形であれ予め読み込んでおくことでローカルに展開したのと同じ効果が期待できる。

余談

確実にバグなのでイシュー投げたいんですけど英語弱すぎてすでにこのイシューがあるのかどうかもわからないのでここに書いときます

状況②(再発した)

後日プロジェクトを開きそのまま再生したところ上と全く同じエラーが出た。
さらに謎の差分が出るようになった。
image.png
ちゃんと調べたところプロジェクトを開き直した直後は問題なし、"該当シーンを2Dモードで表示した後"に再生ボタンを押したときにこの差分が生成されるようだった。ただしこの条件を満たしても該当差分が出ない場合もあり、いまいちわからん。
この差分が生まれている場合は書いてあるとおりパスがなぜか勝手に改変されているのでサブビューポートを使った処理がうまく読み込まれない。
あとついでに問題が起きそうなシーンのプレビューが真っ黒になってるっぽかった。もしやここも内部的にサブビューポートを使ってて、それでなんか変な問題が起きてるとかじゃなかろうな。
image.png
さらにさらに、サブビューポートを読み込んでいるパーティクルでの指定もおかしくなっていた。
なぜか平文表示で、各ノードにあるアイコンがなぜかない表記になっている。
image.png
設定し直したらこう↓
image.png
ちなみにこれで設定し直してももとに戻るわけではない。
のだが、妥協案の項でやった「編集可能な子」のチェックを外すと直った。
結果オーライなのだが、なぜこのような現象が起きたのだろうか?

仮説

こんな変な状態に自らしたわけがない。
ということで状況①の操作のどこかでここが勝手にすり替わるのだと考えた。
特にシーンをファイルに切り分ける処理とかいかにもアヤしい。
今は正しく動く状態になっている。
image.png
image.png
このような構成になっている。
また、SubViewportはGPUParticles2Dからテクスチャとして参照されている。
ここに操作を加えてバグらせるのを目指す。

検証①

DamageDisplayを「ローカルにする」してみる。
image.png
バグりました。(SubViewport特有のアイコンが表示されていない)
実際動かしても例のエラーが出るしテクスチャは正しく表示されない。
私の直感鋭すぎか?
そしてこれを直せば直る。

検証②

逆に「ブランチをシーンとして保存」をする。
image.png
うおお、いきなりエラー出た
image.png
そして吊り下げられてて参照できるはずのExport変数が全部抜けた状態になってるな
(これは仕様かも)
image.png
そんで案の定SubViewportの参照はこわれている。
上で悩まされていたバグの状態と一致した。

まとめ

ということで、なんか致命的な問題というよりはシーン切り分け操作がうまくいかないことによるデータ不整合で直したら解決しそうっすね。
それはそうと上の妥協案で再起動前は正しく動いてたのが謎……

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?