無料・軽快な 2D / 3D 用のゲームエンジン Godot Engine 4 で、EditorSettings の機能を用いて、独自に追加した設定値を削除するスクリプトと使用例を紹介します。
設定値を削除した後に、エディター設定ダイアアログで、その項目が削除されたことを確認します。
※自身が追加した設定値以外を削除すると、エディター全体に影響する可能性があるので控えましょう。

※ GodotEngine 4.3 を使用しています。.NET 版ではありません。
※スクリプトは自己責任でご利用ください。
前回の記事
前回は、EditorSettings に追加した独自の設定値に初期値を指定して、エディター設定ダイアログで初期値に戻す動作を確認しました。
EditorSettings ファイルのバックアップ
誤って削除して、エディターが正常に動作しなくなることの予防策として、 EditorSettings のファイルをバックアップしておくと良いかもしれません。
※完全に復旧できるかは確認していません。
EditorSettings の設定は、「C:\Users\ユーザー名\AppData\Roaming\Godot」フォルダの editor_settings-バージョン.tres ファイル(例:editor_settings-4.3.tres )にテキスト形式で保存されています。
使用しているエディターのバージョンごとに保存先は変わります。

EditorSettings に追加した設定値の確認
以下の記事で EditorSettings に独自の設定値を追加しました。
その設定値はエディター設定ダイアログで確認できます。
エディター設定ダイアログは、メニュー「エディタ」→「エディター設定」で開けます。

一般タブの左側のリストに追加された、独自のセクションを選択すると、設定値(例:ラベル、Button)が確認できました。
設定値は、その設定を保存した際の値です。

スクリプト例
以下は、プラグインのスクリプトです。
プラグイン初期化時に追加したツールメニューを選択すると、独自に追加した項目を EditorSettings から削除する処理が実行されます。
@tool
extends EditorPlugin
## EditorSettings の「ユーザ名/アドオン名/セクション名/キー」の読み書きを Dictionary 型を用いて行う関数とそのテストです。
## EditorInterface の機能はエディタ上で利用できます。
## EditorSettings の機能を含む関数を実行するために、プラグインとしてこのスクリプトを追加して
## ツールメニュー(「プロジェクト」→「ツール」)から、これが追加したメニューを選択してください。
##
## EditorSettings のファイルは C:\Users\ユーザ名\AppData\Roaming\Godot\editor_settings-4.3.tres にあります。
## 4.3 の部分はバージョンによって変わります。
## メニューアイテムの表示名です。
const tool_menu_item_name: StringName = "Study EditorSettings By Dictionary"
## プラグインの初期化処理を定義します。
## プラグイン (プロジェクト設定ダイアログ>プラグイン>有効) を有効にした直後や、プラグインが有効な状態のプロジェクトを開いた際に呼び出されます。
func _enter_tree():
# Initialization of the plugin goes here.
# メニュー「プロジェクト」→「ツール」にサブメニューを追加します。メニュー選択時に、第二引数のメンバ関数を呼び出します。
add_tool_menu_item(tool_menu_item_name, Callable(self, "_on_menu_item_study_editor_settings_by_dictionary"))
return
## プラグインの後片付けの処理を定義します。
## プラグインを無効 (プロジェクト設定ダイアログ>プラグイン>有効) にした直後や、プラグインが有効な状態でプロジェクトを閉じた際に呼び出されます。
func _exit_tree():
# Clean-up of the plugin goes here.
remove_tool_menu_item(tool_menu_item_name)
return
## プラグインで追加したツールメニューを選択した際に呼び出される関数です。
func _on_menu_item_study_editor_settings_by_dictionary():
# EditorSettings に追加した独自の設定値を削除します。
test_erase_editor_settings_section_initial_value_from_dictionary()
return
func test_erase_editor_settings_section_initial_value_from_dictionary():
# 以下の 2 つを組み合わせて、さらにキー名を追加した name で辞書変数の値にアクセスします。
const EDITOR_SETTINGS_PATH = "sclib/fit_font_size/"
const EDITOR_SETTINGS_SECTION = "scale_correction_value/"
# セクション内に保存されるデータです。
var array_erase_keys = ["Label", "Panel"]
# 辞書のデータ群を、指定した EditorSettings ファイルのセクションの
# 各設定値の初期値に設定します。
print("erase_editor_settings_section_initial_value_from_dictionary call")
erase_editor_settings_section_initial_value_from_dictionary(
EDITOR_SETTINGS_PATH, EDITOR_SETTINGS_SECTION, array_erase_keys)
return
## EditorSettings の項目を削除します。
## 削除することでエディタが正常に動作しなくなる危険性があるので注意してください。
## [param path] + [param section ] + [param erase_keys] の各要素で連結した文字列
## の name に一致する項目を削除します。
func erase_editor_settings_section_initial_value_from_dictionary(
path: String, section: String, erase_keys: Array = []
) -> void:
# 設定を保存する name のキーの1つ前までの階層の文字列を作成します。
var base_path := path + section
# EditorSettings から key_array に指定したキーを base_path に加えた各 name の値を
# 戻り値の辞書のキーの値として取得します。
var editor_settings = EditorInterface.get_editor_settings()
if editor_settings == null:
push_error("study_eidotr_settings_by_dictionary.gd:" +
"erase_editor_settings_section_initial_value_from_dictionary:" +
"editor_settings == null")
return
# 辞書変数の要素ごとに EditorSettings から値を取得します。
for key in erase_keys:
# name の最後には、辞書変数のキーを追加します。
var editor_settings_name: String = base_path + key
print("erase_editor_settings_section_initial_value_from_dictionary, editor_settings_name = ", editor_settings_name)
# name と同じ項目があれば、それを削除します。
if editor_settings.has_setting(editor_settings_name) == true:
# 指定した name の設定値を削除します。
editor_settings.erase(editor_settings_name)
print(editor_settings_name, " を EditorSettings から削除しました。")
else:
print(editor_settings_name, " は EditorSettings にありませんでした。")
return
- 17行目の _enter_tree はプラグインの初期化処理で呼び出され、そこでツールメニューに Study EditorSettings By Dictionary を追加します。
- ツールメニューをメニュー「プロジェクト」→「ツール」から選択すると 33 行目の _on_menu_item_study_editor_settings_by_dictionary 関数が呼び出され、そこでテスト関数を呼び出します。
- 40 行目の test_erase_editor_settings_section_initial_value_from_array 関数では、具体的に削除する項目名を指定して、配列による削除関数を呼び出します。
- 61 行目の、配列による削除関数では、受け取った引数を連結した name と一致する項目を EditorSettings から erase 関数を使って削除します。
なければ、削除しません。
void erase(property: String)
Erases the setting whose name is specified by
property.プロパティで指定された名前の設定を消去します。
EditorSettings — Godot Engine (4.3) documentation in English #erase と Google 翻訳
ツールメニューから初期値を設定する関数を実行
プラグインで追加したツールメニューを選択して、初期値を設定する処理を実行します。
※前述のスクリプトから追加したツールメニューはメニュー「プロジェクト」→「ツール」→「Study EditorSettings By Dictionary」です。

