
sveiki! Ja esat spēļu izstrādātājs un vēlaties izveidot spēli, kas tiek mitināta interneta datoru blokķēdē, jums ir paveicies.
Es izveidoju vienkāršu Unity projektu, lai demonstrētu maka integrāciju un NFT iegūšanu - tieši jums, tāpēc tagad varat sākt strādāt pie patiešām "jautrākajām" spēles daļām, neuztraucoties par to, kā pārlūkprogrammai izsaukt Javascript no Unity C#.
Šīs maka integrācijas demonstrāciju varat skatīt vietnē:
ti5gm-bqaaa-aaaai-ab7oa-cai.raw.ic0.app
Projekta kods atrodas:
github.com/tommygames/ic-unity-template

Piezīme. Šajā projektā ir integrēts npm modulis ar nosaukumu react-unity-webgl, lai ļautu Unity C# sazināties ar pārlūkprogrammu Javascript Plug Wallet integrācijai. Ja jums nav nepieciešama maka integrācija vai Javascript savietojamība, neievērojiet šo rokasgrāmatu, jo ir vienkāršāki veidi. lai izvietotu vienkāršas Unity spēles IC.
Ja vēlaties redzēt, kā es iestatīju projektu no nulles, pārejiet uz sadaļu IC Unity projekta izveide no nulles, ja vēlaties tikai lejupielādēt un izvietot Unity projektu, pārejiet uz sadaļu IC Unity projekta izvietošana Lai redzētu, kā kods darbojas, lūdzu, izlasiet tālāk esošo sadaļu "Kā tas darbojas".
kā tas darbojas
Plug Wallet integrācijai ir nepieciešami 2 līdzekļi:
Unity C# notikumu nosūtīšana uz pārlūkprogrammu Javascript
Pārlūka Javascript nosūtīšanas pasākumi Unity
Abiem mēs izmantojam npm moduli ar nosaukumu react-unity-webgl, kura dokumentāciju var atrast šeit:
npmjs.com/package/react-unity-webgl
Pirmajai funkcijai mēs izmantojam Unity spraudni .jslib, lai rakstītu pseido-Javascript (bieži sauktu par UnityScript). Vairāk par to lasiet šeit:
docs.unity3d.com/Manual/webgl-interactingwithbrowserscripting.html
Ja jums ir instalēts modulis react-unity-webgl, šie .jslib spraudņi var nosūtīt notikumus uz React pārlūkprogrammu Javascript, izsaucot dispatchReactUnityEvent("EventName"), kas ir ieviests Unity projekta failā PlugUtils.jslib.
Lai izsauktu šīs funkcijas, tās ir jāimportē C# — tā piemēru var redzēt faila PlugUtils.cs klasē PlugUtilsInternal.
Otrajai funkcijai mēs izsaucam unityContext.send("GameObjectName", "FunctionName", jsonData) no React javascript koda, jūs varat redzēt tās ieviešanu mūsu React lietojumprogrammas klasē PlugUtils.js.
Tas izsauks norādīto funkciju norādītajā GameObject, piemēram, manā MainScene ir GameObject ar nosaukumu ReactApi, un skripts satur funkciju HandleCallback.
Tā kā es vēlos saņemt atzvanīšanu ikreiz, kad Unity runā ar pārlūkprogrammas Javascript, es saglabāju ar tās indeksu saistīto atzvanu vārdnīcu ReactApi.cs failā, lai jebkurai saziņai starp Unity un React būtu jānotiek caur ReactApi failu, un atzvanīšana tiks veikta. tiek aktivizēts, kad tiek atgriezti JSON dati.
Pēc JSON datu atgriešanas es izmantoju Json.NET, lai deserializētu datus objektā, kas ir definēti failā WalletDataTypes.cs.
Ja JSON datu deserializācija tiek veiksmīgi pabeigta, tie tiek parādīti lietotāja saskarnē, un tā viss darbojas.
Izvietot IC Unity projektu
1. Lejupielādējiet projekta failus no:
github.com/tommygames/ic-unity-template
2. Pārliecinieties, vai ir instalēts Dfinity Container Smart Contract SDK (šajā projektā izmantoju versiju 0.9.3):
smartcontracts.org/docs/developers-guide/install-upgrade-remove.html
3. CD mapē ic_unity_template Unity projektā (kurā ir dfx projekts).
4. Palaidiet npm install un pārliecinieties, vai visi mezglu moduļi ir instalēti pareizi. Iespējams, jums būs jāievēro īpaši norādījumi, lai nodrošinātu, ka dab-js mezgla modulis ir pareizi instalēts. Instrukcijas var atrast šeit:
docs.dab.ooo/nft-list/getting-started
5. Palaidiet dfx start --background mapē ic_unity_template, lai fonā palaistu lokālo IC vidi, un palaidiet dfx deploy, lai izvietotu IC konteineru vietējā IC vidē jūs varat piekļūt projektam.
6. Lai izvietotu projektu galvenajā tīkla publiskajā blokķēdes tīklā, jums ir jāievieto cd mapē ic_unity_template un jāpalaiž dfx deploy --network=ic. Pēc izvietošanas tas parādīs konteinera ID, kuram varat piekļūt. piekļūstiet projektam, izmantojot šādu URL:
https://.raw.ic0.app
Piezīme. Ir svarīgi vietrādī URL iekļaut atslēgvārdu “neapstrādāts”, jo Unity faili ir ļoti lieli un tos var apkalpot, tikai izmantojot šo atslēgvārdu.
Ja veicat izmaiņas savā Unity projektā un pārbūvējat to, noteikti nosauciet savu būvējumu unity_build.
Kad būvēšana ir pabeigta, velciet mapes Build, TemplateData un StreamingAssets (ja tādas ir) mapē src/ic_unity_template_assets/assets (varat ignorēt failu index.html), un varat to atkārtoti izvietot konteinerā.
Paldies, ka izlasījāt līdz šim. Tas ir veids, kā izvietot Unity projekta paraugu ar integrāciju react-unity-webgl zvanīšanai starp Javascript un C#. Ceru, ka jums patika lasīt un novēlu veiksmi spēļu izstrādes piedzīvojumā. Lūdzu, nekautrējieties Sekojiet man Twitter (@tommyinvests), kur esmu galvenais spēles Plethora izstrādātājs.

