J'essai en mettre en forme un petit interface dans l'inspecteur d'Unity. Il comprend des entrées de type float (Life, Energy, Hunger, decreaseFood, decreaseRate) et des UnityEvents (changeLife, changeEnergy, changeHungry, gameStart, gameOver). L'idée c'est de faire une rangé des floats d'abord suivit de deux fenêtres ouvrables contenant les unityEvent (une pour celle qui ne reçoivent pas d’argument et une autre pour celle qui en reçoivent). J'ai testé le code avant de faire ça et tout marche (c'est tiré d'un tuto que j'avais suivis que j’essaie de refaire avec des Unityevents).
Le problème c'est que je mets tout ensemble, seul les floats s'affiche. Si je les enlève (pas toute, juste la dernière sur les trois présentes dans la méthode OnInspectorGUI()) les UnityEvents réapparaissent. Dans tout les cas, je ne peux pas utiliser les sliders, ni les unityEvents (sauf le tout dernier qui marche). Pourriez vous m'éclairer sur ce problème? Merci d'avance.
Code : Tout sélectionner
using UnityEditor;
[CustomEditor(typeof(GameManager))]
public class GameManager_Inspector : Editor
{
SerializedProperty Life, Energy, Hunger, decreaseFood, decreaseRate;
SerializedProperty changeLife, changeEnergy, changeHungry;
SerializedProperty gameStart, gameOver;
bool showEvtVoid, showEvt = false;
private void OnEnable()
{
Life = serializedObject.FindProperty("Life");
Energy = serializedObject.FindProperty("Energy");
Hunger = serializedObject.FindProperty("Hunger");
decreaseFood = serializedObject.FindProperty("decreaseFood");
decreaseRate = serializedObject.FindProperty("decreaseRate");
changeLife = serializedObject.FindProperty("changeLife");
changeEnergy = serializedObject.FindProperty("changeEnergy");
changeHungry = serializedObject.FindProperty("changeHungry");
gameStart = serializedObject.FindProperty("gameStart");
gameOver = serializedObject.FindProperty("gameOver");
}
public override void OnInspectorGUI()
{
serializedObject.Update();
EditorGUILayout.Slider(Life,0,100);
EditorGUILayout.Slider(Energy, 0, 100);
EditorGUILayout.Slider(Hunger, 0, 100);
showEvt = EditorGUILayout.Foldout(showEvt, "UnityEvent<> (List)");
if (showEvt)
{
EditorGUILayout.PropertyField(changeLife);
EditorGUILayout.PropertyField(changeEnergy);
EditorGUILayout.PropertyField(changeHungry);
}
showEvtVoid = EditorGUILayout.Foldout(showEvtVoid, "UnityEvent (List)");
if (showEvtVoid)
{
EditorGUILayout.PropertyField(gameStart);
EditorGUILayout.PropertyField(gameOver);
}
}