ContextMenuItemで追加したメニューが出てこない
解決したいこと
Unityのインスペクターから、メソッドを実行できるContextMenuItemが、おそらく多重リストの中身であると機能しない件について。
発生している問題・エラー
お疲れ様です。
今回わからないことについてなのですが、解決したいことにある通りです。
具体的に今回行おうとしたことは、まず、
[Serializable]属性を付加した自作BaseClass(aTest)を、
[Serializable]属性を付加した多数の自作Class(bTest)に継承し、
それをListとして保持した、[Serializable]属性を持ち、ScriptableObjectを継承した自作class(serializetest )を作りました。
そしてこのListにContextMenuItem、SerializeReference属性を付与してインスペクター上から任意の派生classを追加できるようにしました。
イメージとしては以下の感じです。(追加したのはAdd Bs です)
次にその発展として、上で述べた構造を入子状態(dTest、eTest)にして、
追加した派生classの中にもListを作り、ContextMenuItem、SerializeReference属性を付与してインスペクター上から任意の派生classを追加できるようにしようとしました。
しかし、ここで問題発生です。
なぜか上の画像のようなメニューが出てきませんでした。
(以下の画像のようにメニューに出てきません。)
該当するソースコード
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
[Serializable]
[CreateAssetMenu(fileName = "serializetest", menuName = "Createserializetest")]
public class serializetest : ScriptableObject
{
[ContextMenuItem("Add Bs", "AddBs")]
[SerializeReference]
List<aTest> bs;
public void AddBs()
{
bTest BTest = new bTest();
bs.Add(BTest);
}
}
[Serializable]
public class aTest
{
[SerializeField]
string isa;
}
[Serializable]
public class bTest:aTest
{
[SerializeField]
string isb;
[ContextMenuItem("Add ds", "AddDs")]
[SerializeReference]
List<dTest> ds;
public void AddDs()
{
eTest ETest = new eTest();
ds.Add(ETest);
}
}
[Serializable]
public class dTest
{
[SerializeField]
private string isd;
}
[Serializable]
public class eTest:dTest
{
[SerializeField]
private string ise;
}
どうしたらメニューに出てくるようになるのか、なぜメニューに出てこないのか、がわかりません。
なにとぞご教授のほどよろしくお願いします。
0