Freigeben über


Visual Scripting-Knotenreferenz für Gitter

Wechseln Sie zum Übersichtsartikel " Visual Scripting"

Im Intervall

Auf Intervall-Ereignisknoten

Der On Interval-Ereignisknoten löst einen Skriptfluss in regelmäßigen Zeitintervallen aus, die über alle Clients im selben Raum synchronisiert werden.

  • Intervall: Intervall (in Sekunden) zwischen Ereignissen.
  • Verzögerung: Verzögerung (in Sekunden) vor dem ersten Ereignis. Sie können dies verwenden, um Ereignisse mit demselben Intervall zu überlappen, das von verschiedenen On Interval-Knoten ausgelöst wird.

Bei Status geändert

On State Changed event node connecting to a Get Variable node

Der Ereignisknoten "On State Changed " wird ausgelöst, wenn ein Eingaben seinen Wert ändert. Dies ist ein leistungsstarker Mechanismus, mit dem Ihre Skripts auf Zustandsänderungen reagieren können, die durch Benutzerinteraktionen oder andere visuelle Skripts verursacht werden, sowohl lokal als auch auf anderen Clients im selben Raum.

  • Werte: Gibt an, wie viele Eingabeports Sie beobachten möchten. Bis zu 10 Eingabeports können gleichzeitig beobachtet werden. Bei Zustandsänderung wird ausgelöst, wenn eine dieser Werte geändert wird.
  • In 0, In 1 und mehr in dieser Sequenz: Eingaben, die für Zustandsänderungen beobachtet wurden. Sie können einen beliebigen Datenknoten an diese Eingaben anfügen: Abrufen einer Variablen oder einer beliebigen Komponenteneigenschaft (Instanz oder statisch).
  • Ausgabe 0, Out 1 und mehr in dieser Sequenz: Gibt die In 0 (usw.) Eingaben aus, die die beobachteten Werte zurückgeben.

Bei der Beobachtung von Skriptvariablen oder Komponenteneigenschaften wird " On State Changed " in der Regel durch die interne Registrierung geeigneter Rückrufe ausgeführt, ohne dass die Eingaben ständig neu ausgewertet werden müssen. Wenn ein entsprechender Rückruf nicht verfügbar ist, wie im folgenden Beispiel, wird der Knoten "Bei Zustand geändert " rot angezeigt, und der Graph Inspector-Bereich warnt, dass die Eingabe nicht effizient beobachtet werden kann und daher deaktiviert ist:

Screenshots des Ereignisknotens

In diesem Fall können Sie im Bereich "Graph Inspector" die Option "Umfrage zulassen" auswählen, um zu erzwingen, dass änderungen erkannt werden, indem Sie ihre Eingaben ständig erneut auswerten. Der Knoten behält einen gelben Balken am oberen Rand bei, um Sie daran zu erinnern, dass eine Eingabe zu erhöhten Laufzeitkosten beobachtet wird.

Screenshots des Ereignisknotens

Dialogfeld anzeigen

Screenshot des Aktionsknotens

Der Knoten "Dialogfeld anzeigen" zeigt ein Dialogfeld mit benutzerdefinierter Meldung und eine oder mehrere Schaltflächen an, mit denen der Benutzer das Dialogfeld schließen kann.

  • Text: Meldung, die im Dialogfeld angezeigt wird. Der Nachrichtentext wird bei Bedarf umbrochen.
  • Schaltflächen: Auswahl von Schaltflächen, die dem Benutzer angezeigt werden sollen. Die folgenden Schaltflächen können angezeigt werden: "OK", "Abbrechen", "Ja", "Nein", "Bestätigen", "Weiter", "Weiter", "Verlassen".
  • Ergebnis: Variablenname zum Speichern der Antwort des Benutzers beim Schließen des Dialogfelds durch Auswählen einer Schaltfläche. (Wenn sie leer gelassen wird, wird die Antwort verworfen.)
  • Ziel: GameObject mit einer Variablenkomponente zum Speichern der Antwort des Benutzers.

