Android birligi uchun 3D o'yin yaratish. Androidda o'yin yaratish. O'yin dizayneri nima

Android OS qurilmalari uchun o'yinlarni ishlab chiqish iOS uchun ishlab chiqishga o'xshash yondashuvni talab qiladi. Boshqa tomondan, Android qurilmalarining apparati aniq standartlarga bo'ysunmaydi, bu esa iOS bilan ishlashda mavjud bo'lmagan muammolarni hal qilishni talab qiladi. Unity-ning Android va iOS versiyalari o'rtasida ham farqlar mavjud.

Android ishlab chiqish muhitini tayyorlash

O'yinlaringizni qurilmada sinab ko'rishdan oldin, ishlab chiqish muhitini tayyorlashingiz kerak bo'ladi. Xususan, kerakli platformaning Android SDK-ni yuklab oling va o'rnating va qurilmangizni tizimga qo'shing (Windows va Mac uchun bu jarayon boshqacha). Bu Android Developers veb-saytida batafsil yozilgan, shuningdek Qo'shimcha ma'lumot qurilmangiz ishlab chiqaruvchisi tomonidan taqdim etilishi mumkin. Bu juda murakkab jarayon bo'lganligi sababli, biz rivojlanish uchun kerak bo'lgan hamma narsani tayyorlashga yordam beradigan kichik ko'rsatma tayyorladik. Agar sizga qo'shimcha ma'lumot kerak bo'lsa, uni Android Developer Portaldan olishingiz mumkin.

Android xususiyatlariga kirish

Unity Android kiritish va sozlamalariga kirish uchun API taqdim etadi. Mavjud sinflar Android Assambleyalari uchun kod sahifasida hujjatlashtirilgan.

C, C++ yoki Java kodlarini skriptlarga ulash

Unity C/C++ da yozilgan funksiyalarni bevosita skriptlardan chaqirish imkonini beradi (Java funksiyalarini bilvosita chaqirish mumkin). Unity’ning mahalliy kodidan funksiyalarga qanday kirishni o‘rganish uchun Android plaginini yaratish sahifasiga tashrif buyuring.

Okklyuzion Culling (ko'rinmas geometriyani kesish)

Unity mobil platformalar uchun optimallashtirishda juda foydali bo'lgan okklyuzionni yo'q qilishni qo'llab-quvvatlaydi. Batafsil ma'lumot Occlusion culling sahifasida topish mumkin.

Ishga tushirish ekranini sozlash

O'yin boshlanganda ko'rsatiladigan ekranni sozlash mumkin - qo'shimcha ma'lumot olish uchun ushbu sahifaga qarang.

Muammolarni bartaraf etish va xatolar haqida xabar berish

Ilovangiz ishlamay qolishi yoki noto'g'ri ishlashining ko'p sabablari bor. Android-ga xos muammolarni hal qilish bo'yicha qo'llanmamiz sizga eng qisqa vaqt ichida xatolar sabablarini bartaraf etishga yordam beradi. Agar qo'llanmani o'qib chiqqandan so'ng, muammo Unity'da deb o'ylasangiz, xato haqida xabar berishingiz kerak. Ko'rsatmalar uchun ushbu sahifaga qarang.

Android uchun Unity ish stoli versiyasidan qanday farq qiladi

Kuchli yozish bilan JavaScript

Unity-ning Android versiyasida ishlashni yaxshilash uchun JavaScript-da dinamik yozish har doim o'chirib qo'yilgan (xuddi #pragma strict avtomatik ravishda har bir skriptga qo'llaniladi). Shuni esda tutish kerakki, agar siz loyihani eski platformalardan Android-ga o'tkazayotgan bo'lsangiz va kompilyatsiya xatolariga duch kelsangiz, muammoni birinchi navbatda matn terishda izlash kerak. Bunday xatolar, odatda, barcha o'zgaruvchilarning turlari aniq ko'rsatilgan yoki ishga tushirish vaqtida uzatilganligiga ishonch hosil qilish orqali hal qilish oson.

Unity Android DXT/PVRTC/ATC teksturalarini qo'llab-quvvatlasa-da, agar ushbu siqish usullari ma'lum bir qurilmada qo'llab-quvvatlanmasa, Unity ish vaqtida teksturalarni RGB(A) formatiga ochadi. Bu GPU renderlash ishiga jiddiy ta'sir qilishi mumkin, shuning uchun ETC formatidan foydalanish tavsiya etiladi. Bu Android uchun amalda standart bo'lib, barcha zamonaviy qurilmalar tomonidan qo'llab-quvvatlanishi kerak. Boshqa tomondan, ETC alfa kanalini qo'llab-quvvatlamaydi va ba'zida 16-bitli RGBA teksturalari alfa kanali kerak bo'lganda sifat, o'lcham va ko'rsatish tezligi bo'yicha eng yaxshi tanlov bo'ladi.

Unity 3D yuqori sifatli material yaratish vazifasiga professional yondoshadiganlar uchun ajralmas vosita bo'ladi. Ilova tayyor modellarni, skriptlarni va teksturalarni birlashtiradi, ularni o'zingizning tarkibingiz - tasvirlar, tovushlar va videolar bilan to'ldirishingiz mumkin.

Unity 3D-da yaratilgan tayyor mahsulotlar deyarli barcha mashhur platformalar bilan mos keladi - boshlab mobil telefonlar va SMART televizorlari bilan tugaydi.

Dastur xususiyatlari:

  • o'quv mexanizmi Unity;
  • moslashuvchan ko'p funksiyali muharrir;
  • yuqori kompilyatsiya tezligi;
  • o'rganish oson interfeys;
  • ko'p sonli platformalar bilan muvofiqligi.

Ish printsipi

Dasturdan foydalanish uchun Unity Hub platformasini yuklab olishingiz kerak va u orqali bepul Shaxsiy versiyaning imkoniyatlarini sinab ko'rishingiz mumkin. U har yili 100 ming dollargacha monetizatsiya hajmi bilan mavjud.

Bepul versiyaga qo'shimcha ravishda siz yana ikkita ilg'or versiyaga obuna bo'lishingiz mumkin:

Unity Plus (oyiga ~ $25) - mijozning muvaffaqiyati maslahatchisi xizmatiga cheklangan kirishni ta'minlaydi, foydalanuvchi qurilmalaridagi nosozliklar haqida ma'lumot to'playdi, fikr-mulohazalarni nazorat qiladi.

Unity Pro (oyiga ~ $125) obunaning maksimal variantidir. Professional ishlab chiquvchilar tomonidan qo'llab-quvvatlanadi, dastur yaratuvchilarning yordamiga ustuvor kirish imkonini beradi, ishlashni kuzatish va statistik ma'lumotlarni to'plash uchun yaxshilangan imkoniyatlarni o'z ichiga oladi.

Hammasini qurish o'yin harakatlari modellarning xatti-harakati bog'liq bo'lgan dasturning etarlicha yuqori sifatli jismoniy yadrosiga (PhysX) asoslangan. To'qimalar va ob'ektlarni import qilish qobiliyati tufayli siz mahsulotni noyob qilishingiz yoki ishlab chiquvchi tomonidan birlashtirilgan vositalardan foydalanishingiz mumkin. Ushbu konstruktorda yaratilgan har bir ob'ekt o'zingizni boshqarishingiz mumkin bo'lgan maxsus skriptlar va hodisalar to'plami ekanligini tushunish muhimdir.

Unity 3D bilan professional tarzda ishlash uchun ilovaning interfeysi va xususiyatlari bilan tanishish uchun biroz vaqt kerak bo'ladi. Buning uchun siz Internetda ko'plab videolarni topishingiz yoki ko'plab yirik shaharlarda o'tkaziladigan ixtisoslashtirilgan kurslarga tashrif buyurishingiz mumkin.

Shuni ta'kidlash kerakki, 3D grafikalar bilan ishlash uchun siz apparat video kartasiga ega zamonaviy kompyuterga ega bo'lishingiz kerak.

Taroziga soling:

  • loyihalarni yaratish uchun deyarli cheksiz funksionallik;
  • brauzerga asoslangan 3D grafiklarni qo'llab-quvvatlash;
  • bilan mos keladi o'yin konsollari va zamonaviy televizorlar;
  • ko'p sonli vizualizatsiya vositalari;
  • bepul versiyasi mavjud.

Kamchiliklari:

  • sifatli mahsulot yaratish uchun maxsus bilim kerak;
  • dasturning jismoniy yadrosini juda nozik sozlash imkoniyati yo'q;
  • interfeysning rus tiliga tarjimasi yo'q.

Unity 3D-ni nafaqat mashhur onlayn o'yinchoq Juggernautga raqobatchi tayyorlash uchun (bu bizning sharhimiz qahramoni asboblari bilan ham chizilgan), balki hashamatli 3D taqdimotlarini yaratish uchun ham yuklab olishingiz mumkin. Bir oz ko'proq vaqt talab qilsin, lekin tomoshabinlar uchun ajoyib effekt kafolatlanadi.

Platformaning imkoniyatlari bilan tanishish uchun yuklab olish kifoya bepul versiya Birlik 3D. Agar sizga manba kodiga kirish kerak bo'lsa, pulli versiyalarga qarang.

Analoglar:

  • o'yin muharriri - bepul ilova o'yinlar yaratish;
  • Construct 2 - oddiy interfeysga ega mashhur o'yin konstruktori.
  • Construct 2 - bu 2D loyihalarni yaratish uchun kuchli dastur.

Hammaga salom! Ushbu dvigatelda qanday o'yin qilishni o'rganganimdan so'ng, men sizga ham xuddi shunday o'rgatmoqchiman. Birinchidan, bizga Unity3d-ning o'zi, har qanday 3D model muharriri va elkalaridan o'sadigan tekis qo'llar kerak.

1. Dasturni o'rganish

Yangi boshlanuvchilar uchun Monodevelop-ni o'rnatishni maslahat beraman! Keling, Birlik nima ekanligini tushunaylik. Unity - bu ko'p platformali o'yinlarni ishlab chiqish muhiti. Uning soddaligi va tushunarliligi tufayli har uchinchi shaxs kamida bir marta o'yin o'tkazgan.

Yuqoridagi skrinshotni ko'rib chiqing:

  • Sahna - bu sizning ijodiy sandboxingiz.
  • Loyiha - bu erda barcha animatsiyalar va modellar, tovushlar va teksturalar mavjud.
  • Yuqori asboblar panelida modellarni o'rnatish uchun Assets-Import New Asset-ni tanlang. Shuningdek, siz Assets-Import Package-Custom Package ham mumkin. Ikkinchi holda, paket .unity kengaytmasida bo'lishi kerak.
  • Ierarxiya - sahnadagi barcha ob'ektlar. U erda siz ob'ekt uchun ota-onalarni yaratasiz. Ob'ektni ierarxiya menyusida boshqasiga o'tkazing va u biriktiriladi. Natijada bir turdagi papka bo'ladi.
  • Asboblar paneli - asboblar ro'yxati. U erda siz 2D, 3D rejimini yoqishingiz mumkin.
  • Inspektor - ob'ektning xususiyati, bu erda siz animatsiyalar, skriptlar va boshqalarni qo'shasiz. U erda asboblardan foydalanishingiz mumkin: kamerani harakatlantirish, ob'ektni siljitish, cho'zish, ob'ektni aylantirish.


Endi siz ob'ekt menyusini ko'rasiz, unda siz animatsiya, skriptlar va boshqalarni qo'shishingiz mumkin.

O'ylaymanki, ushbu menyu bilan siz muammoga duch kelmaysiz.
Har qanday ob'ektni yaratish uchun bosing.

Umuman olganda, biz dasturni o'rganib chiqdik, tez orada o'z o'yinlarimizni yozish mumkin bo'ladi.

2. Oddiy o'yin yarating

Birinchidan, Yaratish-Terrein hududini yarataylik. O't va daraxtlarni qo'shing. O'ngdagi erga bosish orqali oyna paydo bo'ladi, daraxtlarni, o'tlarni tanlang.


Shuningdek, tog'lar va tepaliklarni yarating. Keyin loyihaga Characher kontroller paketini yuklang. Keyin biz oynada Standard assets-Characters controller loyihasi bilan qidiramiz va birinchi shaxs ko'rinishini (kapsula) yoki uchinchi shaxs ko'rinishini (mexanik) tanlaymiz.
Agar birinchi odam bo'lsa, uni erga qo'ying. Agar uchinchidan bo'lsa, unda siz animatsiyani yuklab olishingiz kerak. Men shuningdek, sahna yoritgichini Yaratish-Directional Light ga o'rnatishni tavsiya qilaman.


Musiqa qo'shish uchun uni kerakli elementga torting.
O'yin tayyor, lekin uni qanday kompilyatsiya qilish kerak?

Buning uchun File-Build sozlamalari-pleyer sozlamalariga o'ting (yorliq va nom uchun). Platformani tanlang va voila, siz tugatdingiz. Buning uchun siz Android SDK ni o'rnatishingiz kerak. Ammo u erda siz SDK bilan jildni belgilashingiz kerak va sizga nafaqat SDK, balki kerakli darajadagi API kerak (masalan, Android 4.2 da API 17 mavjud). Misol uchun, o'yin Android 4.0+ da bo'lishi uchun siz ushbu API'larni o'rnatishingiz kerak.

Keyingi maqolada men sizga Android yoki iOS uchun boshqaruv elementlarini qanday sozlashni aytib beraman va skriptlarni o'zingiz yozishni o'rganaman.

Rivojlanish mobil ilovalar kompyuter sanoatidagi eng daromadli kasblardan biri hisoblanadi. Android o'yinini yaratish yuzlab yoki minglab dollarga tushadi va foyda million dollargacha yetishi mumkin. Shu munosabat bilan ko'pchilik telefon uchun ilovalar ishlab chiqishga qiziqish bildirmoqda. Ushbu maqolada siz Android o'yinini noldan kompyuter yordamida qanday yaratishni o'rganasiz, qaysi dvigatel va dizaynerni tanlash yaxshiroq.

Yo'q muvaffaqiyatli o'yin holda qila olmayman chiroyli grafikalar Shuning uchun dizaynni yaratish rivojlanishning eng muhim bosqichlaridan biridir. Android operatsion tizimida dizayn "dizayn hujjati" yoki dizayn hujjati yordamida amalga oshiriladi. Siz uni batafsil o'rganish bilan o'yinchoq yaratishni boshlashingiz kerak. Fayl o'z ichiga oladi:

  1. Ob'ekt modellari;
  2. Funktsional spetsifikatsiyalar;
  3. O'yin mazmuni;
  4. Interfeys.

Keling, har bir nuqtani batafsil ko'rib chiqaylik.

Ob'ekt modellari

Bu har bir elementning funksionalligi haqida ma'lumot. Ob'ekt modellari narsalarni sotib olish va sotish qobiliyati, shuningdek, belgilarning o'yin xususiyatlarini yaxshilash uchun javobgardir.

Funktsional spetsifikatsiyalar

Bu o'yin jarayonini, har bir belgining asosiy xususiyatlarini tasvirlaydi. Shuningdek, bu erda o'yin buyumlarining xususiyatlari - qurollar, birinchi yordam to'plamlari, zirhlar va boshqalar tavsifi. Asosan, funktsional spetsifikatsiyalar qoidalardir o'yin jarayoni. Ushbu bo'lim qanchalik yaxshi ishlab chiqilsa, yuqori sifatli Android o'yinini yaratish osonroq bo'ladi.

O'yin mazmuni

Bu o'yin matnini to'ldirish. Unda qahramonlarning dialoglari va zarar etkazish uchun qanday qurollardan foydalanish mumkinligi, zarba qancha sog'likka olib kelishi va turli jihozlardan foydalanganda qanday xususiyatlar kuchayishi tasvirlangan. Bundan tashqari, o'z ichiga oladi batafsil tavsif har bir element.

Interfeys

Interfeys foydalanuvchining o'yin bilan qanday munosabatda bo'lishidir. U xarakterni boshqarishingiz mumkin bo'lgan tugmalarni va menyu bo'limlarini o'z ichiga oladi: masalan, o'ynash, ball, sozlamalar, eng yaxshi o'yinchilar, yordam. Agar Android ilovalarini yaratishda tajribangiz bo'lmasa, o'zingizni yaratishdan oldin Play Marketdan yuklab oling va tahlil qiling mashhur o'yinlar va eng yaxshi echimlarni loyihangizga o'tkazing.

O'yin dvigateli

Har qanday o'yinning yadrosi dvigateldir. Bu uni ishlab chiqish va ishga tushirish imkonini beruvchi dastur. U ko'plab dasturlarni o'z ichiga oladi, jumladan renderlash mexanizmi, fizika dvigateli, ovoz, animatsiya va boshqalar. Dasturlarni yozish jarayonini osonlashtirish uchun uchinchi tomon ishlab chiquvchilari Android ilovalari uchun maxsus o'yin motorlarini yaratadilar.

Ularning har biri turli funktsiyalarni taklif qiladi: ba'zilari 3D uchun mo'ljallangan, boshqalari 2D uchun, ko'p platformali qo'llab-quvvatlanishi mumkin. Bunday dvigatellar juda ko'p, ammo agar siz yangi boshlovchi bo'lsangiz, eng mashhurlaridan birini tanlash yaxshidir, chunki u erda barcha kerakli funktsiyalar mavjud bo'ladi.

UDK

Moment 2d/3d

O'yin dizayneri nima?

Konstruktor - bu o'yin mexanizmi va integratsiyalashgan rivojlanish muhitini birlashtirgan dastur. Konstruktor ishlab chiqish jarayonini dasturlash ko'nikmalariga ega bo'lmagan odamlar uchun ochiq qiladi. Dizaynerlarning ba'zilari sizga ma'lum janrlardagi o'yinlarni yaratishga imkon beradi, boshqalari maksimal funksionallikka ega, ammo ancha qimmatga tushadi. Mobil ilovalarni yangi boshlovchi yaratuvchisi uchun dizaynerni tanlash eng muhim daqiqalardan biridir, chunki kelajakdagi ilovaning taqdiri uning imkoniyatlariga bog'liq bo'ladi.

Konstruktor Windows, Android va iOS uchun turli janrdagi o'yinlarni yaratishga imkon beradi. Takliflar katta tanlov tayyor joylar, ob'ektlar, belgilar va ovoz dizayni, shuning uchun birinchi Android o'yinini yaratish ko'p vaqt talab qilmaydi. JS va C++ dasturlash tillari bilan tanish bo'lgan foydalanuvchilar o'rnatilgan GML dan foydalanishlari mumkin. Yagona kamchilik shundaki, dastur rus tiliga tarjima qilinmagan.

Xulosa

Android o'yinini yaratish oson emas, lekin juda foydali biznes. Agar siz o'yinni ishlab chiqishga va undan pul ishlashga qaror qilsangiz, avval g'oyani ishlab chiqing. Keyinchalik, "dizayn hujjati" ni yozing va uning salohiyatini maksimal darajada oshirishi mumkin bo'lgan o'yin mexanizmi haqida qaror qabul qiling. Shundan so'ng siz to'g'ridan-to'g'ri konstruktorda dastur yaratishga o'tishingiz mumkin.

Video

Android o'yinlarini yaratish jarayoni haqida ko'proq bilish uchun ushbu faoliyatga bag'ishlangan bir qator videolarni ko'ring.

Qanday qilib Android uchun oddiy o'yin yoki dasturni tez va nisbatan oson yaratish mumkin? Bu haqda Unity3D dvigateli bilan ishlashga bag'ishlangan quyidagi maqolada o'qing.

Kompyuter o'yinlarini o'ynaysizmi? Agar shunday bo'lsa, unda, albatta, keyingi blokbaster o'yinini o'tkazish jarayonida sizda ba'zida shunday fikrlar paydo bo'ladi: "Ammo bu erda men buni noto'g'ri qilgan bo'lardim!". O'zingiz dasturchi bo'lishni xohlaysizmi? Unda men sizga kichik, lekin juda qiziqarli "sarguzasht" taklif qilaman;)

Dvigatel nima va u nima uchun kerak?

Ilgari, birinchi kompyuterlar, o'yinlar va dasturlar "hardkor" deb ataladigan kunlarda yaratilgan. Ya'ni, to'liq rivojlanish uchun o'z dasturlash tilini puxta biladigan va oddiy bloknotda deyarli butun o'yinni (shu jumladan pikselli grafik va maxsus effektlarni) yoza oladigan juda tajribali dasturchi bo'lishi kerak edi. Bunday odamlar kam edi va ular juda qadrlangan (va hozir ham qadrlanadi) ...

Bugungi kunda dasturlash mavzusiga kirish chegarasi sezilarli darajada kamaydi. Va bu nafaqat adabiyotlar va barcha turdagi o'quv materiallarining mavjudligi, balki tobora soddalashtirilgan rivojlanish jarayoni bilan ham yordam beradi. Hozirgi vaqtda haqiqiy "hardkor" odamlarni uchratish juda kam, chunki "dvigatellar" deb ataladigan juda qulay rivojlanish muhitlari paydo bo'ldi.

Dvigatelning mohiyati shundaki, u barcha kerakli o'yin ob'ektlarini soddalashtirilgan vizual rejimda import qilish, ularni virtual sahnada tartibga solish va ularning barcha parametrlarini sozlash imkonini beradi. Ya'ni, dasturchining vazifasi faqat o'yin mantiqini to'g'ri yozishdir!

Biroq, eski "hardkor" tarzda yozilgan hamkasbi bilan solishtirganda, loyihaning hajmini biroz oshirish (ba'zan hatto bir necha marta!) bilan ishning qulayligi uchun to'lash kerak. Aynan shuning uchun ba'zi ishlab chiquvchilar dvigatellarni yoqtirmaydilar yoki o'zlarini yozishga harakat qilishadi, bunda faqat kerakli komponentlar qo'llaniladi ...

Lekin siz va men haqiqiy dasturchilardan uzoqmiz :) Shuning uchun, mashhur va kuchli Unity3D dvigateli asosida Android uchun oddiy o'yin yarataylik.

Unity3D-da loyihani boshlash

Xo'sh, nima uchun biz Unity3D dan foydalanishga qaror qildik:

  • to'liq huquqli 2D va 3D o'yinlarni yaratish qobiliyati;
  • har qanday qurilma uchun tayyor o'yinni kompilyatsiya qilish qobiliyati;
  • dvigatelni boshqarishning nisbatan qulayligi;
  • plaginlarni ulash orqali funksionallikning yaxshi kengaytirilishi;
  • o'yinning yakuniy yig'ilishining nisbatan kichik hajmi (boshqa dvigatellar bilan solishtirganda).

Unity3D-ning asosiy kozi, albatta, uning ko'p qirrali va ko'p platformaliligi. O'yin tugadi(ehtimol, biroz sozlash bilan) Siz kompyuterga (Windows, Linux yoki MacOS), Android, PlayStation yoki XBox-ga portlashingiz mumkin! Buni amalga oshirish uchun biz faqat dvigatelning o'zini yuklab olishimiz kerak, aytmoqchi, bir gigabaytdan ko'proq "og'irlik" va kerakli SDK (agar ishlab chiqish rejalashtirilgan bo'lsa). mobil platformalar yoki konsol). Agar siz Windows uchun o'yin yaratmoqchi bo'lsangiz, unda hech narsa yuklab olishingiz shart emas, lekin biz Android uchun o'yin yaratmoqchi bo'lganimiz sababli, Android SDK (Dasturiy ta'minotni ishlab chiqish to'plami) ni ham yuklab olishimiz kerak bo'ladi. U bilan ishlash qulayligi uchun SDK-ni ZIP arxiviga yuklab olishingizni maslahat beraman.

Har bir narsa yuklab olingandan so'ng, siz o'zingiz uchun qulay bo'lgan istalgan Android SDK jildiga o'chirishingiz mumkin, so'ngra Unity3D-ni o'zi o'rnatishni davom ettiring. U har qanday oddiy Windows dasturi kabi o'rnatiladi, shuning uchun o'rnatishda hech qanday muammo bo'lmasligi kerak. O'rnatishdan so'ng, vosita ishga tushadi va biz birinchi navbatda yangi loyihani yaratishimiz kerak:

Buning uchun biz barcha salomlash va kirish oynalarini yopishimiz kerak, so'ngra "Fayl" menyusidan "Yangi loyiha" ni tanlang. Ochilgan oynada (yuqoridagi skrinshotga qarang) bizdan loyihani saqlash papkasini ko'rsatish so'raladi (uning nomi loyiha nomi bilan bir xil bo'ladi), ba'zi standart funktsiyalar to'plamini import qilish (bizga ularga kerak emas) va ish rejimi. Rejim sifatida 2D ni tanlang va "Yaratish" tugmasini bosing. Bu ishning tayyorgarlik qismini yakunlaydi :)

