【Godot4】ビルドするとインスタンス化できないシーン

ネコニウム研究所

PCを利用したモノづくりに関連する情報や超個人的なナレッジを掲載するブログ

【Godot4】ビルドするとインスタンス化できないシーン

2024-9-6 | ,

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上で動いてるエディターならではの問題なのかもしれない。