Dieser Leitfaden richtet sich an Menschen, die nie oder kaum mit der Codierung in Kontakt waren. Es wird Ihnen beim Schreiben Ihrer ersten einfachen Skripte in Space Engineers helfen. Wenn Sie nach einem fortgeschrittenen Handbuch suchen, empfehle ich Dieses hier von Malware.
Haftungsausschluss
Englisch ist nicht meine Muttersprache, also erwarten Sie bitte kein sprachliches Meisterwerk. Außerdem habe ich nie Codierung/Programmierung gelernt und mein Wissen über Google -Forschung und nervige Freunde mit dummen Fragen zur Codierung in C# erstellt. Daher kann dieser Leitfaden falsche Begriffe oder kleinere Fehler enthalten. Ich bin mir jedoch sicher, dass dieser Leitfad.
Beispielskript
Ich denke, der beste Weg, um Scripting in Weltraumingenieuren zu lernen. Wir werden einen Rotor zu einem bestimmten Punkt in diesem ersten machen lassen.
Am Anfang müssen wir dem Spiel mitteilen, welchen Block wir hinweisen wollen. Wir speichern den Block in eine Variable, um das Skript lesbarer zu machen. Erstellen wir daher eine Variable für unseren Rotor:
Jede Variable braucht einen Typ („Mymotorstator“) und ein Name („Rotor“). Der Typ gibt an, welchen Wert wir in der Variablen speichern können. Dieser Wert kann eine Zahl oder nur eine Text sein, aber in unserem Fall handelt es sich um einen Rotorblock. Der Typ dafür ist „Mymotorstator“. Wir können einfach einen Namen auswählen, aber es wird empfohlen, eines zu nehmen, das das Skript leicht zu lesen und zu verstehen macht, Besonders wenn es komplexer wird.
Jede Codezeile (wie ein Satz) braucht ein Semikolon „;“ am Ende. Dies ist leicht zu vergessen, aber nur ein fehlendes Semikolon lässt das gesamte Skript nicht wie beabsichtigt funktionieren.
Jetzt geben wir der Variablen ihren Wert: Der Rotorblock. In unserem Fall sagen wir nur, dass der Rotorblock benannt ist ‚Super Mega Station Rotor‘
Der Typ wird nur erwähnt, wenn wir zum ersten Mal eine Variable erstellen. Um einer Variablen einen Wert zu geben, verwenden wir einfach die „=“ Symbol.
Dieser Teil ist die Methode, um den Block in unser Raster einzubeziehen. Wir schreiben einfach den genauen Namen des Blocks zwischen den beiden „“. Mach dir keine Sorgen um den Text zu sehr, Wir werden später darauf zurückkommen. Am Ende schreiben wir den Typ erneut, um sicherzustellen, dass der Block, der unserer Variablen zugeordnet wird, den richtigen Typ enthält. Wenn Sie dies vergessen und es zum Beispiel ein LCD -Panel namens namens gibt „Super Mega Station Rotor“ Es würde der Variablen zugeordnet werden. Dies mag nicht notwendig klingen, aber verwenden Sie es einfach, um ein sichereres Skript zu haben.
Jetzt jedes Mal, wenn wir die Variable verwenden ‚Rotor‘ In unserem Drehbuch geht das Spiel unseren Rotorblock an.
Lassen Sie uns den Rotor jetzt an einen bestimmten Punkt verschieben. Wir wollen, dass es sich dreht, um zu drehen 45 Grad mit einer positiven Geschwindigkeit. Also müssen wir tun 2 Dinge. Der erste besteht darin, seinen maximalen Winkel auf einzustellen 45 Grad. Der zweite wird darin bestehen, dem Rotor seine Geschwindigkeit zu geben.
Beginnen wir mit Schritt 1:
Zuerst sagen wir dem Spiel, dass wir den Rotorblock verwenden möchten. Dann schreiben wir a „.“ und fügen Sie die Eigenschaft oder Methode hinzu, die wir verwenden möchten. Diese Eigenschaft benötigt einen Wert, um die maximale Grenze des Rotors auf festzulegen. Also schreiben wir „45“. Der „F“ ist die Art des Wertes (In diesem Fall eine Nummer, Aber ich werde später darauf zurückkommen)
Kommen wir zur Geschwindigkeitseinstellung. Dies funktioniert ziemlich ähnlich, nur die Eigenschaft ist anders. Wir setzen die Geschwindigkeit auf 1 in diesem Fall.
Und das ist es. Sobald das Skript ausgeführt wird, Der Rotor dreht sich mit 1 UPM, bis er trifft 45 Grad.
Das ganze Skript würde so aussehen:
Ich werde es zusammenfassen:
Zuerst sparen wir den Block(S) in eine Variable, um ein lesbareres Skript zu haben und einfacher zu verwenden. (Sie könnten es auch so schreiben:
Aber ich finde es offensichtlich schöner, stattdessen Variablen zu verwenden.
Dann können wir Eigenschaften und Methoden verwenden, um die Einstellungen der Blöcke zu ändern.
Die Grundlagen, die für die Codierung in Weltraumingenieuren erforderlich sind
Mach dir keine Sorge, Sie müssen sich nicht sofort an alles erinnern, was hier aufgeführt ist, Ich werde ein Kapitel mit einer Liste von allem hinzufügen, was Sie brauchen könnten. Aber in diesem Teil werde ich versuchen, diese grundlegenden Dinge zu erklären, die für fast jedes Skript benötigt werden.
„//“ Und „/* */“ Markieren Sie Kommentare in Ihrem Skript. Diese werden bei der Ausführung ignoriert. Dies bedeutet, dass Sie etwas erklären oder Ihrem Code einfach eine Überschrift geben können. „//“ Vorbereitete Arbeiten für die aktuelle Linie und „/* */“ schließt den Kommentar ein. Das Kommentieren hilft beim Verständnis eines Skripts und sollte nicht unterschätzt werden.
Mathematische und logische Operatoren
Beginnen wir mit einfachen mathematischen und logischen Operatoren. Dies sollte ein Kinderspiel sein
Ich werde einfach die wichtigsten auflisten.
„+“: Zusatz
„-„: Subtraktion
„*“: Multiplikation
„/“: Division
„%“: Modulo; Dies wird den Rest einer Division zurückgeben. Beispiele: (5 / 2 = 2; Rest = 1) => 5 % 2 = 1; 7 % 4 = 3;
„==“: Gleich; Dies wird zum Vergleich der Werte verwendet.
„!=“: Ungleich; im Grunde das Gegenteil von „==“.
„>“, „>=“, „<„, „<=“: Größer/kleiner als (oder gleich); Wird auch zum Vergleich von Werten verwendet.
„&&“: Und; Alle damit verbundenen Variablen müssen in Ihrem Vergleich übereinstimmen
„||“: Oder; Mindestens eine der damit verbundenen Variablen muss in Ihrem Vergleich übereinstimmen
„=“: In Skripten wird dies hauptsächlich zum Zuweisen von Werten verwendet.
Variable Typen
Lassen Sie uns mit variablen Typen fortfahren:
„bool“: Diese Art von Variable kann nur einen von diesen beiden Werten haben: Es ist beides „WAHR“ oder „FALSCH“.
„Zeichenfolge“ : Dies ist nur ein einfacher Text. Ein Beispiel wäre, Text in eine Variable zu speichern, um ihn später auf einem LCD -Bildschirm anzuzeigen.
„int“ : Dies ist eine Zahl, aber ohne Dezimalstellen. Der Wert wird nicht gerundet; Stattdessen werden alle Dezimalstellen einfach abgeschnitten. A 4.9 gerettet als „int“ Ist 4.
„schweben“ : Dies ist auch eine Zahl, aber es hat Dezimalstellen.
„doppelt“: Die dritte Art von Zahl. Es ist ähnlich wie „schweben“ Aber die Zahl kann größer sein. Dies ist nicht so wichtig für Basis -Skripten. Ich würde empfehlen, Float zu verwenden, es sei denn, eine Methode erfordert Doppel als Eingabe. Wenn Sie einen Zahlenwert in Ihrem Skript zuweisen „doppelt“. Behandelt werden als „schweben“ Sie müssen eine schreiben „F“ Hinter der Nummer, wie „4.9F“.
„Imymotorstator“: Das sollte bekannt sein. Es ist ein Blocktyp von Weltraumingenieuren. Es gibt viele verschiedene und wir werden es vorerst ignorieren.
Initialisieren (erstellen) Eine Variable, die wir einfach den Typ und den variablen Namen schreiben und mit einem Semikolon enden:
Wir können ihm danach einen Wert geben:
Wir können diese beiden Schritte auch gleichzeitig ausführen:
Es ist möglich, mit den drei Zahlentypen zu berechnen „int“, „schweben“ Und „doppelt“.
Wichtig: Eine Nummer in a speichern „Zeichenfolge“ Funktioniert, aber Sie können mathematische Operatoren nicht verwenden, da es als Text angesehen wird. You can imagine it like calculating with letters.
Advanced logical operators
I’ll assume that I don’t need to explain how the basic true/false logic system works. But if somebody needs help with that, just write a comment.
Let’s explain the use of more advanced logical operations.
If-function
Let’s start with the „if-function“. It compares 2 parameters and only executes the included code if the comparison is correct/true. I think the easiest way of explaining it is again via examples.
Let’s say we have an already rotating rotor and when it’s at 30 degrees a light should switch on.
As in our first script we start by saving our blocks into variables.
Beginnen wir mit dem „if-function“.
Das ist der Kopf. Das Argument ist zwischen den geschrieben „()“. Diese Eigenschaft braucht den Winkel, um strahlend zu sein. 0.5236 rad in Grad umgewandelt ist 30.
Das ist der Körper. Es enthält den Code zwischen dem „{}“. Es schließt einen Codebereich ein, der zur Funktion gehört.
Zunächst prüft diese Funktion, ob das Argument in der „()“ ist wahr und führen dann den Code zwischen dem aus „{}“ Wenn das Argument korrekt ist. Wenn nicht, Es wird den Code zwischen dem ignorieren „{}“.
Das können wir auch ‚Aktualisierung‘ Die „if-function“ mit einem „anders“. Dies ermöglicht es uns, Code in dem Fall auszuführen, dass das Argument falsch ist. Wenn die Aussage in der „if-function“ ist wahr, Die „anders“ wird ignoriert.
In diesem Beispiel möchten wir, dass das Licht ausschaltet, wenn der Rotor nicht an ist 30 Grad.
Lastly you can also add an „if else“. It will act as an „anders“ but it also has a condition which must be true to execute its code. Let’s say we want have 4 lights in different colours and we want a specific light to be turned on for the four quarters of the rotor angle.
At first we have to create variables for our new lights.
Let’s start building our „if-function“
This checks if the angle is 0 or above but also under 90 Grad (1.571 rad). Both conditions must be met for the statement to be true. If you would is the „Or-operator“ („||“) statt der „Und Betreiber“ („&&“) Nur eine der Bedingungen muss zutreffen, damit die Aussage wahr ist.
Das grüne Licht schaltet sich ein, Alle anderen Lichter schalten sich aus.
Wir werden dies jetzt für die anderen Quartale wiederholen.
3.142 rad gleich 180 Grad. Wir müssen nicht überprüfen, ob es oben ist 90 Grad, weil dies „if else“ wird nur überprüft, wenn die „Wenn“ Die Bedingung ist falsch und somit ist der Winkel oben 90 Grad.
4.712 rad gleich 270 Grad.
Für den letzten Fall müssen wir keine verwenden „sonst wenn“ Weil die einzigen Winkel übrig sind, die wir sowieso in unserem Zustand wollen (270-360 Grad).
Schalten
Die nächste Funktion, die wir verwenden können, ist die „schalten“. Es ist ziemlich ähnlich wie bei a „Wenn“ Und „if else“ Konstellation, aber alle Ihre Bedingungen müssen nur auf einem Wert einer Variablen basieren. Außerdem können Sie es nur mit a vergleichen „==“. Es würde also nicht für unser letztes Beispiel funktionieren, seit wir brauchten ‚kleiner als‘ („<„) für unsere Bedingungen.
Im folgenden Beispiel ändern wir es in die Bedingungen, die ein genauer Winkel und kein Bereich sind. Sagen wir also, wir wollen 4 Fälle. 0, 90, 180 Und 270 Grad. Jeder Winkel wird eines unserer Lichter an und alle anderen ausschalten.
Das ist der Kopf. Zwischen dem „()“ Der Wert, den wir überprüfen möchten, ist geschrieben. Dies kann natürlich auch eine Variable sein.
Der Winkel wird mit dem verglichen „0“. Sie können sich dies als eine vorstellen „Wenn (Rotor.angle == 0)“.
Durch die Pause wird das Drehbuch aus dem gesamten Schalter herausgesprungen, nachdem der richtige Fall gefunden wurde. Dies ist wichtig, um die Ausführungszeit zu sparen, Da es keine Zeit verschwendet wird, alle anderen Fälle zu überprüfen.
Dies ist optional. Dieser Fall wird verwendet, wenn keine anderen Fälle mit der Bedingung übereinstimmen. In unserem Beispiel wird dies verwendet, wenn der Winkel dazwischen ist 0, 90, 180 Und 270 Grad, aber nicht eine dieser genauen Zahlen. Wir können zum Beispiel alle Lichter ausschalten.
Für Schleife
Der letzte für den Moment ist der „Für Schleife“. Es wird verwendet, um den gleichen Code für eine Gruppe von Variablen zu wiederholen. Um diese Gruppe von Variablen zu erstellen, müssen wir etwas über die lernen „Liste“. Es schafft eine Gruppe der Objekte, die Sie in die Liste gesteckt haben; Zum Beispiel alle Lichtblöcke in einem Netz. Das Erstellen einer neuen Liste unterscheidet sich geringfügig vom Erstellen einer Variablen:
Wir haben eine Liste mit dem Namen erstellt „Lichter“. Auch die Liste benötigt einen Typ, Dies bedeutet also, dass eine Liste keine Objekte eines anderen Typs enthalten kann. In diesem Fall ist unser Typ „ImyInteriorlicht“. Dies ist die Art von Lichtblöcken in Weltraumingenieuren, aber Sie können auch eine Liste von Zahlen mit dem Typ erstellen „int“.
Füllen wir nun die Liste mit allen Lichtblöcken in unserem Netz:
Dies stellt alle Blöcke aus der Gruppe aus „Super Mega Station Lichter“ in die zwischen den genannte Liste „()“ Am Ende.
Um ein einzelnes Objekt in unserer Liste anzusprechen, verwenden wir diesen Ausdruck: „Lichter[0]“. Jedes Objekt in der Liste hat eine Nummer, auf die es reagiert. Dies beginnt immer bei „0“ für das erste Objekt und wird nach oben gezählt. Wenn Sie eine Liste erstellen mit 20 Objekte, auf das das erste Objekt reagiert „0“ und der letzte wird darauf reagieren „19“. Die Zahl zwischen den geschriebenen „[]“ befasst sich mit dem einzelnen Objekt. Um das dritte Licht einzuschalten, würden wir es so schreiben:
Die Liste ist eingerichtet, Also lass uns mit dem fortfahren „Für Schleife“:
Das ist der Kopf. Zwischen dem „()“ wir haben 3 Verschiedene Parameter, die durch ein Semikolon getrennt sind. Der erste („int i = 0“) erstellt eine Variable benannt „ich“ mit einem Wert von „0“. Der dritte („i++“) Fügt nur hinzu „1“ zu unserer Variablen „ich“ Jedes Mal, wenn die Schleife ausgeführt wird. Der zweite Parameter („ich < Lichtsendungen“) definiert, wann die Schleife enden sollte. Dies bedeutet, dass die Schleife so lange ausgeführt wird „ich“ ist niedriger als ein bestimmter Wert. Wenn Sie schreiben würden „ich < 20“ Die Schleife würde einfach ausgeführt werden 20 mal. In dieser Situation habe ich Licht verwendet., Das gibt uns die Menge an Objekten, dass die Liste die Liste „Lichter“ enthält. Dies bedeutet im Grunde das „für Schleife“ wird so oft ausgeführt wie die Anzahl der Objekte in unserer Liste.
Dies ist der Körper der „für Schleife“. Durch Verwendung der Variablen „ich“, Wir beginnen mit dem ersten Objekt („0“) in unserer Liste. Da fügen wir hinzu „1“ Zu „ich“ mit jeder Schleife, Wir gehen auch durch unsere Liste der Objekte durch 1. So am Ende der „für Schleife“ Jedes Licht auf der Liste wurde eingeschaltet.
Diese erweiterten logischen Operatoren sollten Ihnen beim Erstellen Ihrer eigenen Skripte helfen.
Eigenschaften und Methoden
Dies könnte einer der schwierigsten Schritte für einen Anfänger sein. In Weltraumingenieuren gibt es eine große Anzahl verschiedener Blöcke und daher gibt es viele verschiedene Blocktypen, Methoden und Eigenschaften. Wenn Sie den Unterschied zwischen Eigenschaften und Methoden kennenlernen möchten, Sie müssten jemand anderen fragen, Da ich es nicht wirklich weiß, aber das spielt keine Rolle.
Der beste Weg, um mit ihnen zu arbeiten, besteht darin, alles in diesem zu suchen
[github.com]Während Sie etwas skriptieren. Riesige Credits für Malware, die es erstellt hat. Dort finden Sie alle Blocktypen und ihre Methoden und Eigenschaften (Grundsätzlich können Sie mit dem Block tun). Es gibt einige Dinge, die Sie wissen müssen, um diese zu verwenden.
Um eine Eigenschaft/Methode zu verwenden, müssen Sie Ihre Blockvariable schreiben, Dann fügen Sie a hinzu „.“ und schreiben Sie dann Ihre Eigenschaft/Methode.
Die meisten Eigenschaften können entweder einen Wert erhalten oder festlegen (Einige erhalten nur Werte). Sie entscheiden dies, indem Sie entweder einen Wert geben, indem Sie so etwas hinzufügen “ = Wert“ oder nicht. Hier sind zwei Beispiele, die Ihnen eine Idee geben, wie dies funktioniert:
Einen Wert bekommen:
Dies spart den Winkel in unsere Variable „Winkel“.
Wert setzen:
Dies ermöglicht das Rotorschloss.
In der Anleitung sehen Sie auch, welcher Typ die Eigenschaft/Methode zurückgibt oder als Eingabe benötigt wird. Das ist sehr wichtig. Das Eigentum „Rotorlock“ braucht a „bool“ was bedeutet, dass es nur akzeptiert „WAHR“ oder „FALSCH“ wie in- oder Ausgabe.
Schreiben Sie Ihr erstes Skript
Wenn Sie den programmierbaren Block öffnen, sehen Sie dies:
Wir werden die ignorieren „Programm“ Und „Speichern“ Funktion für den Moment. Ihr gesamter Code wird zwischen den beiden platziert „{}“ des „Hauptsächlich“ Funktion. Dies ist der Teil, der ausgeführt wird, wenn das Skript verwendet wird. Wenn Sie das erste Skript vom Beginn dieses Handbuchs implementieren würden, Es würde so aussehen:
Ich rate Ihnen dringend, Ihre Skripte außerhalb von Weltraumingenieuren zu schreiben. Der beste Weg für mich ist die Verwendung von Visual Studio zusammen mit der Erweiterung der Malware. Es bietet viele Funktionen, die Sie während der Codierung lieben werden. Eine Anleitung zum Installieren und Gebrauch wird ebenfalls gefunden
[github.com]im Malware -Leitfaden.
Spickzettel
Mathematische und logische Operatoren:
„+“
„-“
„*“
„/“
„%“
„==“
„!=“
„>“, „>=“, „<„, „<=“
„&&“
„||“
„=“
Werttypen:
„bool“: wahr/falsch
„Zeichenfolge“: Text
„int“: Nummer ohne Dezimalstellen
„schweben“: Nummer mit Dezimalstellen
„doppelt“: größere Zahl
„Liste“: Gruppe von Objekten
„ImyInteriorlicht“: Beispiel eines Blocktyps
Advanced logical operators:
Eigenschaften/Methoden:
Das ist alles, was wir heute dafür teilen Raumfahrtingenieure Führung. Dieser Leitfaden wurde ursprünglich erstellt und geschrieben von 33IROBOT33. Für den Fall, dass wir diesen Leitfaden nicht aktualisieren können, Sie können das neueste Update finden, indem Sie diesem folgen Verknüpfung.