Dvigatel interfeysi va loyiha ierarxiyasi

Loyihani yaratgandan so'ng, u Unity3D ish maydoniga yuklanadi:

Ushbu ish maydonining o'zi modulli tuzilishga ega va siz xohlaganingizcha harakatlantirilishi mumkin bo'lgan bir nechta ichki oynalardan iborat. Men uni shunday o'rnatdim (chapdan o'ngga va yuqoridan pastga):

  1. Ierarxiya oynasi - sahnadagi faol va nofaol ob'ektlarning ierarxik holatini ko'rsatadi. Odatiy bo'lib, ro'yxatdagi yagona ob'ekt asosiy kameradir.
  2. Sahna oynasi - butun o'yin sahnasini va undagi ob'ektlarni (jumladan, kameralar, tovushlar, teksturalar va boshqalar) aks ettiradi.
  3. Inspektor oynasi - ierarxiyada yoki sahnada tanlangan ob'ektning barcha xususiyatlarini aks ettiradi va ularni tahrirlash, to'ldirish yoki o'chirish imkonini beradi.
  4. O'yin oynasi - kameraga ko'rinadigan o'yin dunyosini ko'rsatadi va virtual o'yin sinov oynasining o'lchamini piksellarda tanlash imkonini beradi. Shuningdek, o'yin oynasini to'liq hajmda kengaytirishni faollashtirishga imkon beradi (O'yinda maksimal darajaga ko'tarish) va ishlab chiquvchi uchun turli xil ma'lumotlarni ko'rsatishni yoqish / o'chirish.
  5. Loyiha va konsol oynalari. Loyiha oynasi loyiha resurslari boʻylab harakatlanish uchun ishlatiladi: yuklangan tasvirlar, tovushlar, modellar va boshqalar. Shuningdek, ushbu oyna (kontekst menyusi) yordamida siz har xil turdagi va skriptlarning yangi bo'sh o'yin ob'ektlarini yaratishingiz mumkin. Konsol oynasi xato xabarlarini (qizil), ogohlantirishlarni (sariq) va siz so'ragan turli nosozliklarni tuzatish ma'lumotlarini (kulrang) ko'rsatish uchun ishlatiladi.
  6. Aktivlar yorlig'i oynasi inspektor oynasining pastki qismi bo'lib, u Loyiha oynasida tanlangan ob'ekt yoki faylni oldindan ko'rishni ko'rsatadi.