Wenn eine Ergebnisvariable definiert ist, wird sie auf eine leere Zeichenfolge zurückgesetzt, sobald der Knoten "Dialogfeld anzeigen" eingegeben wird, und die Antwort des Benutzers asynchron festgelegt, wenn der Benutzer eine Schaltfläche auswählt, um das Dialogfeld zu schließen. Der gespeicherte Wert ist die nicht lokalisierte Bezeichnung der Schaltfläche aus der obigen Liste. Verwenden Sie einen Ereignisknoten "On State Changed ", um auf die Antwort des Benutzers zu reagieren, wie im folgenden Beispiel:

Screenshot des Knotens

Die Ergebnisvariable kann lokal oder freigegeben sein. Wenn sie freigegeben ist, wird die Antwort des Benutzers an alle Clients im selben Raum gesendet, und der Knoten "On State Changed " wird auf allen Clients ausgelöst, um auf die Antwort des Benutzers zu reagieren.

Knoten für Physikereignisse

Die Physikereignisknoten "On Trigger Enter", "On Trigger Exit", "On Collision Enter" und "On Collision Exit " sind zuverlässig vernetzt. Standardmäßig werden diese Ereignisse für alle Clients im Raum zuverlässig ausgelöst; Wenn die von diesen Ereignisknoten beobachtete Physik-Kollidieren jedoch in einem Bereich einer Komponente "Lokaler Physikbereich " liegt, lösen die Ereignisse zuverlässig auf genau einem Client aus. Dies ermöglicht es den Skriptflüssen, die ausgelöst werden, um den freigegebenen Zustand zuverlässig zu lesen und zu schreiben (z. B. eine Shared Score-Variable aktualisieren).

Sicherheit

Mesh schützt Benutzer vor Bedrohungsszenarien wie den folgenden:

  • Kompromittierte Szeneninhalte , z. B. böswillige Versuche, auf vertrauliche lokale Daten zuzugreifen.
  • Kompromittierter Client- oder Transportkanal , z. B. böswillige Versuche, auf Remotedaten auf anderen Clients zu lesen oder zu schreiben.

Um dies zu erreichen, führt Mesh visuelle Skripts in einer Sandbox (z. B. JavaScript in einem Webbrowser) aus.

Beim Szenenstart verwendet Mesh eine kuratierte Zulassungsliste, um visuelle Skripts zu überprüfen, um den Zugriff auf bestimmte Arten von Unity-Komponenten und eine sichere Teilmenge ihrer Eigenschaften zu beschränken.

Zur Szenenlaufzeit beschränkt Mesh den Zugriff auf bestimmte Teile der Szene:

  • Lokal: durch Verhindern des Zugriffs auf interne Gitter und andere vertrauliche Daten.
  • Remote: Indem Sie überprüfen, ob der Autor der Szene diesen Teil der Szene ändern will. Dies geschieht, indem visuelle Skripts auf der Seite des Empfängers für ihre potenziellen Szenenschreibvorgänge statisch analysiert werden.

Beispiele:

  • Ein böswilliges lokales Skript möchte allen Avataren bobble Köpfe geben. Zu diesem Zweck versucht es, die gesamte Szene nach GameObjects zu scannen, die Avatarköpfe darstellen. Gitter filtert automatisch die Scanergebnisse, um das Avatarsystem auszuschließen.
  • Ein böswilliger Remoteclient möchte die Szene durch Kippen aller GameObjects auf den Kopf stellen. Um dies zu erreichen, sendet sie eine Eigenschaftsaktualisierung, die die vertikale Skalierung jedes GameObjects in der Szene festlegt. Da jedoch kein visuelles Skript auf dem empfangenden Client darauf ausgelegt ist, eine ähnliche Aktion auszuführen, ignoriert der lokale Client die Remoteeingabe.

Weitere Informationen