プログラマーは、簡単にName
(名前)を変更したいと考えていますが、システムは変更されない一意のID
が必要です。
IDReference
は、プログラマーとシステムの正反対の要件を満たします。
プルダウンメニューから選ぶだけで、間違えません。
[SerializeField, CharacterIDReference] string characterID;
//Inspector:Cat 猫 characterID:IDRef-Character-iwp05
設定画面で簡単に修正できます。
- 名前を変更しても参照先には影響ありません。
- 順序を変更しても参照先には影響ありません。
- 英語以外の言語を使用しても問題ありません。
設定画面で確認できます。
- すべての参照を表示
- 参照にジャンプ
- 参照を出力
URL : https://github.com/IShix-g/IDReference.git?path=Assets/Plugins/IDReference
パッケージマネージャーにURLを追加します。
#if UNITY_EDITOR
using UnityEditor;
using IDRef;
// [Step1] Initialization (editor only)
[InitializeOnLoad]
public sealed class IDReferenceSetting
{
static IDReferenceTable characterTable;
static IDReferenceSetting()
{
characterTable = new IDReferenceTable("Character", false, false);
IDReferenceProvider.SetTable(characterTable);
}
}
#endif
using IDRef;
public sealed class CharacterIDReferenceAttribute : IDReferenceAttribute
{
public override string GetTableID() => "Character";
}
using UnityEngine;
public sealed class IDReferenceTest : MonoBehaviour
{
[SerializeField, CharacterIDReference] string characterID;
IDリファレンスリスト
にはカスタムメニューを追加してアクセスできます。設定しておくと便利です。
static IDReferenceTable characterTable;
static IDReferenceSetting()
{
characterTable = new IDReferenceTable("Character", false, false);
IDReferenceProvider.SetTable(characterTable);
}
// Add to menu
[MenuItem("IDReference/Character")]
public static void CharacterCustomMenu()
{
characterTable.ShowSettingDialog();
}
- 複数の登録が可能です。
- 本機能はUnity Editorでのみ使用可能です。
- 初期化コードは必ず
UNITY_EDITOR
で囲んでください。 - 他クラスで参照されるため、属性コードは
UNITY_EDITOR
で囲まないでください。
IDを削除すると、そのIDを参照できなくなります。これはIDReference
の唯一の弱点ですが、削除ボタンを無効化することで安心して使用できます。
characterTable = new IDReferenceTable("Character", disableRemoveButton: true);
ドロップダウンでのID追加を無効化することで、編集できる人を制限できます。
characterTable = new IDReferenceTable("Character", disableDropDownAddID: true);
初期値を設定することで、独自のIDを定義できます。追加されたIDは削除や編集ができず、青い文字で表示されます。
characterTable = new IDReferenceTable("Character", required: new []{ new IDReference("Mob モブ", "Mob") });
Editorのみで有効
IDのみでは理解しづらい場合、ToIDReferenceEditorOnly()
を使用して、文字列をIDReference Object
に変換できます。
using UnityEngine;
public sealed class IDReferenceTest : MonoBehaviour
{
[SerializeField, CharacterIDReference] string characterID;
void Start()
{
#if UNITY_EDITOR
// convert to IdReference
var idReference = characterID.ToIDReferenceEditorOnly();
if (idReference.IsValid())
{
var name = idReference.Name;
var id = idReference.ID;
Debug.Log($"Name:{name} ID:{id}");
// Name:Cat 猫 ID:IDRef-Character-iwp05
}
#endif
}
}
Shift_JIS
に対応しています。
Unityインスペクターから設定することを前提としています。
IDReference | int | string | enum | |
---|---|---|---|---|
名前の変更 | ◎ | × | × | ◎ |
並び替え | ◎ | ○ | ○ | ○ |
使用感 | ◎ | × | × | ◎ |
可読性 | ◎ | × | ◎ | ◎ |
Character / Item / Monster / Story
- stevehansen/csv
CSVのインポート/エクスポートで使用.