Yuqoridagilarning barchasiga qo'shimcha ravishda, yuqori markazdagi uchta tugmachaga e'tibor bering. Ular sizning loyihangizni boshlashga, uni to'xtatib turishga imkon beradi (masalan, ierarxiyada nima qilinayotganini ko'rish uchun disk raskadrovka paytida foydali bo'ladi) va shunga mos ravishda uni o'chirish.

Biz musiqa asbobining simulyatorini yaratamiz: "tabla" deb nomlangan hind xalq barabanlari, shuning uchun boshlash uchun biz loyihada tovushlar va rasmlar saqlanadigan ikkita bo'sh papka yaratamiz. Project Navigator oynasidagi kontekst menyusiga qo'ng'iroq qilib, "Yaratish" ro'yxatidan "Papka" bandini tanlab, yangi papka yaratishingiz mumkin.

Bu erda ushbu papkalarni qanday nomlash kerakligi haqida bir necha so'z aytishga arziydi. Bizning simulyatorimiz kabi oddiy o'yin uchun, qoida tariqasida, papkalarni xohlaganingizcha "nomlash" mumkin, ammo kamida ikkita nom bor, ulardan foydalanmaslik yaxshiroqdir, chunki ular dvigatel tomonidan saqlangan. Bular Resurslar va Plaginlar nomlari. Katta loyihalarda Resurslar papkasi darhol yaratiladi va barcha o'yin "ehtiyot qismlari" (rasmlar, tovushlar, modellar, teksturalar va prefablar) allaqachon saqlangan (papkalar bo'yicha saralangan). Plaginlarda, nomidan ko'rinib turibdiki, barcha qo'shimcha uchinchi tomon funktsiyalar to'plami ("aktivlar" (aktivlar) deb ataladi) saqlanadi, ulardan bir nechtasi Asset do'konida - Unity3D kengaytmalari do'konida mavjud.

Fayllarni import qilish va o'yin ob'ektlarini yaratish

Yangisini yaratishdan oldin o'yin loyihasi uning ishlashi uchun zarur bo'lgan barcha fayllarni oldindan tayyorlash maqsadga muvofiqdir. Bizning holatlarimizda bu fayllar rasm va tovushlardir. Ularni loyihaga import qilishning eng oson yo'li ularni kerakli jildga sudrab olib tashlashdir. Rasmlardan boshlaylik...

Rasmlar "Tasvirlar" jildida paydo bo'lgandan so'ng, ularni biroz o'zgartirish kerak:

Gap shundaki, sukut bo'yicha Unity3D loyihaga qo'shilgan barcha tasvirlarni sifatni yo'qotgan holda siqib chiqaradi. Agar bizga bunday yo'qotish kerak bo'lmasa (ayniqsa, HD grafikali o'yinlar uchun to'g'ri keladi), unda biz har bir tasvirni tanlab olishimiz kerak va Inspektor oynasida "Format" parametrining qiymatini "Sukut bo'yicha" "siqilgan" dan "Truecolor" ga o'zgartiring. "tab. Bundan tashqari, "Maks. o'lcham" parametrini o'zgartirishingiz kerak bo'lishi mumkin, agar u haqiqiy tasvir kengligidan kichikroq bo'lsa (standart 1024 piksel). Barcha o'zgarishlardan so'ng ularni qo'llash uchun "Ilova" tugmasini bosishni unutmang. Agar kerak bo'lsa, biz boshqa barcha tasvirlar uchun shunga o'xshash harakatlar qilamiz.

