2017-02-14 3 views
0

Wenn ich zum Beispiel ein Spiel habe, das nur aus einer einzigen Szene besteht, wähle ich in dieser Szene zwischen dem normalen Spielmodus oder dem Tutorial-Spielmodus. Das Spiel hat 4 verschiedene Objekte: einen Ball, 4 Quadrate und einen quadratischen Controller. Im Tutorial-Modus möchte ich dem Benutzer einen Zeigepfeil geben, während das Spiel angehalten wird, und weitermachen, nachdem der Benutzer das Objekt gedrückt hat, auf das gezeigt wird. Wenn ich ein Skript für den normalen Modus und ein anderes für den Tutorial-Modus mache, mache ein Skript und überprüfe, ob ein Boolesches Lernprogramm in jeder Funktion wahr oder falsch ist (Boolesch sollte wahr sein, wenn der Benutzer die Lerntaste drückt) oder mache eine Art von Vorverarbeitung?Wie mit zwei Spielmodi im selben Skript umgehen?

Im squarescript zum Beispiel:

void OnCollisionEnter2D() { 
if (isTutorial) { 
    PauseGame(); 
    arrow.position = GetRelativePosition(); 
    arrow.setActive(true); 
} else { 
    if (canCollide) { 
    score++; 
    } else { 
    GameOver(); 
    } 
} 

Im ballscript:

void OnMouseDown() { 
    if (!isTutorial) { 
     return; 
    } 

    ResumeGame(); 
} 

Antwort

1

Durch diese Verhaltensweisen innerhalb Strukturierung wenn Aussagen, es ist der Code schwer machen, mit zu verstehen und zu arbeiten. Stellen Sie sich vor, wie dies aussehen wird, wenn Sie sich dafür entscheiden, dass eines der Quadrate die Punktzahl des Spielers erhöhen UND einen Tutorial-Pfeil zeigen soll.

Teilen Sie die Verhaltensweisen in separate Objekte auf. Für das Quadrat könnte es so etwas wie ein TutorialCollisionHandler, ScoreCollisionHandler und HazardCollisionHandler sein. Dann können Sie verschiedene Quadrate erstellen, indem Sie einfach ändern, welche Kollisions-Handler zu ihnen hinzugefügt werden, Sie müssen nicht einmal Code schreiben!

Je nachdem, welchen Modus der Benutzer wählt, können Sie einfach eine andere Mischung von Quadraten verwenden. Das gleiche Prinzip kann mit anderen Tutorial- oder Spiel-spezifischen Verhaltensweisen verwendet werden.

+0

Also der TutorialCollisionHandler, ScoreCollisionHandler und HazardCollisionHandler sind separate Skripte, die durch Code hinzugefügt werden können? – user24028

+0

MonoBehaviours, die Sie wie ein Collider oder Starrkörper zum Square GameObject hinzufügen können. – CaTs

3

Wir wissen nichts von Ihrem Spiel, so dass es schwer zu beantworten ist. Aber als Faustregel gilt: Je weniger man tippen muss, desto besser. Überlegen Sie auch, was passiert, wenn Sie dem Spiel neue Funktionen hinzufügen müssen, müssen Sie zurückgehen und Tonnen in Ihrem Code ändern? Wenn ja, schreiben Sie wahrscheinlich gut Code.

Als Versuch, eine konkrete Antwort zu geben, würde ich sagen Sie eine Erbschaft machen sollte, erstellen Sie eine Klasse Level und Unterklassen Tutorial und FreePlay oder ähnlich machen, die von Level erbt.

Dann können Sie all „allgemeine“ Funktionalität in der Basisklasse hinzufügen und die spezifischen Dinge gehen in den Unterklassen

+0

Mein Spiel ist ein ziemlich einfaches Spiel, das 4 verschiedene Arten von Objekten und etwa 6 Skripte enthält. Ich brauche die Skripts sehr, um basierend auf dem Lernmodus oder dem normalen Modus anders zu handeln. – user24028

+0

OK, also setze es in eine Variable, in welchem ​​Modus das Spiel ist, und dann kannst du basierend auf dem Spielmodus verschiedene Dinge tun. Wie diese Antwort sagt, liefern Sie nicht viel und es ist schwer zu wissen, was Sie wollen. – jdmdevdotnet

+0

Ich habe weitere Informationen hinzugefügt, bitte informieren Sie mich über weitere Informationen, die Sie benötigen könnten. – user24028

Verwandte Themen