erase_editor_settings_section_initial_value_from_dictionary call
erase_editor_settings_section_initial_value_from_dictionary, editor_settings_name = sclib/fit_font_size/scale_correction_value/Label
sclib/fit_font_size/scale_correction_value/Label を EditorSettings から削除しました。
erase_editor_settings_section_initial_value_from_dictionary, editor_settings_name = sclib/fit_font_size/scale_correction_value/Panel
sclib/fit_font_size/scale_correction_value/Panel は EditorSettings にありませんでした。エディター設定ダイアログを開いて、追加した独自の設定値のセクションを開くと、指定した項目(例:Label)が削除されました。
※エディター設定ダイアログは、メニュー「エディター」→「エディター設定」で開きます。

追加した全ての項目を消した場合
独自の設定値で残っている項目(例:Button)を削除するため、先ほどのスクリプトのテスト関数で指定するキーの配列に “Button” を加えて保存します。
var array_erase_keys = ["Label", "Button"]先ほどと同様にツールメニューを選択して実行します。
Label はすでに消されているため、「EditorSettings にありませんでした。」と表示されました。
Button は削除することができました。
erase_editor_settings_section_initial_value_from_dictionary call
erase_editor_settings_section_initial_value_from_dictionary, editor_settings_name = sclib/fit_font_size/scale_correction_value/Label
sclib/fit_font_size/scale_correction_value/Label は EditorSettings にありませんでした。
erase_editor_settings_section_initial_value_from_dictionary, editor_settings_name = sclib/fit_font_size/scale_correction_value/Button
sclib/fit_font_size/scale_correction_value/Button を EditorSettings から削除しました。エディター設定ダイアログを開くと、独自に追加した全ての項目を消すと、その上位の階層も表示されなくなりました。

まとめ
- EditorSettings の erase 関数を用いて、追加した独自の設定値を削除しました。
- エディター設定ダイアログで、項目が削除されたことを確認しました。
参照サイト Thank You!
- Godot Engine – Free and open source 2D and 3D game engine
- Dictionary — Godot Engine (4.3) documentation in English
- EditorInterface — Godot Engine (4.x)の日本語のドキュメント
- EditorSettings — Godot Engine (4.3) documentation in English
- EditorSettings — Godot Engine (4.3) documentation in English #erase
記事一覧 → Compota-Soft-Press


コメント