Nous sommes actuellement le 18 Janvier 2017, 16:58

TutorialScenario et TutorialPage

Pour populariser ou demander de l'aide pour vos propres add-ons!

TutorialScenario et TutorialPage

Message par Mandrin » 31 Décembre 2016, 23:53

Bonjour,

Je suis en train de créer des tutos (bouton Training dans l'IHM de KSP) pour KSP 1.2.2 et je rencontre la difficulté suivante : les popups avec Gene Kerman, notre instructeur, n'apparaissent pas.

Le code source de ma classe :
Code : Tout sélectionner
using UnityEngine;

namespace RSSROTutorial
{

    public class RSSROTutorial101 : TutorialScenario
    {
        TutorialPage welcome, conclusion;

        protected override void OnAssetSetup()
        {
            instructorPrefabName = "Instructor_Gene";
        }

        protected override void OnTutorialSetup()
        {
            ScreenMessages.PostScreenMessage("GOGOGO !!!");

            welcome = new TutorialPage("welcome");
            welcome.windowTitle = "Orbiting 101";

            welcome.OnEnter = (KFSMState st) =>
            {
                instructor.StopRepeatingEmote();
                //InputLockManager.SetControlLock((ControlTypes.STAGING | ControlTypes.THROTTLE), "RSSROTutorial101Lock");
            };
            welcome.OnDrawContent = () =>
            {
                GUILayout.Label("Salut !!!", GUILayout.ExpandHeight(true));

                if (GUILayout.Button("Next")) Tutorial.GoToNextPage();
            };
            Tutorial.AddPage(welcome);

            conclusion = new TutorialPage("conclusion");
            conclusion.windowTitle = "Orbiting 101 - Complete!";
            conclusion.OnEnter = (KFSMState st) =>
            {
                instructor.PlayEmote(instructor.anim_true_smileB);

            };
            conclusion.OnDrawContent = () =>
            {
                GUILayout.Label("Salut encore !!!");


                if (GUILayout.Button("Finish"))
                {
                    Destroy(this);
                }
            };
            Tutorial.AddPage(conclusion);

            Tutorial.StartTutorial(welcome);
        }

    }
}


J'ai bien le message "GOGOGO" qui apparait à l'écran au lancement du tutorial ce qui prouve que ma dll est bien chargée et lancée mais par contre, je flood le ksp.log avec le message :
Code : Tout sélectionner
[EXC 02:16:32.947] ArgumentException: You can only call GUI functions from inside OnGUI.
   UnityEngine.GUIUtility.CheckOnGUI ()
   UnityEngine.GUI.get_skin ()
   UnityEngine.GUILayout.Label (System.String text, UnityEngine.GUILayoutOption[] options)
   RSSROTutorial.RSSROTutorial101.<OnTutorialSetup>b__3_1 ()
   TutorialScenario.Update ()


Je comprends bien le problème mais j'ai du mal à trouver une solution à ce OnGUI. D'autant que j'ai utilisé le code d'un ancien dév de KSP et un exemple commenté. Tous les deux, même si je les copie-colle posent le même problème :
http://forum.kerbalspaceprogram.com/ind ... -code-r13/
https://github.com/ilo/KSP-TrainingTuto ... lPlugin.cs

En revanche, j'ai essayé le code tout bête ci-dessous, et là, ça marche nickel mais ce n'est pas le texte que je veux bien sûr (TutorialOrbit101 est une sous-classe de TutorialScenario et décrit un tutoriel de mise en orbite il me semble) :
Code : Tout sélectionner
using UnityEngine;

namespace RSSROTutorial
{

    public class RSSROTutorial101 : TutorialOrbit101
    {
    }
}

Ce qui me fait dire que ces coquins de développeurs ont rajouté une subtilité depuis la publication des exemples que j'ai essayé ;)

Merci par avance pour l'aide que vous pourrez m'apporter.
Mandrin
Avatar de l’utilisateur
Message(s) : 61
Inscription : 21 Février 2016, 23:52
Localisation : Non renseignée

Retour vers Aide au développement

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit