Я пытаюсь сделать что-то на Unity и попал в тупик;
Это может быть немного сложно, но посмотрим, сможете ли вы мне помочь:
Что яполучил и то, что я хочу (изображение)
Это скрипт, который я получил сейчас
public class ClasseTest : MonoBehaviour{
public enum TiposDeMissoes
{
TipoMatarGente,
TipoPegarItem,
};
public TiposDeMissoes TiposMissoes;
[Serializable]
public class MatarGente
{
public int IDmissao;
public GameObject[] ObjetosAtivarPraMissao;
public GameObject[] Checkpoints;
public GameObject[] InimigosPraMatar;
}
[Serializable]
public class PegarItem
{
public int IDmissao;
public GameObject[] ObjetosAtivarPraMissao;
public GameObject[] Checkpoints;
public GameObject[] ItemsEntregar;
}
[Serializable]
public class Missoes
{
public TiposDeMissoes TiposMissoes;
public PegarItem[] PegarItem;
public MatarGente[] MatarGente;
}
public Missoes[] MissoesJogasso;
}
Мне только, что показать класс PegarItem, если PegarItem был выбран в перечислении.
Сейчас есть только PegarItem и MatarGente, но будет больше классов.
Я провел некоторое исследование и выяснил, что я должен использовать OnInspectorGUI, если я хочу быть таким конкретным (если есть другиенаоборот, пожалуйста, скажите мне)
Я получил 0 опыта на CustomEditor, так что я получил до сих пор
[CustomEditor(typeof(ClasseTest))]
public class TestCustomInspector : Editor
{
public int numMissoes;
public override void OnInspectorGUI()
{
ClasseTest script = (ClasseTest)target;
numMissoes = EditorGUILayout.IntField("Numero de Missoes", numMissoes);
EditorGUILayout.LabelField("Editante");
var serializedObject = new SerializedObject(target);
var property = serializedObject.FindProperty("MissoesJogasso");
serializedObject.Update();
EditorGUILayout.PropertyField(property, true);
serializedObject.ApplyModifiedProperties();
for (int i = 0; i < numMissoes; i++)
{
script.TiposMissoes = (ClasseTest.TiposDeMissoes)EditorGUILayout.EnumPopup("TIPO DE MISSAO", script.TiposMissoes);
if (script.TiposMissoes == ClasseTest.TiposDeMissoes.TipoMatarGente)
{
script.TiposMissoes = (ClasseTest.TiposDeMissoes)EditorGUILayout.EnumPopup("Matar Gentes", script.TiposMissoes);
}
if (script.TiposMissoes == ClasseTest.TiposDeMissoes.TipoPegarItem)
{
script.TiposMissoes = (ClasseTest.TiposDeMissoes)EditorGUILayout.EnumPopup("Pegar Item", script.TiposMissoes);
}
}
}
}
И это значит, в редакторе:
Если я изменю значение одного перечисления, все остальные копируют его (изображение)
И это именно то, чего я не хочу.И имейте в виду, когда редактор выбирает MatarGente или PegarItem, я хотел бы показать все те возможные переменные, которые содержатся в этих классах.Это включает в себя массивы с неопределенной длины.А также, если есть 2 «MatarGente», я бы хотел иметь возможность заполнять эти массивы различными объектами и впоследствии получать эту информацию, чтобы использовать ее где-то еще.