Delen via


Mesh Visual Scripting-knooppuntverwijzing

Ga naar het artikel Overzicht van Visual Scripting

Op interval

Op interval-gebeurtenisknooppunt

Het gebeurtenisknooppunt Bij interval activeert een scriptstroom met regelmatige tijdsintervallen die worden gesynchroniseerd over 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 op te slaan met hetzelfde interval dat wordt geactiveerd door verschillende knooppunten met interval .

Bij status gewijzigd

Bij gebeurtenisknooppunt 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 een geschikte callback niet 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:

Schermafbeeldingen van het gebeurtenisknooppunt Bij status gewijzigd 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 Bij status gewijzigd af te dwingen 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 het een invoer observeert tegen hogere runtimekosten.

Schermafbeeldingen van het gebeurtenisknooppunt Bij status gewijzigd dat verbinding maakt met het resultaat van het vergelijken van een knooppunt Variabele ophalen met een letterlijk geheel getal, waarbij 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 ingepakt.
  • 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 om het antwoord van de gebruiker op te slaan wanneer het dialoogvenster wordt gesloten door een knop te selecteren. (Als het antwoord leeg blijft, wordt het antwoord genegeerd.)
  • 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 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 het 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 wordt het gebeurtenisknooppunt Bij status gewijzigd op alle clients geactiveerd om te reageren op het antwoord van de gebruiker.

Knooppunten voor fysica-gebeurtenissen

De knooppunten voor fysicagebeurtenissen Op Trigger Enter, Bij Trigger Exit, On Collision Enter en On Collision Exit zijn betrouwbaar in een netwerk. Standaard worden deze gebeurtenissen op betrouwbare wijze geactiveerd op alle clients in de ruimte; Als de natuurkundige collider die door deze gebeurtenisknooppunten wordt waargenomen echter binnen het bereik van een Local Physics Scope-onderdeel valt, worden de gebeurtenissen betrouwbaar geactiveerd op precies één client. Dit maakt het mogelijk dat de scriptstromen die worden geactiveerd, de gedeelde status betrouwbaar lezen en schrijven (bijvoorbeeld een variabele voor gedeelde score bijwerken).

Beveiliging

Mesh beschermt gebruikers tegen bedreigingsscenario's zoals deze:

  • Gecompromitteerde scène-inhoud, bijvoorbeeld schadelijke 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.

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 acceptatielijst om visuele scripts te valideren om de toegang tot bepaalde typen Unity-onderdelen en een veilige subset van hun eigenschappen te beperken.

Tijdens scèneruntime 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 voor hun potentiële schrijfbewerkingen voor scènes.

Voorbeelden:

  • Een kwaadwillend lokaal visualscript wil alle avatars bobble heads geven. Daartoe wordt geprobeerd de hele scène te scannen op GameObjects die avatar-hoofden 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 zetten. 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 is ontworpen om zoiets te doen, negeert de lokale client de externe invoer.

Zie ook