Izveidojiet IC Unity projektu no nulles
1. Izveidojiet jaunu Vienotības projektu.
2. Lejupielādējiet un instalējiet Dfinity konteinera viedā līguma SDK:
smartcontracts.org/docs/developers-guide/install-upgrade-remove.html
3. dfx ir galvenais komandrindas rīks jaunu Dfinity projektu uzsākšanai. Tas automātiski aizpildīs projektu ar veidnes kodu.
smartcontracts.org/docs/developers-guide/cli-reference.html
4. Atveriet komandrindu un kompaktdisku Unity projekta mapē, pēc tam palaidiet dfx new project-name-goes-here, lai izveidotu jaunu veidnes projektu ar nosaukumu “project-name-goes-here”, kas būs jūsu Unity projekta failā. Mapē izveidojiet jaunu dfx projektu.
Piezīme: dfx projekti nav jāizveido Unity projektu mapē, tos var arī ievietot atsevišķā mapē.
5. Pēc tam jums ir jāmaina veidnes dfx projekts, lai tas būtu saderīgs ar React tīmekļa ietvaru.
6. Mēs izmantosim React ietvaru kā Unity projekta ietvaru, lai ļautu nosūtīt ziņojumus starp React JavaScript kodu un Unity C#. Tas padara iespējamu maka integrāciju un arī nodrošina iespēju integrēt tīmekļa komponentus (react) nākotne Elastība pārklājot savu spēli, ja vēlaties.
7. Es ievēroju šo Dfinity rokasgrāmatu, lai padarītu savu projektu saderīgu ar React:
smartcontracts.org/docs/developers-guide/tutorials/custom-frontend.html
Piezīme. Jums nav jāveic visas rokasgrāmatā norādītās darbības, ir jāveic tikai šādas darbības:
Projekta mapē palaidiet npm install --save react react-dom
Palaidiet npm install --save-dev typescript ts-loader savā projekta mapē
Atveriet webpack.config.js un virs spraudņu sadaļas pievienojiet šādu kodu:

Izveidojiet jaunu failu ar nosaukumu tsconfig.json sava projekta saknes direktorijā un ielīmējiet tajā šādu kodu:

