#目次
1.Editorフォルダを作成する
2.スクリプトファイルを作成する
3.EditorWindowを作成する
4.Avatarをセットできるようにしてみる
5.次回
#1.Editorフォルダを作成する
まずはじめにスクリプトを入れるEditorフォルダーを作成していきます
Assetsで右クリックして__Create/Folder__を選択します
フォルダーが作成されたら、名前は__"Editor"__に変更しておきましょう
フォルダーが完成しました
#2.スクリプトファイルを作成する
先ほど作成したフォルダーにスクリプトファイルを作成します
__Editor__フォルダーを開き右クリックして__Create/C#Script__を選択します
スクリプトが作成されたら名前を変更しましょう
私は__TestEditor__に変更しました
これでスクリプトファイルは作成されました
#3.EditorWindowを作成する
###最初にスクリプトファイルを開いてみる
先ほど作成したスクリプトファイルを開きます
スクリプトエディターが開くとこのようなものが作成されているかと思います
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TestEditor : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
}
確認できましたね
####まずはEditorを扱うためにUnityEditorを追加していきます
__using UnityEngine__の下に using UnityEditor を追加しましょう。
追加ができたら必要のない__void Start__と__void Update__も削除してしまいましょう
これらが済むとこんな感じになると思います
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
public class TestEditor : MonoBehaviour
{
}
####次にEditorWindowを継承します
EditorWindowの機能を使うために継承を行います
__MonoBehaviour__から
public class TestEditor : MonoBehaviour
__EditorWindow__に変更します
public class TestEditor : EditorWindow
変更ができるとこんな感じになると思います
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
public class TestEditor : EditorWindow
{
}
###準備が整ったのでEditorWindowを開けるようにしていきます
まずはメニューバーに表示するためのMenuItemを作成していきます
public class TestEditor : EditorWindow
{
[MenuItem("TestEditor/TestEditor")]
}
次にウィンドウを取得して表示できるようにします
ウィンドウを開くために__EditorWindow.GetWindow__を使用します
EditorWindow.GetWindow<"クラス名">("フローティングのユーティリティウィンドウを作成するか", "タイトル");
これらを設定していきます
今回の場合はこんな感じです
EditorWindow.GetWindow<TestEditor>(true, "TestEditor");
これを書き加えて...
public class TestEditor : EditorWindow
{
[MenuItem("TestEditor/TestEditor")]
public static void ShowWindow()
{
EditorWindow.GetWindow<TestEditor>(true, "TestEditor");
}
}
これでEditorを開く準備ができました
Ctrl + Sで__保存__してUnityで開いてみましょう
MenuItemに設定した名前がメニューバーに追加されていると思います
開きました
#4.Avatarをセットできるようにしてみる
###まずはOnGUIを使って描画処理を出来るようする
先ほど作成した__ShowWindow__の下に__OnGUI__を書きます
public static void ShowWindow()
{
EditorWindow.GetWindow<TestEditor>(true, "TestEditor");
}
private void OnGUI()
{
}
###次にアバターをセットするための変数を宣言します
変数を宣言する前に__VRCAvatarDescriptor__を使用するためのusingを追加していきます
unityにVRC3SDKをインポートしていなければ、インポートしてください。
__UnityEditor__の下に__VRC.SDK3.Avatars.Components__を追加します
using UnityEditor;
using VRC.SDK3.Avatars.Components;
これで準備はできました
準備ができたら変数を宣言します
__private__な__VRCAvatarDescriptor__タイプの__Avatar__変数を、グローバルな変数として宣言するためにメソッド外で宣言します
今回はOnGUIの上で作成します
private VRCAvatarDescriptor avatar;
private void OnGUI()
{
}
これで変数はできました
###変数にObjectを入れるためのObjectFieldを作る
箱を作るために__EditorGUILayout.ObjectField__を使用します
EditorGUILayout.ObjectField("フィールドのラベル", "フィールドを表示するオブジェクト", "割り当てることのできるタイプ", "オブジェクトを選択できるようにするか");
これらを設定していきます
今回はこのようになりました
EditorGUILayout.ObjectField("Avatar", avatar, typeof(VRCAvatarDescriptor), true);
ObjectField完成しました
###ObjectFieldからavatarに代入する
avatar変数へ代入します
avatar = EditorGUILayout.ObjectField("Avatar", avatar, typeof(VRCAvatarDescriptor), true);
できました...?
いいえ、このままではエラーが出ているはずです
エラー 型 'UnityEngine.Object' を 'VRC.SDK3.Avatars.Components.VRCAvatarDescriptor' に暗黙的に変換できません。明示的な変換が存在します
だそうです。
明示的な変換をしていきます。
今回はキャストするために__as__を使用します
このようになればエラーは消えるはずです
avatar = EditorGUILayout.ObjectField("Avatar", avatar, typeof(VRCAvatarDescriptor), true) as VRCAvatarDescriptor;
これでObjectFieldからavatar変数へ代入することができました
全体のコードはこうなります
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
using VRC.SDK3.Avatars.Components;
public class TestEditor : EditorWindow
{
[MenuItem("TestEditor/TestEditor")]
public static void ShowWindow()
{
EditorWindow.GetWindow<TestEditor>(true, "TestEditor");
}
private VRCAvatarDescriptor avatar;
private void OnGUI()
{
avatar = EditorGUILayout.ObjectField("Avatar", avatar, typeof(VRCAvatarDescriptor), true) as VRCAvatarDescriptor;
}
}
Ctrl + Sで__保存__して確認してみましょう
出来てますね
次に__VRCAvatarDescriptorが入っているアバター__を__ObjectField__に入れてみましょう
入れることができるか確認できたと思います
####これで今回は終了です
#5.次回
次回は今回取得したAvatarにオブジェクトを入れるエディターを作成していきたいと思います