Godot4でエディター上からの実行ではインスタンス化できるんだけども、exeやapkにビルドするとインスタンス化できないシーンをなんとかしたい!
概要
今回の記事では、Godot4でエディター上からの実行ではインスタンス化できるんだけども、exeやapkにビルドするとインスタンス化できないシーンをなんとかする手順を掲載する。
仕様書
環境
- Gogot 4.3
手順書
下記のようなItem.tscn
をインスタンス化するコードがあって
extends Node2D
var item = preload("res://Item.tscn")
func _ready() -> void:
var i = item.instantiate()
i.position = Vector2(floor(randf_range(0, 128)), floor(randf_range(0, 128)))
add_child(i)
一見、問題なさそうなコードなんだけども、なぜかexeやapkにビルドして実行するとitem.instantiate()
が失敗する。
エディター上から実行する分には問題なくインスタンス化される。
原因はなんなんだ!?
var item = preload("res://Item.tscn")
実はItem.tscn
は存在してなくて正しくはitem.tscn
だったというミス。
エディダー上の実行だとアルファベットの大文字・小文字を区別しないんだけども、ビルド後はきっちり区別するという罠。
まとめ(感想文)
これはWindows上で動いてるエディターならではの問題なのかもしれない。