Problème de EditorGUILayout.BeginVertical();

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
Avatar de l’utilisateur
Maxime66410
Messages : 12
Inscription : 03 Fév 2018 19:12
Contact :

Problème de EditorGUILayout.BeginVertical();

Message par Maxime66410 » 18 Jan 2020 16:02

Bonjour, depuis un certain temps, je développe un jeu FNAF, mais je suis coincé dans une partie très ennuyeuse pour le reste de mon développement.

Normalement quand je veux mettre ce que je veux faire ça devrait me faire ça:
Image

Mais à la place, cela me fait une boîte vide :c
Image

Je vous fournis les lignes de code pour m'aider à résoudre cette erreur.

Merci pour toutes les personnes qui essaient de m'aider !

Animatronic.cs

Code : Tout sélectionner

 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 
 public class Animatronic : MonoBehaviour
 {
     [System.Serializable]
     public enum Actions
     {
         TPose = 0,
         Stage,
         Standing,
         OutsideCamera,
         OusideWindow,
         OutSideDoor,
         Kill
     }
 
     [System.Serializable]
     public struct AnimatronicNodeData
     {
         public Node node;
         public bool weight;
         public Actions action;
     }
 
     public Node startLocation;
 
     public AnimatronicNodeData[] nodeData;
 
     // Start is called before the first frame update
     void Start()
     {
         this.gameObject.transform.position = startLocation.gameObject.transform.position;
         this.gameObject.transform.rotation = startLocation.gameObject.transform.rotation;
     }
 
     // Update is called once per frame
     void Update()
     {
         
     }
 }
 
AnimatronicEditor.cs

Code : Tout sélectionner

 using System.Collections;
 using UnityEngine;
 using UnityEditor;
 
 [CustomEditor(typeof(Animatronic))]
 public class AnimatronicEditor : Editor
 {
 
     public override void OnInspectorGUI()
     {
         Animatronic animatronicScript = (Animatronic)target;
 
         animatronicScript.startLocation = (Node) EditorGUILayout.ObjectField("Starting Node:", animatronicScript.startLocation, typeof(Node), true);
 
         IAManager[] aiManager = Resources.FindObjectsOfTypeAll<IAManager>();
 
 
         if (aiManager == null)
         {
             EditorGUILayout.HelpBox("Scene must have and AI Manager to populate Nodes.", MessageType.Error);
         }
 
         else
         {
             Node[] nodes = aiManager[0].nodes;
 
             if(animatronicScript.nodeData == null || animatronicScript.nodeData.Length != nodes.Length)
             {
                 animatronicScript.nodeData = new Animatronic.AnimatronicNodeData[nodes.Length];
                 for(int i = 0; i < nodes.Length; i++)
                 {
                     animatronicScript.nodeData[i] = new Animatronic.AnimatronicNodeData();
                 }
             }
 
             EditorGUILayout.BeginVertical();
 
             for(int i = 0; i < nodes.Length; i++)
             {
                 EditorGUILayout.BeginHorizontal();
 
                 EditorGUILayout.TextArea(nodes[i].name);
 
                 animatronicScript.nodeData[i].action = (Animatronic.Actions)EditorGUILayout.EnumPopup(animatronicScript.nodeData[i].action);
                 animatronicScript.nodeData[i].weight = EditorGUILayout.Toggle(animatronicScript.nodeData[i].weight);
 
                 EditorGUILayout.EndHorizontal();
             }
 
             EditorGUILayout.EndVertical();
         }
     }
 }
Sanchez

Avatar de l’utilisateur
Max
Messages : 8765
Inscription : 30 Juil 2011 13:57
Contact :

Re: Problème de EditorGUILayout.BeginVertical();

Message par Max » 18 Jan 2020 16:20

Bonjour,

Tu n'as pas de messages d'erreur dans la console ?
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

Avatar de l’utilisateur
Maxime66410
Messages : 12
Inscription : 03 Fév 2018 19:12
Contact :

Re: Problème de EditorGUILayout.BeginVertical();

