最終確認日
Godotのリソースについてお勉強する
Godotにおけるリソースの定義
Godotが保存したり、ディスクから読み込んだりするもの。
Godotが保存したり、ディスクから読み込んだりするものは、すべてリソースです。これは、シーン(.tscnや.scnファイル)や、画像、スクリプトなどが該当します。 https://docs.godotengine.org/ja/4.x/tutorials/scripting/resources.html
Node は、機能を提供します。例えばスプライトや3Dモデルの表示、物理演算、ユーザーインターフェースの配置などです。一方、Resourceはデータの格納に使います。それ自身はなにもしませんが、代わりにノードが、データの入ったリソースを使用します。
- ノードは「振る舞う」
- リソースは「使われる」
- GodotにおけるNodeとResourceの役割関係
Text Resource
Godotではゲーム内の各種データ(マテリアル、フォント、設定、カスタムリソースなど)を記述するための方法としてText Resource(テキスト形式リソース)tresが使われる。
- GDQuestのlearn-gdscriptプロジェクトをのぞいてみようにてたくさん使われていた
- Unity における マテリアルや ScriptableObject に近い存在。
tresファイルの特徴
- 人間が読める形式
- エディタ上からインスペクタで編集できる。
- 複数のシーンやノード間で使いまわせる
- バージョン管理もできる
デフォルトで利用できるものは?
- カスタマイズできるらしいが、デフォルトにもあるの?
- たくさんある!
- カスタマイズする前にデフォルトで利用できるものを利用するべしよね
利用できるリソース
- TileSet
- タイルマップ定義
TileMap
- StandardMaterial3D
- 3Dのマテリアル設定
MeshInstance3D,material_override
- CanvasItemMaterial
- 2Dのマテリアル設定
Sprite2D,Control,Polygon2D
- AudioStream(
AudioStreamOggVorbis,AudioStreamWAVなど)- 音声データ(BGMやSE)
AudioStreamPlayer,AudioStreamPlayer2D,AudioStreamPlayer3D
- Animation
- アニメーションデータ
AnimationPlayer
- Curve
- 値の変化を表す曲線(イージングなど)
Animation,Particles,Tween,Shader
- Gradient
- グラデーションカラーの定義
GradientTexture2D, UI背景やエフェクト用
- Shape2D(
RectangleShape2D,CircleShape2D,CapsuleShape2Dなど)- 2D用のコリジョン形状
CollisionShape2D,CollisionPolygon2D,Area2D
- Shape3D(
BoxShape3D,SphereShape3D,CapsuleShape3Dなど)- 3D用のコリジョン形状
CollisionShape3D,Area3D
- StyleBox(
StyleBoxFlat,StyleBoxTextureなど)- UI部品の背景・枠のスタイル
Theme,Control
- Theme
- UI全体の外観(フォント、色、StyleBoxなど)をまとめた定義
Control,Button,Panel, などの UI ノード
- Font(
DynamicFont,BitmapFont, Godot 4ではFontFile)- テキスト表示用のフォント
Label,Button,Theme
- NavigationMesh(
NavigationMesh,NavigationPolygon)- ナビゲーションの経路探索用データ
NavigationRegion3D,NavigationRegion2D
どんなことをするときに使う?
- 複数のシーン・ノードで同じ設定を共有したいとき
- 敵キャラすべてが同じマテリアルを使っている
- 複数のオブジェクトが同じアニメーションデータを共有する
- UI のテーマやフォントなどを全画面で統一したい
- ゲームデータを外部化して管理したいとき
- プレイヤーステータス(HP、スピードなど)
- アイテムの情報(名前、効果、アイコンなど)
- 敵の種類ごとのステータス
- エディタで編集可能にしたいとき
# GameConfig.gd (Resource)
extends Resource
class_name GameConfig
@export var max_hp := 100
@export var move_speed := 200.0
var config := preload("res://GameConfig.tres")
print(config.max_hp)
:= は型を自動で推論する方法
参照
公開日
更新日