【Godot4.3】辞書型(Dictionary)の使い方

GodotEngine

この記事では、Godotでの辞書型データの使い方についてまとめています。

辞書型の基本

辞書型(Dictionary)データは、キーと値のペアを格納するデータ構造です。
配列(リスト)に似ていますが、任意で設定できる「キー」によるデータアクセスができることから、参照に使う情報にも意味を持たせることが可能です。

宣言と初期化

辞書型は、{} を使用して、以下のように宣言・初期化ができます。

# 空の辞書を作成
var my_dict = {}

# キーと値を持つ辞書を作成
var my_dict = {
    "name": "Player",
    "health": 100,
    "score": 50
}

※以降の説明は、上記「キーと値を持つ辞書を作成」の辞書 my_dict を宣言しているものとして実行例を示しています。

値のアクセス

辞書内の値には、<辞書>[<キー>] の形で指定を行い、アクセスします。

print(my_dict["name"]) # 出力: Player
print(my_dict["health"]) # 出力: 100

値の変更・追加

キーを指定することで、値を変更、または新しいキーを追加できます。

my_dict["health"] = 80 # 既存のキーの値を変更
my_dict["level"] = 1 # 新しいキーを追加
print(my_dict) # 出力: {"name": "Player", "health": 80, "score": 50, "level": 1}

値の削除

erase()メソッド を使用することで、キーとその値を削除できます。

my_dict.erase("score")
print(my_dict) # 出力: {"name": "Player", "health": 100}

キーの存在確認

has()またはinキーワードを使用して、指定したキーが存在するかを確認できます。

if my_dict.has("name"):
    print("キー[name]が存在します")

if "name" in my_dict:
    print("キー[name]が存在します")

キー/値のリストを取得

以下のメソッドを使用して、辞書内のキー/値をリストで取得できます。
 ・keys()メソッド:辞書内のキーをリストとして取得します。
 ・values()メソッド:辞書内の値をリストとして取得します。

var keys = my_dict.keys()
print(keys) # 出力: ["name", "health", "score"]

var values = my_dict.values()
print(values) # 出力: ["Player", 100, 50]

辞書のマージ

別の辞書を統合したい場合、merge() メソッドを使用します。

var new_data = {"mp": 50, "level": 90}
my_dict.merge(new_data)

print(my_dict) 
# 出力結果: { "name": "Player", "health": 100, "score": 50, "mp": 50, "level": 90 }

サイズ取得

辞書内のキーと値のペアの数を取得するには、size()メソッドを使用します。

print(my_dict.size()) # 出力: 3

 

辞書型の応用

ここからは、辞書型の基本を踏まえた応用例についてまとめています。

ネストされた辞書

辞書型の値に、さらに辞書型を設定することもできます。
その場合、宣言とデータアクセス方法は以下のようになります。

var game_settings = {
    "resolution": "1920x1080",
    "fullscreen": true,
    "volume": {
        "music": 80,
        "sfx": 70
    }
}

# ネストされた辞書のアクセス
print(game_settings["volume"]["music"])  # 出力: 8

jsonファイルへの書き込み/読み込み

辞書型はjsonファイルとしての読み書きでも活用できます。
(以下は単純な例としてプロジェクトフォルダ直下にdata.json というファイルを出力しています)

▼辞書型をjsonファイルとして書き出す

var my_dict = {
	"name": "Player",
	"health": 100,
	"score": 50
}

var file = FileAccess.open("data.json", FileAccess.WRITE)
var json = JSON.new()
var json_string = json.stringify(my_dict)
file.store_line(json_string)

▼jsonファイルを辞書型として読み込む

if FileAccess.file_exists("data.json"):
	var file = FileAccess.open("data.json", FileAccess.READ)
	var json = JSON.new()
	var json_string = json.parse(file.get_line())
	var data = json.data
	if data != null:
		print(data["name"])		# Player
		print(data["health"])	# 100
		print(data["score"])	# 50

おすすめの本①
おすすめの本➁(Godot)
GodotEngine
ひらまめ(hiramame)をフォローする
ひらまめゲーム制作研究室

コメント

タイトルとURLをコピーしました