TutorialScenario et TutorialPage

Pour populariser ou demander de l'aide pour vos propres add-ons!
Avatar de l’utilisateur
Mandrin
Messages : 61
Inscription : 21 février 2016, 23:52

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
Malah
Messages : 1488
Inscription : 02 novembre 2014, 02:18
Localisation : Rennes
Contact :

Re: TutorialScenario et TutorialPage

Message par Malah » 30 janvier 2017, 18:21

Salut, désolé, j'étais pas trop présent ses dernières semaines. Mais oué, depuis les tutoriels ont totalement été repondu et encore ce n'est rien de le dire, puisque le bug que tu possèdes provient simplement du passage à Unity 5 où toutes les intefaces doivent passer par OnGUI (sur Unity 4 on pouvait déjà le faire, mais les moddeurs aimaient tout particulièrement passer par un autre render pour avoir la main sur le tout).

Tu n'as pas de chance, car il y a très très peux de mods de tutoriels, donc presque aucun exemple pour s'aider. La seule solution ... fouiller l'API, première marche : https://kerbalspaceprogram.com/api/clas ... nario.html

Edit : Pour être simple : tu dois virer tous les GUILayout autres joyeusetées faisant référence à l'interface

Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit