【Godot4】Scene file x.tscn appears to be invalid/corrupt.をなんとかしたい
Godot4のScene file x.tscn appears to be invalid/corrupt.
をなんとかしたい!
概要
今回の記事では、Godot4のScene file x.tscn appears to be invalid/corrupt.
をなんとかする手順を掲載する。
これをなんとかしたい!
仕様書
環境
- Gogot 4.2.1
手順書
私の場合、特定のプロジェクトのみで発生したんだけども、原因は分からなかった。回避方法は分かったので備忘録として残しておく。
回避方法1:プロジェクトをリロードする
インターネットで調べると一般的にこのエラーはtscnファイルの中身が何かしらが原因で壊れていたり、参照がうまくいってなかったりすることで発生するらしい。
そういう場合は、プロジェクトをリロードすると直ったという声が多かった。
「Project」->「Reload Current Project」でプロジェクトをリロードできる。
私の場合は、この方法では直らず難儀した…。
回避方法2:preload
を使わず、load
を使う
他のプロジェクトでは同じ方法でエラーは発生しないんだけども、なぜか今のプロジェクトで発生した。
下記のようにPackedSceneを配列にpreload
で読み込んで、後にインスタンス化して使うことがあると思うんだけども
const nodes = [
preload("res://scenes/test1.tscn"),
preload("res://scenes/test2.tscn")
]
func _ready():
var test1 = nodes[0].instantiate()
print(test1.text)
var test2 = nodes[1].instantiate()
print(test2.text)
なぜかコードを実行するとprint(test2.text)
がnull
になり、そのプロジェクトではtest2.tscn
が開けなくなる。プロジェクト開き直して、test2.tscn
を開こうとするとScene file
test2.tscn appears to be invalid/corrupt.`。
preloadの部分を
const nodes = [
preload("res://scenes/test2.tscn"),
preload("res://scenes/test1.tscn")
]
のように交換しても、前述と同様にprint(test2.text)
がnull
になる。
なぜか配列の2番目以降の要素のシーンが読み込めない。意味がわからない。
インターネットで調べても同様の報告は見つからず、適当にいろいろ試してたらload
を使って実行時にシーンを読み込むようにするとエラーを回避できた。
const nodes = []
func _ready():
nodes.append(load("res://scenes/test1.tscn"))
nodes.append(load("res://scenes/test2.tscn"))
var test1 = nodes[0].instantiate()
print(test1.text)
var test2 = nodes[1].instantiate()
print(test2.text)
まとめ(感想文)
配列の2番目以降の要素のシーンが読み込めてるプロジェクトもあるので謎が深まる今日この頃。