Dela via


Mesh Visual Scripting-nodreferens

Gå till översiktsartikeln Visual Scripting

Vid intervall

På händelsenoden Intervall

Händelsenoden Vid intervall utlöser ett skriptflöde med regelbundna tidsintervall som synkroniseras mellan alla klienter i samma rum.

  • Intervall: Intervall (i sekunder) mellan händelser.
  • Fördröjning: Fördröjning (i sekunder) före den första händelsen. Du kan använda detta för att interleave händelser med samma intervall som utlöses av olika noder med på intervall .

Vid ändrad tillstånd

Vid tillstånds ändrad händelsenod som ansluter till en Get Variable-nod

Händelsenoden Vid tillstånd har ändrats utlöses när någon av dess indata ändrar dess värde. Det här är en kraftfull mekanism som gör att dina skript kan svara på tillståndsändringar som orsakas av användarinteraktion eller andra visuella skript, både lokalt och på andra klienter i samma rum.

  • Värden: Anger hur många indataportar du vill observera. Upp till 10 indataportar kan observeras samtidigt. Vid Tillståndsändring utlöses när någon av dem ändrar sitt värde.
  • I 0, I 1 och mer i den här sekvensen: Indata som observerats för tillståndsändringar. Du kan koppla valfri datanod till dessa indata: Hämta variabel eller någon komponentegenskap (instans eller statisk).
  • Ut 0, Ut 1 och mer i den här sekvensen: Utdata som motsvarar indata i 0 (och så vidare) som returnerar de observerade värdena.

När du observerar skriptvariabler eller komponentegenskaper fungerar vid ändrade tillstånd vanligtvis genom att registrera lämpliga återanrop internt, vilket undviker behovet av att ständigt omvärdera sina indata. När en lämplig motringning inte är tillgänglig, som i följande exempel, blir noden På tillståndsfördelat röd och panelen Graph Inspector varnar för att indata inte kan observeras effektivt och därför inaktiveras:

Skärmbilder av händelsenoden Vid tillstånd ändrades och ansluter till resultatet av att jämföra en Get Variable-nod med en heltalsliteral, ingen avsökning.

I det här fallet kan du välja Tillåt avsökning i panelen Graph Inspector för att framtvinga Ändringar i tillståndet för att identifiera ändringar genom att ständigt utvärdera dess indata. Noden behåller ett gult fält längs toppen för att påminna dig om att den observerar indata till en ökad körningskostnad.

Skärmdumpar av händelsenoden Vid tillstånd ändrades som ansluter till resultatet av att jämföra en Get Variable-nod med en heltalsliteral, tillåt avsökning.

Visa dialogruta

Skärmbild av åtgärdsnoden Visa dialogruta

Noden Visa dialogruta visar en dialogruta med anpassat meddelande och en eller flera knappar som gör att användaren kan stänga dialogrutan.

  • Text: Meddelandet visas i dialogrutan. Meddelandetexten kommer att omslutas om det behövs.
  • Knappar: Val av knappar som ska presenteras för användaren. Följande knappar kan visas: OK, Avbryt, Ja, Nej, Bekräfta, Nästa, Försök igen, Fortsätt, Lämna.
  • Resultat: Variabelnamn för att lagra användarens svar i när de stänger dialogrutan genom att välja en knapp. (Om svaret lämnas tomt ignoreras det.)
  • Mål: GameObject med en variabelkomponent för att lagra användarens svar.

Om en resultatvariabel har definierats återställs den till en tom sträng så snart noden Visa dialogruta har angetts och anges till användarens svar asynkront när användaren väljer en knapp för att stänga dialogrutan. Det lagrade värdet är knappens oallokerade etikett från listan ovan. Använd en händelsenod som ändrats vid tillstånd för att reagera på användarens svar, t.ex. i följande exempel:

Skärmbild av noden Visa dialogruta som samlar in användarsvaret i en variabel, följt av en nod vid tillståndsändring som svarar på variabeländringen

Resultatvariabeln kan vara lokal eller delad. Om den delas skickas användarens svar till alla klienter i samma rum och händelsenoden Vid tillstånd har ändrats på alla klienter för att reagera på användarens svar.

Noder för fysikhändelser

Noderna för fysikhändelsen vid inmatning av utlösare, vid utlösaravslut, vid kollisions retur och vid kollisionsavslut är på ett tillförlitligt sätt nätverkskopplade. Som standard utlöses dessa händelser på ett tillförlitligt sätt på alla klienter i rummet. Men om fysiken kolliderar som observerats av dessa händelsenoder är inom omfånget för en komponent för lokal fysikomfattning utlöses händelserna på ett tillförlitligt sätt på exakt en klient. Detta gör det möjligt för skriptflöden som utlöses att på ett tillförlitligt sätt läsa och skriva delat tillstånd (till exempel uppdatera en variabel för delad poäng).

Säkerhet

Mesh skyddar användare från hotscenarier som dessa:

  • Komprometterat sceninnehåll – till exempel skadliga försök att komma åt känsliga lokala data.
  • Komprometterad klient- eller transportkanal – till exempel skadliga försök att läsa eller skriva otillgängliga fjärrdata på andra klienter.

För att uppnå detta kör Mesh visuella skript i en sandbox-miljö (till exempel JavaScript i en webbläsare).

Vid start av scen använder Mesh en kuraterad lista för att validera visuella skript för att begränsa åtkomsten till vissa typer av Unity-komponenter och en säker delmängd av deras egenskaper.

Vid scenkörning begränsar Mesh åtkomsten till vissa delar av scenen:

  • Lokalt: genom att förhindra åtkomst till mesh interna och andra känsliga data.
  • Fjärranslutning: genom att kontrollera att scenens författare avser att den här delen av scenen ska ändras. Detta görs genom att statiskt analysera visuella skript på mottagarens sida för deras potentiella scenskrivningar.

Exempel:

  • Ett skadligt lokalt visuellt skript vill ge alla avatarer bobble huvuden. Därför försöker den skanna hela scenen efter GameObjects som representerar avatarhuvuden. Mesh filtrerar automatiskt genomsökningsresultaten för att exkludera avatarsystemet.
  • En skadlig fjärrklient vill förstöra scenen genom att vända alla GameObjects upp och ner. För att uppnå det skickar den en egenskapsuppdatering som anger den lodräta skalan för varje GameObject i scenen. Men eftersom inget visuellt skript på den mottagande klienten är utformat för att göra något liknande ignorerar den lokala klienten fjärrindata.

Se även