Mesh 201 Tutorial Chapter 5: Get live weather data
In dit hoofdstuk gaan we verder naar Station 4, waar u leert hoe u Mesh Cloud Scripting gebruikt om gegevens op te halen uit interne of openbare bronnen en deze vervolgens te visualiseren in een 3D-context in uw scène. Zoals we in hoofdstuk 1 hebben besproken, is het uitgangspunt dat deelnemers in uw ervaring dit station kunnen gebruiken om te leren over weersomstandigheden op drie locaties waar ze een windturbine bouwen. De deelnemers kunnen op een interactieve wereldbol klikken en live weergegevens bekijken vanaf de drie locaties.
Stations 4 en 5 bevinden zich aan het andere uiteinde van het Sphere Terrace vanaf de vorige stations.
Instellen voor dit station
Als u dit station wilt voltooien, moet u een sleutel invoegen in een code waarmee u toegang hebt tot de API voor weergegevens. Laten we deze sleutel nu ophalen, zodat u uw werkstroom later niet hoeft te onderbreken.
Navigeer naar de registratiepagina van weatherapi.com.
Volg op die pagina de instructies om u aan te melden voor het proefabonnement.
U moet het e-mailbericht openen dat ze u sturen, uw account activeren en zich vervolgens aanmelden op hun site.
Klik op de welkomstpagina op Pro Plus-plan.
Voor deze zelfstudie is het niet nodig om een betaald abonnement te hebben. Klik op de knop Downgrade onder Gratis en klik vervolgens in het dialoogvenster dat verschijnt op Sluiten.
Selecteer API in het menu aan de linkerkant onder Dashboard.
Selecteer de knop Kopiëren naast het veld API-sleutel , plak de sleutel in een teksteditor en sla het tekstbestand op.
Als de kopieerbewerking is geslaagd, verandert de tekst op de knop Kopiëren in Gekopieerd.
De Mesh Cloud Scripting-prefab toevoegen
Open de beginpuntscène .
Klik in de hiërarchie met de rechtermuisknop in een lege ruimte en selecteer vervolgens in het contextmenu Mesh Toolkit>Cloud Scripting instellen.
Hiermee wordt een GameObject met de naam Mesh Cloud Scripting toegevoegd dat een onderdeel met dezelfde naam heeft gekoppeld.
Elk GameObject dat u onder het beheer van cloudscripts wilt hebben, moet als onderliggend element worden toegevoegd aan het Mesh Cloud Scripting GameObject.
Opmerking: het Mesh Cloud Scripting-onderdeel bevat een eigenschap met de naam Visual Scripting inschakelen. Hierdoor kunnen Mesh-cloudscripts communiceren met visuele scripts. U kunt dit niet-geselecteerd laten.
Voeg de prefab toe voor Station 4
Navigeer in de projectmap naar Assets>MeshCloudScripting en sleep vervolgens 4 - GlobeWithCloudScripting naar de hiërarchie en plaats het als een onderliggend object in Mesh Cloud Scripting.
Deze prefab biedt het tekstvak en een geneste prefab met de naam Aarde die het model voor de wereldbol bevat.
Pas uw weergave aan zodat u direct voor station 4 bent.
De API-sleutel voor weatherapi.com invoegen
Selecteer in de hiërarchie het Mesh Cloud Scripting GameObject.
Ga in Inspector naar het mesh cloudscriptonderdeel en klik vervolgens op Toepassingsmap openen.
Hiermee opent u de map met de bestanden voor Mesh Cloud Scripting in de Windows Bestandenverkenner.
Open het bestand met de naam appsettings. UnityLocalDev.json in de code-editor. De laatste vier regels code in het bestand bevatten configuratie-instellingen.
U hoeft niets te doen voor deze eerste regel ...
"WEATHER_API_URI": "http://api.weatherapi.com/v1/current.json?key="
... Maar vervang in de volgende regel de tekst 'Plak de Weer-API-sleutel hier' door de API-sleutel die u eerder hebt gekopieerd.
U kunt de laatste twee regels negeren. In het volgende hoofdstuk werken we met die regels.
Sla het JSON-bestand op en sluit het.
Het csproj-bestand bijwerken
Open in het venster Bestandenverkenner waarin de Mesh Cloud Scripting-bestanden worden weergegeven het bestand met de naam StartingPoint.csproj in de code-editor.
Kopieer de volgende tekst:
<ItemGroup> <Folder Include="WeatherAPI\" /> </ItemGroup>
... en plak het in het bestand net boven
</Project>
aan het einde van het bestand.Dit zorgt ervoor dat we enkele scripts uit de lokale Map WeatherAPI opnemen.
Sla het bestand op en sluit het bestand.
Code toevoegen die de wereldbol interactief maakt
Open in het venster Bestandenverkenner waarin de Mesh Cloud Scripting-bestanden worden weergegeven het bestand met de naam App.cs in de code-editor.
Het eerste wat we doen is ervoor te zorgen dat wanneer een deelnemer op de wereldbol klikt, de weergaven van de weergegevens worden vernieuwd.
Zoek in het App.cs bestand de eerste opmerking 'Code hier plakken' in de
StartAsync()
methode.Kopieer de onderstaande code.
var refreshButton = _app.Scene.FindFirstChild("Earth", true) as TransformNode; var refreshButtonNode = refreshButton?.FindFirstChild<InteractableNode>(true); if (refreshButtonNode != null) { refreshButtonNode.Selected += async (_, _) => { await GetCurrentWeather(_latlong); }; }
Vervang de opmerking 'Code hier plakken' die u zojuist hebt gevonden door de code die u hebt gekopieerd.
De code doet het volgende:
- Initialiseert de variabele refreshButton met het Earth GameObject in de scène.
- Initialiseert de variabele refreshButtonNode met de InteractableNode die is gekoppeld aan het Earth GameObject. (Als een GameObject in de scène een Mesh Interactable Setup component attached, which Earth does, the component adds a Mesh Cloud Scripting InteractableNode).
- Wanneer een deelnemer op de wereldbol klikt, wordt de geselecteerde gebeurtenis van de InteractableNode geactiveerd en wordt de methode GetCurrentWeather aangeroepen. Hiermee wordt een HTTP-aanvraag gegenereerd om de weergegevens op te halen.
Sla het bestand op.
Uw werk testen
Sla het project op in de Unity-editor en druk vervolgens op de knop Afspelen.
Je avatar wordt aan de zijkant van het Sphere Terrace met de eerste drie stations gespoeid. Navigeer naar de tegenovergestelde kant van het Sphere Terrace en plaats uzelf voor Station 4.
Als u de weergegevens wilt zien, klikt u ergens op de wereldbol. De temperatuur, gemiddelde windsnelheid en piekwindsnelheid worden getoond voor drie steden: 1) Lagos, Nigeria, 2) Dublin, Ierland en 3) Redmond, WA.
Wanneer u klaar bent, drukt u nogmaals op de knop Afspelen om de afspeelmodus af te sluiten.