Mesh 201 Självstudie kapitel 5: Hämta väderdata live
I det här kapitlet går vi vidare till Station 4 där du får lära dig hur du använder Mesh Cloud Scripting för att hämta data från interna eller offentliga källor och sedan visualisera dem i en 3D-kontext i din scen. Som vi diskuterade i kapitel 1 är premissen här att deltagare i din erfarenhet kan använda den här stationen för att lära sig om väderförhållanden på tre platser där de överväger att bygga en vindkraftspark. Deltagarna kommer att kunna klicka på en interaktiv jordglob och visa väderdata från de tre platserna.
Stationerna 4 och 5 ligger i andra änden av Sphere Terrace från de tidigare stationerna.
Konfigurera för den här stationen
För att kunna slutföra den här stationen måste du infoga en nyckel i kod som gör att du kan komma åt väderdata-API:et. Nu hämtar vi den här nyckeln så att du inte behöver avbryta arbetsflödet senare.
Gå till weatherapi.com registreringssidan.
På den sidan följer du anvisningarna för att registrera dig för utvärderingsplanen.
Du måste öppna e-postmeddelandet som de skickar till dig, aktivera ditt konto och sedan logga in på deras webbplats.
På sidan Välkommen tillbaka klickar du på "Pro Plus Plan".
I den här självstudien är det inte nödvändigt att ha en betald plan. Klicka på knappen Nedgradera under "Kostnadsfri" och klicka sedan på Stäng i dialogrutan som visas.
På menyn till vänster under Instrumentpanel väljer du API.
Välj knappen Kopiera bredvid fältet API-nyckel, klistra in nyckeln i en textredigerare och spara sedan textfilen.
Om kopieringsåtgärden lyckas ändras texten på knappen Kopiera till Kopierad.
Lägg till förfab för Mesh Cloud Scripting
Öppna startpunktsscenen.
Högerklicka i ett tomt utrymme i hierarkin och välj sedan Mesh Toolkit>Set up Cloud Scripting i snabbmenyn.
Detta lägger till en GameObject med namnet Mesh Cloud Scripting som har en komponent med samma namn.
Alla GameObject som du tänker ha under kontroll av molnskript måste läggas till som ett underordnat till Mesh Cloud Scripting GameObject.
Obs! Mesh Cloud Scripting-komponenten innehåller en egenskap med namnet Aktivera visuellt skript. På så sätt kan Mesh-molnskript kommunicera med visuella skript. Du kan lämna det avmarkerat.
Lägg till prefab för Station 4
I mappen Projekt navigerar du till Tillgångar>MeshCloudScripting och drar sedan 4 – GlobeWithCloudScripting till hierarkin och placerar den som ett underordnat objekt till Mesh Cloud Scripting.
Den här prefab innehåller textinformationsrutan och en kapslad prefab med namnet Earth som innehåller modellen för världen.
Justera vyn så att du är direkt framför och tittar på Station 4.
Infoga API-nyckeln för weatherapi.com
I hierarkin väljer du Mesh Cloud Scripting GameObject.
I Inspector navigerar du till Mesh Cloud Scripting-komponenten och klickar sedan på Öppna programmapp.
Då öppnas mappen som innehåller filerna för Mesh Cloud Scripting i Windows Istraživač datoteka.
Öppna filen med namnet appsettings. UnityLocalDev.json i kodredigeraren. De sista fyra kodraderna i filen innehåller konfigurationsinställningar.
Du behöver inte göra något för den här första raden ...
"WEATHER_API_URI": "http://api.weatherapi.com/v1/current.json?key="
... men på nästa rad ersätter du texten "Klistra in väder-API-nyckeln här" med DEN API-nyckel som du kopierade tidigare.
Du kan ignorera de två sista raderna – vi kommer att arbeta med dem i nästa kapitel.
Spara och stäng JSON-filen.
Uppdatera csproj-filen
Öppna filen StartingPoint.csproj i kodredigeraren i det Istraživač datoteka fönstret som visar Mesh Cloud Scripting-filerna.
Kopiera följande text:
<ItemGroup> <Folder Include="WeatherAPI\" /> </ItemGroup>
... och klistra sedan in den i filen precis ovanför
</Project>
i slutet av filen.Detta säkerställer att vi inkluderar några skript från den lokala WeatherAPI-mappen .
Spara och stäng filen.
Lägg till kod som gör världen interaktiv
Öppna filen med namnet App.cs i kodredigeraren i Istraživač datoteka-fönstret som visar Mesh Cloud Scripting-filerna.
Det första vi ska göra är att se till att väderdata uppdateras när en deltagare klickar på världen.
I App.cs-filen hittar du den första kommentaren
StartAsync()
"Klistra in kod här" i metoden.Kopiera koden nedan.
var refreshButton = _app.Scene.FindFirstChild("Earth", true) as TransformNode; var refreshButtonNode = refreshButton?.FindFirstChild<InteractableNode>(true); if (refreshButtonNode != null) { refreshButtonNode.Selected += async (_, _) => { await GetCurrentWeather(_latlong); }; }
Ersätt kommentaren "Klistra in kod här" som du precis hittade med den kod som du kopierade.
Koden gör följande:
- Initierar variabeln refreshButton med Earth GameObject i scenen.
- Initierar variabeln refreshButtonNode med InteractableNode kopplad till Earth GameObject. (Om en GameObject i scenen har en Mesh Interaktionsbar installationskomponent bifogad, vilket Earth gör, komponenten lägger till ett Mesh Cloud Scripting InteractableNode).
- När en deltagare klickar på världen utlöses händelsen InteractableNode's Selected och anropar metoden GetCurrentWeather . Detta genererar en HTTP-begäran för att hämta väderdata.
Spara filen.
Testa ditt arbete
Spara projektet i Unity-redigeraren och tryck sedan på knappen Spela upp.
Din avatar skapas på sidan av Sphere Terrace som innehåller de tre första stationerna. Navigera till den motsatta sidan av Sphere Terrace och placera dig sedan framför Station 4.
Om du vill se väderdata klickar du var som helst på jorden. Temperaturen, den genomsnittliga vindhastigheten och den högsta vindhastigheten visas för tre städer: 1) Lagos, Nigeria, 2) Dublin, Irland och 3) Redmond, WA.
När du är klar trycker du på knappen Spela upp igen för att avsluta uppspelningsläget.