Delen via


Naslaginformatie over mesh-visualscriptingknooppunten

Ga naar het overzichtsartikel visualscripting

Op interval

Op interval-gebeurtenisknooppunt

Het gebeurtenisknooppunt On Interval activeert een scriptstroom in regelmatige tijdsintervallen die worden gesynchroniseerd voor alle clients in dezelfde ruimte.

  • Interval: Interval (in seconden) tussen gebeurtenissen.
  • Vertraging: Vertraging (in seconden) vóór de eerste gebeurtenis. U kunt dit gebruiken om gebeurtenissen te interleaveen met hetzelfde interval dat wordt geactiveerd door verschillende Intervalknooppunten .

Bij status gewijzigd

Op status gewijzigd gebeurtenisknooppunt dat verbinding maakt met een Get Variable-knooppunt

Het gebeurtenisknooppunt On State Changed wordt geactiveerd wanneer een van de invoerwaarden de waarde wijzigt. Dit is een krachtig mechanisme waarmee uw scripts kunnen reageren op statuswijzigingen die worden veroorzaakt door gebruikersinteractie of andere visuele scripts, zowel lokaal als op andere clients in dezelfde ruimte.

  • Waarden: Hiermee geeft u op hoeveel invoerpoorten u wilt observeren. Er kunnen maximaal 10 invoerpoorten tegelijk worden waargenomen. Bij statuswijziging wordt geactiveerd wanneer een van deze triggers de waarde ervan wijzigt.
  • In 0, In 1 en meer in deze volgorde: Invoer waargenomen voor statuswijzigingen. U kunt elk gegevensknooppunt koppelen aan deze invoer: Variabele of een onderdeeleigenschap ophalen (exemplaar of statisch).
  • Uit 0, Out 1 en meer in deze volgorde: Uitvoer die overeenkomt met de invoer In 0 (enzovoort) die de waargenomen waarden retourneren.

Wanneer u scriptvariabelen of onderdeeleigenschappen bekijkt, werkt On State Changed meestal door intern de juiste callbacks te registreren, om te voorkomen dat de invoer voortdurend opnieuw moet worden geëvalueerd. Wanneer een geschikte callback niet beschikbaar is, zoals in het volgende voorbeeld, wordt het knooppunt On State Changed rood en wordt het deelvenster Graph Inspector gewaarschuwd dat de invoer niet efficiënt kan worden waargenomen en daarom is uitgeschakeld:

Schermopnamen van het gebeurtenisknooppunt On State Changed die verbinding maken met het resultaat van het vergelijken van een get-variabele-knooppunt met een letterlijk geheel getal, geen polling.

In dit geval kunt u Polling toestaan in het deelvenster Graph Inspector selecteren om Wijzigingen in statuswijzigingen af te dwingen door voortdurend de invoer opnieuw te evalueren. Het knooppunt behoudt een gele balk bovenaan om u eraan te herinneren dat er een invoer wordt waargenomen tegen hogere runtimekosten.

Schermopnamen van het gebeurtenisknooppunt On State Changed die verbinding maken met het resultaat van het vergelijken van een get-variabele-knooppunt met een letterlijk geheel getal, waardoor polling mogelijk is.

Dialoogvenster weergeven

Schermafbeelding van het actieknooppunt Dialoogvenster weergeven

Het knooppunt Dialoogvenster weergeven geeft een dialoogvenster weer met een aangepast bericht en een of meer knoppen waarmee de gebruiker het dialoogvenster kan sluiten.

  • Tekst: Bericht dat wordt weergegeven in het dialoogvenster. De berichttekst wordt zo nodig in tekstterugloop weergegeven.
  • Knoppen: Selectie van knoppen die aan de gebruiker moeten worden weergegeven. De volgende knoppen kunnen worden weergegeven: OK, Annuleren, Ja, Nee, Bevestigen, Volgende, Opnieuw proberen, Doorgaan, Verlaten.
  • Resultaat: Variabelenaam waarin het antwoord van de gebruiker moet worden opgeslagen wanneer het dialoogvenster wordt gesloten door een knop te selecteren. (Als het antwoord leeg blijft, wordt het antwoord verwijderd.)
  • Doel: GameObject met een variabelenonderdeel om het antwoord van de gebruiker op te slaan.