Message par Maxime66410 » 18 Jan 2020 16:33

C'est ça qui et bizarre il y a aucune erreur :/
Sanchez

Avatar de l’utilisateur
Maxime66410
Messages : 12
Inscription : 03 Fév 2018 19:12
Contact :

Re: Problème de EditorGUILayout.BeginVertical();

Message par Maxime66410 » 18 Jan 2020 16:37

Arf j'ai compris, quand je met "Play" ça s'affiche tu vois
Image

Et quand tu te remet normalement ça s'enlève
Sanchez

Avatar de l’utilisateur
Max
Messages : 8765
Inscription : 30 Juil 2011 13:57
Contact :

Re: Problème de EditorGUILayout.BeginVertical();

Message par Max » 18 Jan 2020 17:55

Donc ton soucis est en partie réglé... ou pas ?
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

Avatar de l’utilisateur
Maxime66410
Messages : 12
Inscription : 03 Fév 2018 19:12
Contact :

Re: Problème de EditorGUILayout.BeginVertical();

Message par Maxime66410 » 18 Jan 2020 18:11

Presque, je ne peux rien modifier dans l'éditeur et quand j'appuie sur "Play" ça apparaît bien, sauf que moi je le veux sans que je puisse appuyer sur "Play", parce que sur "Play" ça sauvegarde pas.

C'est embêtant puisque il y a plusieurs actions :

Code : Tout sélectionner

    [System.Serializable]
    public enum Actions
    {
        TPose = 0,
        Stage,
        Standing,
        OutsideCamera,
        OusideWindow,
        OutSideDoor,
        Kill
    }
Est du coup ça reste sur TPose, quand tu met "Play" :/

Alors que de base je peux le modifier directement dans l'inspector sans que j'appuie sur "Play".

Mais il ne s'affiche pas malheureusement :c
Sanchez

Avatar de l’utilisateur
Max
Messages : 8765
Inscription : 30 Juil 2011 13:57
Contact :

Re: Problème de EditorGUILayout.BeginVertical();

Message par Max » 18 Jan 2020 19:01

là c'est pas évident juste en lisant ton code, encore moins de l'essayer vue qu'il manque pas mal d'éléments.
Mais j'ai l'impression que tu cherches à afficher en mode edit dans l'inspector des éléments qui ne sont initialisés qu'en mode Play, d’où le fait que tu obtiennes dans l'inspector le bon résultat qu'a ce moment là.
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

Avatar de l’utilisateur
Maxime66410
Messages : 12
Inscription : 03 Fév 2018 19:12
Contact :

Re: Problème de EditorGUILayout.BeginVertical();

Message par Maxime66410 » 18 Jan 2020 19:13

J'imagine que tu voudrais les deux scripts entièrement, ça irai mieux pour t'aider ^^

(Même si en soit ils y sont déjà)
Sanchez

Avatar de l’utilisateur
Max
Messages : 8765
Inscription : 30 Juil 2011 13:57
Contact :

Re: Problème de EditorGUILayout.BeginVertical();

Message par Max » 18 Jan 2020 19:28

Ben par exemple on a pas la def de la classe Node.
Idem pour la ligne IAManager[].....
Il est toujours difficile de transposer tel quel les scripts pour tester, car souvent il manque pas mal d'éléments périphériques qui sont difficilement occultables ;)
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

Avatar de l’utilisateur
Maxime66410
Messages : 12
Inscription : 03 Fév 2018 19:12
Contact :

Re: Problème de EditorGUILayout.BeginVertical();

Message par Maxime66410 » 18 Jan 2020 19:30

En faite je veux que ça s'affiche comme ça sans appuyer sur "Play"
Image

Pour que je puisse modifier sans que ça se reset a chaque "Play" vu comme il initialise que quand le jeu ce lance, et normalement il ne devrais même pas faire ça, il devrais être déjà comme ça
Image

Mais du coup il et comme ça et je suis complètement bloqué...
Image
Sanchez

Verrouillé

Revenir vers « Scripting »