Delen via


Naslaginformatie over Mesh Visual Scripting-knooppunten

Ga naar het overzichtsartikel Visual Scripting

Bij interval

Gebeurtenisknooppunt interval

Het gebeurtenisknooppunt Bij interval activeert een scriptstroom in regelmatige tijdsintervallen die worden gesynchroniseerd op 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 knooppunten op interval .

Bij status gewijzigd

Gebeurtenisknooppunt bij status gewijzigd verbinding maken met een knooppunt Variabele ophalen

Het gebeurtenisknooppunt Bij status gewijzigd 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 de waarde wijzigt.
  • In 0, In 1 en meer in deze reeks: Invoer waargenomen voor statuswijzigingen. U kunt elk gegevensknooppunt koppelen aan deze invoer: Variabele ophalen of een componenteigenschap (exemplaar of statisch).
  • Out 0, Out 1 en meer in deze reeks: Uitvoer die overeenkomt met de Invoer in 0 (enzovoort) die de waargenomen waarden retourneren.

Bij het observeren van scriptvariabelen of onderdeeleigenschappen werkt Bij status gewijzigd meestal door de juiste callbacks intern te registreren, waardoor de invoer niet voortdurend opnieuw moet worden geëvalueerd. Wanneer er geen geschikte callback beschikbaar is, zoals in het volgende voorbeeld, wordt het knooppunt Bij status gewijzigd rood en waarschuwt het deelvenster Graph Inspector dat de invoer niet efficiënt kan worden waargenomen en daarom is uitgeschakeld:

Schermopnamen van het gebeurtenisknooppunt On State Changed dat verbinding maakt met het resultaat van het vergelijken van een knooppunt Variabele ophalen met een letterlijk geheel getal, geen polling.

In dit geval kunt u Polling toestaan selecteren in het deelvenster Graph Inspector om On State Changed af te dwingen om wijzigingen te detecteren door de invoer voortdurend opnieuw te evalueren. Het knooppunt behoudt een gele balk aan de bovenkant om u eraan te herinneren dat er invoer wordt waargenomen tegen hogere runtimekosten.

Schermopnamen van het gebeurtenisknooppunt On State Changed dat verbinding maakt met het resultaat van het vergelijken van een knooppunt Variabele ophalen met een letterlijk geheel getal, waardoor polling is toegestaan.

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 indien nodig met 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 de gebruiker het antwoord opslaat wanneer het dialoogvenster wordt gesloten door een knop te selecteren. (Als u dit leeg laat, wordt het antwoord genegeerd.)
  • Doel: GameObject met een onderdeel Variabelen 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 wordt ingevoerd en wordt deze 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 Bij status gewijzigd om te reageren op het antwoord van de gebruiker, zoals in het volgende voorbeeld:

Schermafbeelding van het knooppunt Dialoogvenster weergeven waarin het gebruikersantwoord in een variabele wordt verzameld, gevolgd door een knooppunt Bij 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 activeert het gebeurtenisknooppunt Bij status gewijzigd op alle clients om te reageren op het antwoord van de gebruiker.

Knooppunten voor fysica-gebeurtenissen

De knooppunten van de fysicagebeurtenis bij Enter, Bij trigger afsluiten, Bij botsing invoeren en Bij botsingsafsluiten zijn betrouwbaar in een netwerk. Standaard worden deze gebeurtenissen op betrouwbare wijze geactiveerd op alle clients in de ruimte; Als de fysica-collider die door deze gebeurtenisknooppunten wordt waargenomen echter binnen het bereik van een onderdeel Local Physics Scope valt, worden de gebeurtenissen betrouwbaar geactiveerd op precies één client. Dit maakt het mogelijk dat de scriptstromen die worden geactiveerd, op betrouwbare wijze de gedeelde status lezen en schrijven (bijvoorbeeld een gedeelde scorevariabele 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.
  • Gecompromitteerde client of transportkanaal, bijvoorbeeld kwaadwillende pogingen om ontoegankelijke externe gegevens op andere clients te lezen of te schrijven.

Om dit te bereiken, voert Mesh visuele scripts uit in een sandbox (zoals JavaScript in een webbrowser).

Bij het opstarten van de scène gebruikt Mesh een gecureerde acceptatielijst 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-internals en andere gevoelige gegevens te voorkomen.
  • Extern: door te controleren of de auteur van de scène van plan is dit deel van de scène te wijzigen. Dit wordt gedaan door visuele scripts aan de kant van de ontvanger statisch te analyseren op hun mogelijke scène-schrijfbewerkingen.

Voorbeelden:

  • Een kwaadwillend lokaal visualscript wil alle avatars bobble heads geven. Daartoe wordt geprobeerd 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 ontleden door alle GameObjects ondersteboven te draaien. Om dit te bereiken, 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 is ontworpen om iets dergelijks te doen, negeert de lokale client de externe invoer.