Keling, rasmlarimizdan o'yin ob'ektlarini yarataylik. Buni amalga oshirish uchun kerakli rasmni Ierarxiya oynasiga sudrab borish kifoya. Rasm yoki 3D model avtomatik ravishda O'yin ob'ektiga aylantiriladi va kamera oldidagi boshlang'ich koordinata nuqtasida ko'rsatiladi.

Avvalo, biz fon tasvirini qo'shdik, u to'liq ekranda ko'rsatilishi kerak. Ierarxiya oynasida kamerani tanlash va uning ramkasi qanday ko'rsatilishiga qarab, bu shunday yoki yo'qligini tekshirishingiz mumkin. Yuqoridagi skrinshotda siz bizning fonimizning bir qismi kamera ko'rinishidan tashqarida qolayotganini ko'rishingiz mumkin, shuning uchun biz ushbu ko'rinishning o'lchamini to'g'ridan-to'g'ri sahnada freymni sudrab yoki Inspektor oynasida "O'lcham" parametrini tahrirlash orqali sozlashimiz kerak. Bizning holatlarimizda standart qiymatni (5) 5.4 ga o'zgartirishimiz kerak edi.

Bo‘ldi, biz endi kameraga tegmaymiz, qolgan rasmlarni qo‘shib, sozlaymiz. Qo'shish paytida ularning ba'zilari bizning o'yinimiz uchun juda katta ekanligini ko'ramiz. Siz ularni jismoniy jihatdan grafik muharrirda yoki vosita yordamida kamaytirishingiz mumkin. Keling, oxirgi usulni sinab ko'raylik. Buni amalga oshirish uchun ierarxiya oynasida rasmni tanlang va Inspektor oynasida X va Y koordinatalari uchun "Mashtab" qiymatlarini 1 dan 0,5 gacha o'zgartiring (ya'ni yarmiga kamaytiring). Xuddi shu joyda, bir-birining ustiga chiqishni oldini olish uchun barcha o'yin ob'ektlariga (fondan tashqari) qatlamlarning nolga teng bo'lmagan tartibini belgilash maqsadga muvofiqdir (Qatlamdagi tartib):

Rasmlardan o'yin ob'ektlarini tayyorlashning oxirgi bosqichi ularga "osilgan" kollayderlar bo'ladi. Unity3D da kollayderlar ob'ektlar orasidagi o'zaro ta'sir detektorlari sifatida ishlatiladi. Ya'ni, aslida bizning rasmimizga virtual qobiq qo'yilgan bo'lib, u unga teginishni qayd etadi.

Ob'ektga kollayder qo'shish uchun uni Ierarxiya oynasida tanlang va keyin Inspektor oynasida "Qo'shish komponenti" tugmasini bosing. Ko'rsatilgan komponentlar ro'yxatida biz Physics 2D (oddiy 3D fizika bizning rejimimizda ishlamaydi) ni qidirmoqdamiz va barcha variantlardan "Circle Collider 2D" biz uchun eng mos keladi. Biz uni tanlaymiz. Bizning ob'ektimiz atrofida yashil chiziq paydo bo'ladi, u kollayderning chegaralarini aks ettiradi. Bizning kollayderimiz faqat sekin urishlarni qayd etishi va atrofdagi o'yin maydoni bilan aloqa qilmasligi uchun "Triggermi" katagiga belgi qo'yish kifoya:

Shu kabi harakatlar qolgan barcha ob'ektlar uchun takrorlanadi. Faqat bizning fonimiz boshqa ob'ektlardan farq qiladi. Buning uchun biz Box Collider 2D-ni qo'llaymiz va kollayder va fonning o'zini fonga surish uchun Z pozitsiyasini noldan kattaroq qilib qo'yamiz (bu bizga keyinroq kerak bo'ladi).

Ovoz bilan ishlash

Unity 3D-da ovoz bilan, birinchi qarashda, hamma narsa biroz chalkash. Ammo keling, buni tartibda aniqlashga harakat qilaylik :)

Avvalo, biz barcha tovushlarni Sounds papkasiga sudrab olib, ularni biroz o'zgartirishimiz kerak:

Agar barcha tovushlaringizning ovoz balandligi dastlab sozlangan bo'lsa, siz qilishingiz kerak bo'lgan yagona narsa 3D tovushni qayta ishlashni o'chirib qo'yishdir. 3D o'yinlarda bu qayta ishlash kamera unga yaqinlashganda tovush manbasining yondashuvini taqlid qilish uchun kerak. Ammo 2D-da bizga bu kerak emas, shuning uchun biz har bir tovushni navbatma-navbat tanlaymiz va undan "3D tovush" belgisini olib tashlaymiz.

Endi biz o'yin ob'ektlariga tovush qo'shishni boshlashimiz mumkin. Buning uchun biz har bir tugmani navbatma-navbat tanlashimiz va unga "Audio" bo'limidan yangi "Audio Source" komponentini qo'shishimiz kerak. Komponent qo'shilgandan so'ng, tegishli "Audio klip" tugmasini tanlang va sukut bo'yicha faol bo'lgan "Uyg'ongan holda ijro etish" katagiga belgini olib tashlang (u paydo bo'lganda ijro eting):

Barcha tovushlar o'ng tugmachalarga biriktirilganda, qiziqarli qism - skript yaratish vaqti keldi ...

Birinchi skript

Birinchi skriptimizni tahlil qilishni boshlashdan oldin, Unity 3D-dagi skript tizimi haqida bir necha so'z aytishga arziydi.