Als een resultaatvariabele is gedefinieerd, wordt deze opnieuw ingesteld op een lege tekenreeks zodra het knooppunt Dialoogvenster weergeven is ingevoerd en asynchroon ingesteld op het antwoord van de gebruiker wanneer de gebruiker een knop selecteert om het dialoogvenster te sluiten. De opgeslagen waarde is het niet-gelokaliseerde label van de knop uit de bovenstaande lijst. Gebruik een gebeurtenisknooppunt On State Changed om te reageren op het antwoord van de gebruiker, zoals in het volgende voorbeeld:

Schermopname van het dialoogvenster weergeven waarin het gebruikersantwoord in een variabele wordt verzameld, gevolgd door een knooppunt Status gewijzigd dat reageert op de wijziging van de variabele

De resultaatvariabele kan lokaal of gedeeld zijn. Als het wordt gedeeld, wordt het antwoord van de gebruiker verzonden naar alle clients in dezelfde ruimte en wordt het gebeurtenisknooppunt On State Changed geactiveerd op alle clients om te reageren op het antwoord van de gebruiker.

Knooppunten van fysica-gebeurtenissen

De knooppunten van de fysicagebeurtenis bij Trigger Enter, Bij Afsluiten van trigger, Bij Aanrijding invoeren en Bij Botsing afsluiten zijn betrouwbaar genetwerkt. Deze gebeurtenissen worden standaard betrouwbaar geactiveerd op alle clients in de ruimte; Als de fysicabotser die door deze gebeurtenisknooppunten wordt waargenomen, echter binnen het bereik van een lokaal fysicabereikonderdeel valt, worden de gebeurtenissen betrouwbaar geactiveerd op precies één client. Dit maakt het mogelijk voor de scriptstromen die worden geactiveerd om de gedeelde status betrouwbaar te lezen en schrijven (bijvoorbeeld een variabele voor gedeelde score bijwerken).

Beveiliging

Mesh beschermt gebruikers tegen bedreigingsscenario's zoals deze:

  • Gecompromitteerde scène-inhoud, bijvoorbeeld kwaadwillende pogingen om toegang te krijgen tot gevoelige lokale gegevens.
  • Aangetast client- of transportkanaal, bijvoorbeeld kwaadwillende pogingen om ontoegankelijke externe gegevens op andere clients te lezen of te schrijven.

Hiervoor voert Mesh visuele scripts uit in een sandbox (zoals JavaScript in een webbrowser).

Bij het opstarten van de scène gebruikt Mesh een gecureerde allowlist om visuele scripts te valideren om de toegang tot bepaalde typen Unity-onderdelen en een veilige subset van hun eigenschappen te beperken.

Tijdens de runtime van de scène beperkt Mesh de toegang tot bepaalde delen van de scène:

  • Lokaal: door toegang tot Mesh-interne gegevens en andere gevoelige gegevens te voorkomen.
  • Extern: door te controleren of de auteur van de scène dit deel van de scène wil wijzigen. Dit wordt gedaan door visualscripts aan de kant van de ontvanger statisch te analyseren voor hun potentiële scène-schrijfbewerkingen.

Voorbeelden:

  • Een schadelijk lokaal visualscript wil alle avatars bobble heads geven. Daartoe probeert het de hele scène te scannen op GameObjects die avatarkoppen vertegenwoordigen. Mesh filtert automatisch de scanresultaten om het avatarsysteem uit te sluiten.
  • Een kwaadwillende externe client wil de scène afbreken door alle GameObjects ondersteboven te spiegelen. Hiervoor wordt een eigenschapsupdate verzonden waarmee de verticale schaal van elk GameObject in de scène wordt ingesteld. Omdat er echter geen visueel script op de ontvangende client zo is ontworpen, negeert de lokale client de externe invoer.

Zie ook