最終確認日

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が使われる。

tresファイルの特徴

  • 人間が読める形式
  • エディタ上からインスペクタで編集できる。
  • 複数のシーンやノード間で使いまわせる
  • バージョン管理もできる

デフォルトで利用できるものは?

  • カスタマイズできるらしいが、デフォルトにもあるの?
    • たくさんある!
    • カスタマイズする前にデフォルトで利用できるものを利用するべしよね

利用できるリソース

  • TileSet
    • タイルマップ定義
    • TileMap
  • StandardMaterial3D
    • 3Dのマテリアル設定
    • MeshInstance3D, material_override
  • CanvasItemMaterial
    • 2Dのマテリアル設定
    • Sprite2D, Control, Polygon2D
  • AudioStreamAudioStreamOggVorbis, AudioStreamWAV など)
    • 音声データ(BGMやSE)
    • AudioStreamPlayer, AudioStreamPlayer2D, AudioStreamPlayer3D
  • Animation
    • アニメーションデータ
    • AnimationPlayer
  • Curve
    • 値の変化を表す曲線(イージングなど)
    • Animation, Particles, Tween, Shader
  • Gradient
    • グラデーションカラーの定義
    • GradientTexture2D, UI背景やエフェクト用
  • Shape2DRectangleShape2D, CircleShape2D, CapsuleShape2D など)
    • 2D用のコリジョン形状
    • CollisionShape2D, CollisionPolygon2D, Area2D
  • Shape3DBoxShape3D, SphereShape3D, CapsuleShape3D など)
    • 3D用のコリジョン形状
    • CollisionShape3D, Area3D
  • StyleBoxStyleBoxFlat, StyleBoxTexture など)
    • UI部品の背景・枠のスタイル
    • Theme, Control
  • Theme
    • UI全体の外観(フォント、色、StyleBoxなど)をまとめた定義
    • Control, Button, Panel, などの UI ノード
  • FontDynamicFont, BitmapFont, Godot 4では FontFile
    • テキスト表示用のフォント
    • Label, Button, Theme
  • NavigationMeshNavigationMesh, 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)

:= は型を自動で推論する方法

参照

サイトアイコン
公開日
更新日