Unity bir vaqtning o'zida uchta tilda kod yozish imkonini beradi: JavaScript (aniqrog'i, unityScript-ning biroz o'zgartirilgan versiyasi), C # va Boo. Bir qator kitoblar va qo'llanmalarda siz yangi boshlanuvchilar uchun Unity-da skript yaratish JavaScript-ni misol tariqasida o'zlashtirish osonroq degan fikrni topishingiz mumkin. Biroq, bu til boshqalar kabi qulay emas va kelajakda siz qayta o'rganishingiz kerak bo'ladi. Shuning uchun, C # o'rganish bilan darhol boshlash yaxshidir (Boo ham yaxshi, lekin unda bir nechta o'quv materiallari mavjud).

Endi kodni qayerga yozish haqida. Unity 3D da standart kod muharriri MonoDevelop IDE hisoblanadi. Ushbu ishlab chiqish muhitining afzalligi shundaki, unda standart usullar, sinflar va funktsiyalarni tezda kiritish uchun maslahatlar, shuningdek sintaksisni tekshirish tizimi mavjud. Biroq, men uchun kamchilik kattalik va yuqori resurs intensivligi edi. Yaxshiyamki, Unity sozlamalarida siz har qanday narsani matn muharriri sifatida sozlashingiz mumkin, shuning uchun men o'zim uchun engil va funktsional Notepad ++ ni "osib qo'ydim" (deyarli barcha misollar unda ko'rsatiladi).

Va oxirgisi. Tabiiyki, dvigatelning barcha nozik tomonlarini o'zlashtirishda ma'lumotnomalarsiz siz uzoqqa bormaysiz, shuning uchun Unity 3D mavzusidagi bir nechta oqilona Internet-resurslar ro'yxati:

  • http://docs.unity3d.com/ru/current/Manual/UnityManualRestructured.html - rus tiliga qisman tarjima qilingan dvigatel uchun rasmiy qo'llanma (yaqinda paydo bo'lgan va ba'zan beqaror);
  • http://docs.unity3d.com/ru/current/ScriptReference/index.html - ingliz tilidagi rasmiy skript uchun ma'lumotnoma;
  • http://unity3d.ru/distribution/index.php - Unity 3D ishlab chiquvchilari uchun rus forumi;
  • http://habrahabr.ru/post/141362/ - Habrahabrda uch o'lchovli o'yinlar yaratish bo'yicha bir qator darslar;
  • http://msdn.microsoft.com/ru-ru/library/618ayhy6.aspx - Microsoft-ning rus tilidagi rasmiy C# ma'lumotnomasi.

Xo'sh, uni uzoq vaqt sudrab ketmaslik uchun men darhol birinchi skriptni yaratishni taklif qilaman. Skriptlar ostida, agar ular juda ko'p bo'lsa, alohida papkani ajratish yaxshiroqdir, lekin bizning o'yinimiz oddiy bo'ladi, shuning uchun biz to'g'ridan-to'g'ri loyihaning ildiz papkasida skript yaratishimiz mumkin. Buning uchun Loyiha oynasida kontekst menyusiga qo'ng'iroq qiling, Yaratish ro'yxatini tanlang va "C # skript" tugmasini bosing. Keling, yangi skriptimizga nom beramiz, masalan, Sounds va uni ikki marta bosish bilan ochamiz. Yangilash va Boshlash standart usullarini olib tashlab, keyin keraklilarini ro'yxatdan o'tkazgandan so'ng biz quyidagi skriptni olamiz:

Agar siz muharrirni qayta sozlamagan bo'lsangiz, bizning skriptimiz MonoDevelop-da ochiladi. Keling, uning tuzilishini ko'rib chiqaylik ...

Aslida, har bir C# skripti uchta asosiy qismdan iborat:

  1. Eng yuqori qismida skript ishlashi uchun ulanishi kerak bo'lgan kutubxonalar ko'rsatilgan (masalan, "Unity.Engine-dan foydalanish" dvigatelning o'zi ishini bog'laydi va "System.Collections-dan foydalanish" - raqamni o'z ichiga olgan kutubxona. skriptning turli tizimlar ostida ishlashi uchun o'rnatilgan sinflar).
  2. Sinf va o'zgaruvchilar deklaratsiyasi. Bu kabi C# da skript tushunchasi yo'q. Buning o'rniga bir qator usullar va funktsiyalarni o'z ichiga olgan "sinf" tushunchasi qo'llaniladi. Garchi, aslida, Unity 3D kontekstida bu deyarli bir xil narsa :) Esda tutish kerak bo'lgan asosiy narsa shundaki, sinf nomi biz skript bergan nomga mos kelishi kerak. C# tilidagi o'zgaruvchilarning o'ziga xos xususiyati shundaki, ular (skriptning o'zida e'lon qilingan vaqtinchaliklardan tashqari) terilishi kerak. Amalda bu o'zgaruvchi uchun kirish darajasi (xususiy yoki ommaviy) va turi (int, float, bool yoki biz skriptda bo'lgani kabi AudioClip) ko'rsatilishi kerakligini bildiradi.Shu bilan birga, har qanday o'zgaruvchi nomi ham bo'lishi mumkin. Yoki darhol unga tegishli qiymat berishingiz mumkin.
  3. Usullar va funktsiyalar to'plami. C# tilidagi usul ma'lum harakatlarni bajaradigan deyarli har qanday funktsiyadir. Asosan, Unity 3D bo'yicha adabiyotlarda ular funktsiyalar deb ataladi, ammo agar biz alohida dasturlash tili sifatida C # haqida gapiradigan bo'lsak, bular, axir, usullar :). Unity'dagi sof funktsiyalar, masalan, ovoz chiqarish, GUI elementlarini chizish va boshqalar uchun standart funktsiyalar bo'lib, ular ichida usullardan foydalaniladi.

Endi skriptning tuzilishini bilgan holda, uning ma'nosini tushunish oson, bu esa quyidagilarga to'g'ri keladi... Sounds sinfida (skript) biz qulaylik uchun AudioClip tipidagi 9 ta o'zgaruvchini nomlar bilan e'lon qilamiz. ularni farqlash. Biz ularni majburiy ravishda ommaviy qilamiz (shaxsiylar muharrirda ko'rsatilmaydi va biz ularga muharrir orqali tovushlarni "osib qo'yishimiz" kerak bo'ladi). Va keyin skriptning tanasida biz "void OnMouseDown ()" standart usulidan foydalanamiz. Ilgari u faqat sichqonchani bosishni qayta ishlash uchun javobgar edi, ammo yangi versiyalarda u sensorli ekranga teginish sifatida ham talqin etiladi. Unda biz bosilgan kollayderlarning nomlarini tekshirish shartlarini yozamiz va ulardan birining bosilishini aniqlasak, tegishli tovushni chiqaramiz (biz standart audio.PlayOneShot(); funksiyasidan foydalanamiz).

Kod yozayotganda, barcha ochilish va yopish qavslarini qo'shishga ehtiyot bo'ling, aks holda siz doimiy ravishda Konsolda xato hisobotlarini olasiz va loyihangizni umuman ishga tushira olmaysiz! Usul va funksiyalar nomlarida bosh harflardan foydalanishga ham e’tibor bering. Ular ko'pincha xatolarga sabab bo'ladi. Va, albatta, barcha belgilarga (nuqta, ikki nuqta va qavs), qisqasi, til sintaksisiga rioya qiling. Avvaliga bu qiyin bo'ladi, lekin vaqt o'tishi bilan siz noldan xatosiz yozishni boshlaysiz!

Skript tayyor bo'lgach, uni tanlang va Inspektor oynasida har bir o'zgaruvchiga boshqa tovushni belgilang. Endi biz skriptimizni sahnadagi ob'ektlarga qo'llashimiz kerak. Buni qilishning eng oson yo'li skriptni to'g'ridan-to'g'ri Ierarxiya ro'yxatidagi kerakli o'yin ob'ektiga sudrab borishdir:

Agar skript to'g'ri tortilgan bo'lsa, u biz uni sudrab olib borgan ob'ekt yonidagi Inspektor oynasida paydo bo'lishi kerak. Shunga ko'ra, biz skriptni o'yinda ovoz berishi kerak bo'lgan barcha ob'ektlarga tortamiz va biz uni ishga tushirishga harakat qilishimiz mumkin. Bizning o'yin tugmachalarimizni bosganingizda, endi, nihoyat, belgilangan ovoz eshitiladi!

GUIga kirish

Aslida, o'yin bizda allaqachon ishlamoqda, ammo qandaydir tarzda u juda "kal". Unda nimadir etishmayapti... Yoki, hech bo'lmaganda, oldimizda turgan ismli yozuv! Boshqacha qilib aytganda, siz qandaydir tushunarli foydalanuvchi interfeysini amalga oshirishingiz kerak.

Aslida, GUI ingliz tilining qisqartmasi. "Grafik foydalanuvchi interfeysi", ya'ni foydalanuvchining grafik interfeysi. An'anaviy ravishda u quyidagi tarkibiy qismlarni o'z ichiga oladi:

  • tugmalar;
  • oyna;
  • matn maydonlari;
  • tasdiqlash qutilari va/yoki radio tugmalari;
  • slayderlar (aylantirish paneli) va boshqalar.