8. Kad dfx projekts ir iestatīts tā, lai tas būtu saderīgs ar React, jums ir jāizveido React projekta fails. Es sāku noklusējuma React projektu, izmantojot komandrindas rīku “React App”.
reactjs.org/docs/create-a-new-react-app.html
9. Kad React projekts ir izveidots, React projekta scr mapē mainiet index.html, index.js, index.css, App.js, App.css. un jebkuri citi atbilstoši faili jūsu projekta mapē srcdfxsrc/project_name_assets/src, tur atrodas visi jūsu privātie faili, jūs arī pamanīsit, ka blakus līdzekļu mapei ir mape src. Šeit atrodas visi jūsu publiskie faili. atrašanās vietu, tostarp jūsu Unity būvēšanas failus.
10. Kad esat nokopējis React failus savā dfx projektā, jums ir jāpārliecinās, vai jūsu projektam ir instalēti šādi npm moduļi.
11. Modulis react-unity-webgl ir ļoti svarīgs, jo tas ļauj mums nosūtīt notikumus starp React un Unity. Šie notikumi ļaus Unity mijiedarboties ar pārlūkprogrammu Javascript un izveidot savienojumu ar Plug Wallet. Tā dokumentāciju varat atrast šeit:
npmjs.com/package/react-unity-webgl
Varat to instalēt, dfx projekta mapē izpildot šādu komandu:

Pēc instalēšanas izpildiet react-unity-webgl dokumentācijā sniegtos norādījumus, lai modificētu savu App.js failu. Faila App.js pamata ieviešana izskatās šādi.

12. dab-js modulis ir Psychedelic izveidota bibliotēka, lai palīdzētu mums veikt vaicājumus viņu NFT datu bāzē, kas ļaus mums iegūt visus NFT, kas pašlaik atrodas lietotāja Plug makā.
Piezīme: šī npm moduļa instalēšanas process ir nedaudz sarežģīts, pirms moduļa lejupielādes ir jāizveido Github piekļuves pilnvara un jāpiesakās, lūdzu, izpildiet šeit sniegtos norādījumus:
docs.dab.ooo/nft-list/getting-started
13. Visbeidzot, jums ir jāpārliecinās, vai jūsu moduļos @dfinity/agent, @dfinity/principal un @dfinity/candidnpm tiek izmantota versija 0.9.3 vai vecāka versija, jo modulis dab-js pašlaik atbalsta tikai tos galvenā ID kodējuma dēļ. mainot versiju vai jaunāku versiju, varat palaist šo komandu, lai nodrošinātu šo versiju:

14. Tagad jums ir jāizveido jūsu Unity projekts, jāatver Unity un jāiet uz File->Build Settings un jāpārslēdzas uz WebGL platformu.
15. Pēc tam dodieties uz Rediģēt->Projekta iestatījumi un iestatiet “Compression Format” uz Disabled IC konteineri pašlaik neatbalsta Gzip vai Brotli saspiešanas formātus.
16. Visbeidzot, dodieties atpakaļ uz būvēšanas iestatījumiem un noklikšķiniet uz pogas Veidot. TemplateData un StreamingAssets (ja tādi pastāv) Velciet mapi uz sava projekta mapi src/project_name_assets/assets dfx (varat ignorēt failu index.html), pēc tam jums jāatgriežas pie 11. darbības un jārediģē App.js. Lai iegūtu pareizo faila ceļu uz būvējuma failu, ja mūsu būvējuma nosaukums ir "BestGame", mūsu App.js fails izskatītos šādi:

17. Kad šī darbība ir pabeigta, esat gatavs augšupielādēt spēli IC, kompaktdisku savā dfx projekta mapē un palaist dfx start --background, kas fonā sāks vietējo IC vidi, pēc tam palaidiet dfx deploy, kas nodrošinās jūsu IC Unity spēles tiek izvietotas vietējā IC vidē, un pēc izvietošanas tas jums pateiks URL, caur kuru varat piekļūt savai spēlei.
18. Lai izvietotu savu IC spēli galvenajā tīkla publiskajā blokķēdes tīklā, jums ir jāievada dfx projekta mapē un jāpalaiž dfx deploy --network=ic spēlei var piekļūt, apmeklējot:
https://.raw.ic0.app
PIEZĪME. Ir svarīgi vietrādī URL iekļaut atslēgvārdu “neapstrādāts”, jo Unity faili ir ļoti lieli un tos var apkalpot, tikai izmantojot šo atslēgvārdu.
Paldies, ka izlasījāt līdz šim, šādi varat izveidot Unity projektu ar integrāciju react-unity-webgl un izvietot to konteinerā izsaukšanai starp Javascript un C#. Ceru, ka jums patika lasīt, un es novēlu jums visu to labāko spēlē. attīstības piedzīvojumi Lai veicas un droši ierakstiet mani Twitter (@tommyinvests), es esmu Plethora spēles galvenais izstrādātājs.

IC saturs, kas jums rūp
Tehnoloģiju attīstība |. Informācija par projektu |

Apkopojiet un sekojiet IC Binance kanālam
Esiet informēts par jaunāko informāciju
