【Godot】リソースパス(res://)とユーザーデータパス(user://)の違いについて

この記事では、リソースパス(res://)とユーザーデータパス(user://)の違いについて説明をします。

リソースパスについて

リソースパスとは「res://」で始まるパスです。例えば以下の用途で使用します。

  • シーンを preload() で読み込む
  • 画像ファイルを load() で動的にロードする
  • 開発中のスクリーンショット保存など、アクセスしやすい場所に保存するために使う

最もよく使うのがシーンの読み込みですね。

extends Node2D

# シーンの読み込み
var enemy = preload("res://Godot.tscn")

カードゲームなどでカードオブジェクトに任意の画像を割り当てたい場合には、load() で動的読み込みを行うことになると思います。

注意点

注意点として、「res://」指定のパスはゲームを配布したときには「読み取り専用」となる可能性があります。なのでスクリーンショットを保存するなど「書き込み」を行う場合には「開発中のみ」と用途を限定するか、「ユーザーパス」に保存する必要があります。

ユーザーパスについて

ユーザーパスとは「user://」で始まるパスです。

  • セーブデータの保存
  • UGCコンテンツ(スクリーンショットやMODなど)の保存

このパスは自由に読み書きできるものとなります。そのためセーブデータなど永続的に保持するデータの保存場所として適切です。

ユーザーパスの保存先

ただユーザーパスは保存場所が環境によって異なり、それぞれ以下の場所となりますので注意が必要です。

  • Windows:  %APPDATA%\Godot\
  • macOS:  ~/Library/Application Support/Godot/

なおセーブデータの保存方法については以下の記事にまとめました。

【Godot】セーブデータの保存方法

まとめ

リソースパスとユーザーパスの違いについてのまとめは以下のとおりです。

パスの種類表記場所用途I/O
リソース
パス
res://プロジェクトが存在するパスプロジェクト内
リソースの読み込み
読み取り
専用を推奨
(※1)
ユーザー
パス
user://Windows: %APPDATA%\Godot\
macOS: ~/Library/Application Support/Godot/
セーブデータなど読み書き
可能

(※1) リソースパスにも状況によってはファイル書き込みを行うことはできますが、例えば開発中であればプロジェクトのインポート対象となってしまうので、通常は使用しません。例外として、開発中のゲーム内エディタで作成したリソースを自動でプロジェクトに追加したいときなどに使用します。

参考

今回の記事は公式ドキュメントの「データパス」のページを参考にしました。

より詳細な情報を知りたい場合にはこちらが参考になると思います。