Unity 3D-da bularning barchasi (va hatto undan ham ko'proq narsa) to'liq mavjud. Asosiysi, undan qanday foydalanishni o'rganish! Keling, Unity-ning grafik interfeysi qanday qilib oddiy sarlavha yaratishi mumkinligini ko'rib chiqaylik.

Buning uchun Interface nomli yangi skript yarating va uni quyidagicha o'zgartiring:

Skrinshotdagi skriptni diqqat bilan ko'rib chiqing. Bu erda biz GUIStyle tipidagi faqat bitta umumiy o'zgaruvchini yozamiz, bu biz uchun yangi. Ushbu tur sizga ushbu uslub tayinlangan elementlarning ko'rinishini vizual ravishda o'zgartirishga imkon beradi. Uslublar bir xil turdagi ko'plab interfeys elementlari (masalan, tugmalar) mavjud bo'lganda foydalidir, lekin ular boshqacha ko'rinishga ega bo'lishi kerak.

Keyinchalik, biz quyidagi sintaksisga ega bo'lgan tugmani ("GUI.Button") yaratamiz: shart - 4 koordinata (chap chetidan gorizontal chekinish, yuqori chetidan vertikal chekinish, kenglik, balandlik) - tirnoq ichidagi ko'rinadigan matn va undan keyin. , ixtiyoriy, uslub ko'rsatkichi. Kerakli funksiyalar tugma sharti ichida yoziladi. Bizning holatlarimizda biz ishlab chiquvchilar saytiga o'tishni ro'yxatdan o'tkazdik ("Application.OpenURL("");").

GUI skriptlari har qanday oʻyin obyektlaridan ishlashi mumkin, lekin odatda ularni kameraga “osib qoʻyish” tavsiya etiladi, biz buni skriptni Asosiy kamera obyektiga sudrab olib boramiz. Endi biz uni Ierarxiya oynasida tanlasak, Inspektor oynasida biz uslubimizning umumiy o'zgaruvchisini ko'rishimiz mumkin, uni kengaytirish orqali biz ushbu uslub sozlamalariga to'liq kirish imkoniyatiga ega bo'lamiz!

Biz har qanday vaziyatda fon uchun matn rangi va teksturasini belgilashimiz mumkin (tugma uchun siz uning uchta variantini (Oddiy - normal ko'rinish, Hover - kursorda va Faol - bosganda) ro'yxatdan o'tkazishingiz kerak), to'ldirishni o'rnating va shriftni sozlang. Odatiy bo'lib, Unity 3D-da mavjud bo'lgan yagona shrift Arialdir, ammo siz loyihaga boshqa har qanday shriftni qo'lda yuklashingiz va barcha tegishli parametrlarni o'rnatgan holda "Shrift" maydoniga qo'llashingiz mumkin.

Qiziqarli va ayni paytda unchalik qulay bo'lmagan narsa shundaki, biz loyihani boshlagunimizcha GUI elementlari sahnada ko'rsatilmaydi, shuning uchun har bir elementning parametrlarini sozlash juda ko'p vaqtni talab qilishi mumkin. Keling, loyihani ishga tushiramiz va yuqorida yaratilgan tugma qanday ko'rinishini ko'ramiz:

Shart va statik o'zgaruvchilar bo'yicha interfeysni o'zgartirish

Biz allaqachon ko'p ish qildik, lekin har doim yaxshilanish uchun joy bor :) Shuning uchun men oxirgi misol sifatida oddiy ishlab chiquvchilar odatda o'z o'yinlari va ilovalarini taqdim etadigan yordam oynasini yaratishni taklif qilaman. Buni amalga oshirish uchun tasvirlar bilan papkaga savol belgisi shaklida bunday tugma uchun rasm qo'shing va undan o'yin ob'ektini yarating. Keling, unga kollayderni osib, nomi bilan skript yozamiz, masalan, quyidagi mazmundagi "Yordam":

Ushbu skriptda bizda ikkita o'zgaruvchi mavjud. Birinchi o'zgaruvchi ushbu sinfda tavsiflangan barcha interfeys elementlari uchun ishlatiladigan terini belgilaydi. Yuqorida muhokama qilgan uslublardan farqli o'laroq, terilar nafaqat ular tayinlangan alohida elementning, balki ma'lum bir turdagi barcha elementlarning ko'rinishini bir vaqtning o'zida o'zgartirishga imkon beradi. Bundan tashqari, uslublardan farqli o'laroq, terilar elementlarga tayinlanmaydi, lekin darhol butun usul uchun e'lon qilinadi va boshqa teri e'lon qilinmaguncha ishlaydi. Shuni ham yodda tutish kerakki, terilar nafaqat o'zgaruvchilar, balki alohida fayllar sifatida ham mavjud. Shuning uchun, terini e'lon qilishdan oldin uni darhol kontekst menyusidan "Loyiha" oynasida yaratishingiz kerak: "Yaratish" - "GUI terisi".

Bizda mavjud bo'lgan ikkinchi o'zgaruvchi mantiqiy (yoki boshqacha tarzda Boolean). U faqat ikkita qiymatga ega bo'lishi mumkin: "to'g'ri" (to'g'ri) yoki "noto'g'ri" (noto'g'ri). Ikkilik tabiati tufayli bunday o'zgaruvchi barcha turdagi kalitlarni amalga oshirish uchun juda mos keladi. Bizning holatda, u bizning o'yinimizni tavsiflovchi matnni ko'rsatish uchun javobgar bo'ladi.

Ammo, agar siz diqqat bilan qarasangiz, oxirgi o'zgaruvchining bitta ajoyib parametrga ega ekanligini ko'rasiz - "statik". Ushbu parametrni o'zgaruvchilarga qo'shish ularni statik qilish va boshqa skriptlardan ularga kirish imkonini beradi!

Ammo kodning qolgan qismiga qayting. Bu erda bizga allaqachon tanish bo'lgan "void OnMouseDown()" usuli oddiy shart yordamida "isVisible" o'zgaruvchisi uchun kalit bo'lib xizmat qiladi. Biroq, shartdan keyin boshqa funktsiya mavjud. Ushbu funktsiya ("Debug.Log();") Konsolga bizga kerak bo'lgan o'zgaruvchilarning qiymatlarini "tezda" chiqarish uchun ishlatiladi (biz ularni qavs ichiga qo'shtirnoqsiz kiritamiz). Ko'rib turganingizdek, funktsiya ichida siz o'zgarmas matnni (tirnoq ichida yozilgan) va o'zgaruvchilarni (tirnoqsiz) birlashtira olasiz. Asosiysi, barcha ma'lumotlar o'rtasida "+" belgisi bo'lishi kerak.

Keyinchalik skript matnida biz interfeysni chizish usuliga egamiz ("void OnGUI()()"), uning ichida biz yangi teri deklaratsiyasini ko'ramiz ("GUI.skin = HelpSkin;") va yangi. GUI.Box tipidagi interfeys elementi. Tugmachadan farqli o'laroq, quti nofaol element bo'lib, odatda turli matn yoki grafik ma'lumotlarni ko'rsatish uchun xizmat qiladi.

Quti uchun joylashuvni qanday o'rnatganimizga e'tibor bering. Bu erda barcha qiymatlar to'g'ridan-to'g'ri emas, balki matematik ifodalar yordamida ko'rsatilgan, bu aslida veb-ishlab chiqishda "suyuqlik sxemasi" ning analogidir. Muammo shundaki, turli xil ekran o'lchamlarida GUI elementlarining aniq o'lchamlarini belgilashda ular moslashmaydi va juda kichik yoki aksincha, katta bo'lishi mumkin. Dvigatelning keyingi versiyasida ishlab chiquvchilar GUI-ni moslashishga va'da berishadi, ammo hozircha biz buzg'unchilikka majburmiz :(

Muvaffaqiyat yo'lidagi so'nggi qadam terimizni sozlash bo'ladi. Biz skript o'zgaruvchisida teri faylini belgilaymiz va keyin loyiha oynasida ushbu faylni tanlaymiz. Boshqa fayllarda bo'lgani kabi, teri sozlamalari Inspektor oynasida ko'rsatiladi. Bu erda biz o'zgarishi mumkin bo'lgan elementni qidirmoqdamiz (bizning holatda, Box), uni oching va yuqorida muhokama qilingan uslubga o'xshash tarzda o'rnating:

Skriptimiz to'g'ri ishlayotganligini bilish uchun loyihani ishga tushiramiz va yordam tugmasini bosishga harakat qilamiz:

Endi hamma narsa ishlaydi, lekin tavsifni yashirish uchun yordam tugmasini bosish har doim ham qulay emas. Har qanday bildirishnomani har qanday bildirishnomaga kiritish odatiy holdir bepul joy tugmalarni nishonga olishdan ko'ra. Va bu erda biz "isVisible" o'zgaruvchisini statik qilib qo'yganimizdan, shuningdek, fon rasmiga osilgan kollayderdan foydalanishimiz kerak...

Keling, birinchi skriptimizga ("Tovushlar") qaytaylik, u tovushlarni ijro etish uchun tugmani bosish kuzatilgan. Unga faqat bitta satr yozishimiz kifoya qiladi (aniqrog'i, "void OnMouseDown ()" usuli ichida:

agar (this.name != "HelpButton")(Help.isVisible = false;)

Ushbu qator bilan biz shart qo'yamiz: agar bosilgan kollayderning nomi yordam tugmasi nomiga teng bo'lmasa, u holda "Yordam" skriptidagi "isVisible" o'zgaruvchisi "noto'g'ri" ga teng bo'ladi. Faqatgina "isVisible" o'zgaruvchisi "statik" postscriptiga ega bo'lishi kerak, aks holda biz xatoga yo'l qo'yamiz.

Endi, ishga tushirilganda, biz yordam oynamiz nafaqat yuqori o'ng burchakdagi tugmani bosganda, balki ekranning istalgan bo'sh qismiga tegganda ham yopilishini ko'ramiz. Yaxshilanishi mumkin bo'lgan yagona narsa - uni bosganingizda oynani yashirishdir ... Bu sizning "uy vazifangiz" bo'ladi;) Faqat shuni aytishim mumkinki, GUI qutisini xuddi shunday dizaynlashtirilgan tugmachaga o'zgartirish kerak bo'ladi, yana , sozlama terisi va "isVisible" o'zgaruvchisini o'zgartiruvchi funksiyani belgilash bilan. Hammasi, jim bo'ling :)

O'yinni kompilyatsiya qilish va loyihani saqlash

Nihoyat, hamma narsa biz uchun ishlaydi! Bu shuni anglatadiki, o'yinimizni saqlash va uni haqiqiy qurilmada sinab ko'rish vaqti keldi. Va buning uchun uni bajariladigan faylga (Windows uchun, masalan, EXE-da va Android uchun, APK-da) kompilyatsiya qilish kerak.

Agar siz kompyuter uchun o'yinni kompilyatsiya qilmoqchi bo'lsangiz, unda hech qanday dastlabki sozlamalarni o'rnatishingiz shart emas. Biroq, Android uchun, avvalo, biz boshidan yuklab olgan Android SDK ni ulashingiz kerak bo'ladi. Bu juda sodda tarzda amalga oshiriladi: "Tahrirlash" menyusiga o'ting, "Sozlamalar" bandiga qo'ng'iroq qiling va ochilgan oynada "Tashqi asboblar" yorlig'iga o'ting. Bu erda biz "Android SDK joylashuvi" qatorini qidirmoqdamiz va unda biz SDK bilan ochilmagan arxivga yo'lni ko'rsatamiz (quyidagi skrinshotga qarang). Aytgancha, bu erda siz sukut bo'yicha faol bo'lgan dahshatli MonoDevelop matn muharririni o'zingiz yoqtirganiga o'zgartirishingiz mumkin :)

Va endi haqiqat vaqti keldi! "Fayl" menyusiga o'ting va u erda "Yaratish sozlamalari" bandini toping. Ochilgan oynada biz darhol yig'ilish uchun sahnalarni qo'shishimiz kerak. Agar bitta sahna bo'lsa (bizning loyihamizdagi kabi), unda "Joriyni qo'shish" tugmasini bosish kifoya qiladi. Agar ularning bir nechtasi bo'lsa, siz ularning har birini ochib, xuddi shu tarzda sahnalar ro'yxatiga qo'shishingiz kerak bo'ladi, so'ngra sudrab tashlash orqali ularning kerakli tartibini moslang:

Keyingi qadam - qurish platformasini tanlash (biz Android uchun o'yinni rejalashtirmoqdamiz, ya'ni biz uni tanlaymiz) va pastdagi "O'yinchi sozlamalari" tugmasini bosing. Inspektor oynasida bir qator sozlamalar ochiladi, ulardan ba'zilari majburiy yoki juda kerakli. Sozlamalar ro'yxatining yuqori qismida ishlab chiquvchi kompaniya, dastur va uning belgisi (kompaniya nomi, mahsulot nomi va standart belgi) nomlarini ko'rsatish maqsadga muvofiqdir.

Pastki qismida "Boshqa sozlamalar" bo'limida ikkita talab qilinadigan parametr mavjud: "To'plam identifikatori" va "To'plam versiyasi". Standart versiya 1.0 sifatida o'rnatilgan, ammo identifikator qo'lda va, afzalroq, noyob yaratilishi kerak. U bir-biridan nuqtalar bilan ajratilgan uchta qismdan iborat bo'lishi kerak: ajratilgan "com" so'zi, so'ngra ishlab chiquvchi kompaniyaning nomi va oxirida dasturning o'zi.

Qolgan yig'ish sozlamalarini o'zingizning xohishingiz bilan o'zgartirishingiz yoki umuman o'zgartirmasligingiz mumkin. Asosiysi, endi kompilyatsiya allaqachon boshlanishi mumkin. Buni amalga oshirish uchun "Yaratish sozlamalari" oynasidagi "Yaratish" tugmasini bosing va dastur bizga APK faylida paketlangan tayyor dasturni berguncha kuting :)

Xulosa

Bu Android uchun eng oddiy ilovalarni yaratish bo'yicha bizning darsimizni yakunlaydi. Biz gaplashgan hamma narsani takrorlashingiz uchun maqolaning oxirida men o'yinning barcha resurslarini alohida papka sifatida saqlaydigan arxivga havola beraman (agar siz hamma narsani noldan qilishni istasangiz) va unitypackage kengaytmali fayl. Ikkinchisi butun loyihani bir vaqtning o'zida Unity-ga import qilish imkonini beradi, shu jumladan bog'liqliklar va boshqalar.

Loyihamizni import qilish uchun (va, aytmoqchi, Internet yoki Assets do'konidan yuklab olingan har qanday plaginlar) siz "Aktivlar" menyusiga o'tishingiz, "Import to'plami" bandini tanlashingiz va unda "Maxsus paket", keyin faylimizga yo'lni belgilang va "Import" tugmasini bosing. Aytgancha, siz o'zingizning loyihangizning to'liq zaxira nusxasini yaratishingiz mumkin, uni shunday birlik paketida saqlashingiz mumkin, xuddi shu menyudan ("Aktivlar") "To'plamni eksport qilish" bandini bosish orqali.

Ko'rinishidan, hamma narsa :) Unity 3D-ni noldan o'zlashtirgan odam sifatida, maqolada men maksimal savollarga javob berishga va dastlab paydo bo'lgan dvigatel bilan ishlashning asosiy nuanslarini ta'kidlashga harakat qildim. Ammo, ehtimol, bu kimdir uchun etarli bo'lmaydi, shuning uchun agar sizda biron bir savol bo'lsa, men bilan to'g'ridan-to'g'ri pochta orqali yoki forumda bog'lanishingiz mumkin: men sizga har qanday tarzda yordam beraman!

Barchangizga omad va barcha loyihalarni muvaffaqiyatli amalga oshirishni tilayman!

P.S. Agar manbaga ochiq havola ko'rsatilgan va Ruslan Tertishniyning muallifligi saqlanib qolgan bo'lsa, ushbu maqoladan erkin nusxa ko'chirish va iqtibos keltirish mumkin.