こんにちハローキティ
クリーニング代って意外に高いですね.
Editor拡張の勉強でScriptableObjectを作成するやつを開発した時のメモです.
参考サイト
下記のサイトを参考にしました.
49.233.81.186
qiita.com
ekulabo.com
動機
Unityでキャラクターのステータスをハードコーディングしてたのが辛くなったので,別の方法を探したらScriptableObjectを使うのが良いらしいと記事を見ました.
ただScriptableObjectを作成するだけではつまらないので,パラメータを入力してScriptableObjectを作成するEditor拡張を作成してみました.
完成
こんな感じのを作成しました.
Readボタンでマウスクリック選択されているアセットを読み込む.
また,ホットリロード時にも編集内容を表示するためにJSON形式でパラメータを保存など,便利かもしれない機能を盛り込んでいます.
実装
- ScriptableObjectを作成
Assetを作成する.
Editor拡張でしかSetterを使用できないようにしています.
2. EditorWindowを作成
3. キャラクタスクリプトを作成
今回は十字キーで動くPlayerとしました.
簡単な解説
ScriptableObjectを作成
まず,Assetを作成するScriptableObjectを作成します.
ScriptableObject側でもAsset作成は可能ですが,今回はEditor拡張側で作成するように実装したのでCreateAssetMenu属性はなく,単純な実装となっています.EditorWindowを作成
0. CharacterDataAssetメンバ変数を作成.
(m_character_data_asset)
1. EditorWindowを作成します.
(void Create())
2. パラメータ設定用GUIを定義します.
(void OnGUI())
3. WriteボタンでGUIに入力したパラメータでアセットを作成する. (void ExportAsset())
4. ReadボタンでGUIのCharacter Nameまたは選択アセットを読み込む.
(void ImportAsset())
5. ホットリロード時に表示を保持するためJSON形式で入力内容を保存.
(void OnEnable(), void OnDisable())キャラクタスクリプトを作成
SerializeField属性のCharacterDataAssetに作成したアセットをアタッチしてパラメータを読み込む.
終わりに
今度は.csvを読み込んで.assetを作成するEditor拡張を作成したいかもねぎ.
(.xlsxが読めたら最高だよね?)