ساخت اپلیکیشن برای اندروید. استفاده از یونیتی برای توسعه برنامه ها ایجاد یک بازی سه بعدی برای اندروید

توسعه برنامه های موبایلیکی از سودآورترین مشاغل در صنعت کامپیوتر است. ساخت یک بازی اندروید صدها یا هزاران دلار هزینه دارد و سود آن می تواند به یک میلیون دلار برسد. در این راستا افراد زیادی علاقه مند به توسعه اپلیکیشن برای گوشی هستند. در این مقاله یاد می گیرید که چگونه با استفاده از کامپیوتر از ابتدا یک بازی اندروید بسازید که کدام موتور و طراح را بهتر انتخاب کنید.

هیچ یک بازی موفقبدون گرافیک زیبا نمی توان انجام داد، بنابراین ایجاد طراحی یکی از مهم ترین مراحل توسعه است. طراحی در سیستم عامل اندروید با استفاده از "سند طراحی" یا سند طراحی اجرا می شود. باید با مطالعه دقیق آن اسباب بازی را شروع کنید. فایل شامل:

  1. مدل های شی
  2. مشخصات عملکردی؛
  3. محتوای بازی؛
  4. رابط.

بیایید هر یک از نکات را با جزئیات بیشتری در نظر بگیریم.

مدل های شی

این اطلاعات در مورد عملکرد هر مورد است. مدل های آبجکت توانایی خرید و فروش اقلام و همچنین بهبود ویژگی های بازی شخصیت ها را بر عهده دارند.

مشخصات عملکردی

این گیم پلی، ویژگی های اصلی هر شخصیت را توصیف می کند. همچنین ویژگی ها را توضیح می دهد آیتم های بازی- سلاح، کیت کمک های اولیه، زره و غیره. در اصل، مشخصات عملکردی قوانینی هستند که فرآیند بازی بر اساس آنها انجام می شود. هرچه این بخش بهتر کار شود، ساخت یک بازی اندروید با کیفیت آسان تر خواهد بود.

محتوای بازی

این متن پر کردن بازی است. دیالوگ‌های شخصیت‌ها و اینکه از چه سلاح‌هایی می‌توان برای آسیب رساندن استفاده کرد، میزان سلامتی یک ضربه، چه ویژگی‌هایی در هنگام استفاده از تجهیزات مختلف افزایش می‌یابد، توضیح می‌دهد. همچنین شامل توصیف همراه با جزئیاتهر مورد.

رابط

رابط کاربری نحوه تعامل کاربر با بازی است. این شامل دکمه هایی است که با آن می توانید شخصیت و بخش های منو را کنترل کنید: به عنوان مثال، بازی، امتیاز، تنظیمات، بازیکنان برتر، کمک. اگر تجربه ای در ساخت اپلیکیشن اندروید ندارید، قبل از ایجاد اپلیکیشن خود، از Play Market دانلود کنید و بازی های محبوب را آنالیز کنید و بهترین راه حل ها را به پروژه خود منتقل کنید.

موتور بازی

هسته اصلی هر بازی موتور است. این نرم افزاری است که به شما امکان توسعه و اجرای آن را می دهد. این شامل طیف وسیعی از برنامه ها، از جمله یک موتور رندر، یک موتور فیزیک، صدا، انیمیشن، و بسیاری دیگر است. برای تسهیل روند نوشتن برنامه ها، توسعه دهندگان شخص ثالث موتورهای بازی خود را به طور خاص برای برنامه های اندروید ایجاد می کنند.

هر یک از آنها ویژگی های مختلفی را ارائه می دهد: برخی برای 3 بعدی طراحی شده اند، برخی دیگر برای 2D طراحی شده اند، می توان از چند پلتفرم پشتیبانی کرد. تعداد زیادی از این موتورها وجود دارد، اما اگر مبتدی هستید، بهتر است یکی از محبوب ترین ها را انتخاب کنید، زیرا تمام عملکردهای لازم در آنجا وجود دارد.

UDK

گشتاور 2d/3d

طراح بازی چیست؟

Constructor برنامه ای است که یک موتور بازی و یک محیط توسعه یکپارچه را ترکیب می کند. سازنده فرآیند توسعه را برای افرادی که مهارت برنامه نویسی ندارند قابل دسترسی می کند. برخی از طراحان به شما اجازه می دهند بازی هایی با ژانرهای خاص ایجاد کنید، برخی دیگر حداکثر عملکرد را دارند، اما هزینه بسیار بیشتری دارند. برای یک سازنده مبتدی اپلیکیشن های موبایل، انتخاب طراح یکی از حیاتی ترین لحظات است، زیرا سرنوشت اپلیکیشن آینده به قابلیت های آن بستگی دارد.

سازنده به شما اجازه می دهد تا بازی هایی در سبک های مختلف برای ویندوز، اندروید و iOS ایجاد کنید. ارائه می دهد انتخاب بزرگلوکیشن ها، اشیاء، کاراکترها و طراحی صدا آماده است، بنابراین ساخت اولین بازی اندروید زمان زیادی نمی برد. کاربرانی که با زبان های برنامه نویسی JS و C++ آشنا هستند می توانند از GML تعبیه شده استفاده کنند. تنها اشکال این است که برنامه به روسی ترجمه نشده است.

نتیجه

ساخت یک بازی اندروید یک تجارت آسان نیست، اما بسیار سودآور است. اگر تصمیم دارید یک بازی توسعه دهید و از آن پول در بیاورید، ابتدا ایده خود را بررسی کنید. بعد، یک "سند طراحی" بنویسید و در مورد موتور بازی تصمیم بگیرید که بتواند پتانسیل خود را به حداکثر برساند. پس از آن، می توانید مستقیماً به ایجاد برنامه در سازنده اقدام کنید.

ویدئو

برای کسب اطلاعات بیشتر در مورد فرآیند ساخت بازی های اندروید، سری ویدیوهای مربوط به این فعالیت را بررسی کنید.

یونیتی موتوری است که بر روی آن اکثر بازی های مدرندر پلتفرم های مختلف از طریق موتور، می توان بازی هایی را ایجاد کرد که برای اجرا بر روی رایانه (ویندوز، لینوکس، مک او اس)، تلفن های همراه، رایانه های لوحی (اندروید، iOS) و حتی کنسول های بازیپلی استیشن، ایکس باکس، نینتندو.

چگونه در یونیتی بازی بسازیم؟

وحدت بر یک مفهوم مولفه گرا استوار است. در واقع، هر بازی از انبوهی از اشیاء رقیق شده با اجزای اضافی تشکیل شده است. به عنوان مثال، در حین ایجاد یک پلتفرمر، یک GameObject ایجاد می کنیم، علاوه بر این یک قطعه گرافیکی را به آن متصل می کنیم که وظیفه نمایش کاراکتر را بر عهده دارد و یک جزء کنترلی، کنترل کاراکتر را با استفاده از ماوس، صفحه کلید، جوی استیک یا کنترل می کند. صفحه لمسی. موتور محدودیتی برای تعداد این ماژول ها اعمال نمی کند. می‌توانیم هر تعداد کامپوننت را به GameObject اضافه کنیم. تمام کارهای روی موتور بر اساس ایجاد GameObject و استفاده از اجزای مناسب برای آنها است.

مبتدیان ممکن است با سادگی ظاهری فرآیند گمراه شوند، اگرچه اینطور نیست. برای ایجاد یک و بازی محبوبشما باید کامپوننت های زیادی را از ابتدا بنویسید. به طور دقیق تر، در محیط Unity به این اسکریپت می گویند. زبان اسکریپت بومی C# است، اما جاوا اسکریپت و Boo (نسخه برش خورده پایتون) نیز تا حدی استفاده می شود. ایجاد اجزای خود آسان نیست، حتی می توان گفت که این یک روش پیچیده است که مستقیماً با برنامه نویسی کلاسیک مرتبط است. بدون دانش کافی در برنامه نویسی، کار سختی خواهد بود.

پلتفرم های پشتیبانی شده

بسیاری از پروژه های بزرگ Unity را به دلیل لیست عظیمی از پلتفرم های سازگار با موتور ترجیح می دهند. برنامه تمام شده را می توان بر روی هر سیستم عامل رایانه، پلت فرم های محبوب تلفن همراه و تلویزیون هوشمند راه اندازی کرد. چه می توانیم بگوییم، حتی بازی های مرورگر و برنامه های کاربردی برای سیستم عامل های خاص ( مانند سیستم عامل تایزن) عمدتاً در Unity توسعه یافته اند.

با این حال، همه چیز در اینجا چندان هموار نیست. در صورت لزوم، می توانید الگوریتم های خاصی را بر اساس کدهای سطح پایین بنویسید، برای همان اندروید باید دانش کاملی از جاوا داشته باشید.

همین امر در مورد iOS نیز صادق است. یکی دیگه ویژگی iOSکه می توان آن را فقط از طریق رایانه یا تبلت اپل توسعه داد. در صورت عدم وجود مک بوک یا دستگاه مشابه، انتشار بازی به سرعت متوقف می شود و یونیتی هیچ ربطی به آن ندارد، خود اپل نیز محدودیت مشابهی را اعمال می کند. نتیجه گیری ساده است: اگر توسعه iOS در برنامه ها وجود دارد، باید از قبل یک دستگاه مناسب برای مونتاژ انتخاب کنید.

چگونه و کجا یک بازی را روی موتور توسعه دهیم؟

ما می‌توانیم یک فرآیند طولانی توسعه بازی را هم در ویندوز و هم در Mac OS X انجام دهیم. نسخه‌هایی از ویرایشگر برای لینوکس قبلاً وجود دارد، اما تاکنون نمی‌توانیم روی عملکرد پایدار آنها حساب کنیم. یک توسعه دهنده بیشتر وقت خود را صرف ایجاد یک بازی در ویرایشگر Unity می کند. ما هنوز زمان زیادی برای نوشتن کد اسکریپت داریم، می‌توانیم آن را در MonoDevelop استاندارد یا در هر ویرایشگر شخص ثالث ایجاد کنیم. اکنون آنها به طور فعال از Visual Studio و همچنین Sublime Text استفاده می کنند، اما فقط با پیکربندی مناسب.

سلام به همه! با یادگیری نحوه ساخت بازی روی این موتور، می خواهم همین کار را به شما آموزش دهم. اول، ما به خود Unity3d، هر ویرایشگر مدل سه بعدی و بازوهای مستقیم که از روی شانه ها رشد می کنند نیاز داریم.

1. یادگیری برنامه

برای شروع، من نصب Monodevelop را توصیه می کنم! بیایید بفهمیم یونیتی چیست. Unity یک محیط توسعه بازی چند پلتفرمی است. به دلیل سادگی و قابل درک بودن آن است که هر نفر سوم حداقل یک بار روی آن بازی ساخته است.

اسکرین شات بالا را در نظر بگیرید:

  • صحنه ماسهبازی خلاق شماست.
  • پروژه - در اینجا همه انیمیشن ها و مدل ها، صداها و بافت ها وجود دارد.
  • برای نصب مدل‌ها در نوار ابزار بالا، Assets-Import New Asset را انتخاب کنید. شما همچنین می توانید دارایی ها-واردات بسته-بسته سفارشی. در حالت دوم، بسته باید در پسوند .unity باشد.
  • سلسله مراتب - همه اشیاء در صحنه. در آنجا پدر و مادر را برای شی ایجاد می کنید. فقط یک شی را در منوی سلسله مراتبی به دیگری منتقل کنید، و پیوست خواهد شد. نتیجه یک نوع پوشه خواهد بود.
  • نوار ابزار - فهرست ابزارها. در آنجا می توانید حالت دو بعدی، سه بعدی را فعال کنید.
  • Inspector - ویژگی یک شی، که در آن انیمیشن ها، اسکریپت ها و موارد دیگر را اضافه می کنید. در آنجا می توانید از ابزارها استفاده کنید: دوربین را حرکت دهید، جسم را حرکت دهید، کشش دهید، جسم را بچرخانید.


اکنون منوی شی را در آن می بینید و می توانید انیمیشن، اسکریپت و موارد دیگر را اضافه کنید.

فکر می کنم با این منو مشکلی نخواهید داشت.
برای ایجاد هر شی کلیک کنید.

به طور کلی، ما برنامه را مطالعه کرده ایم، به زودی امکان نوشتن بازی های خودمان وجود خواهد داشت.

2. یک بازی ساده بسازید

ابتدا بیایید یک منطقه Create-Terrain ایجاد کنیم. چمن و درخت را اضافه کنید. با کلیک بر روی زمین در سمت راست، پنجره ای ظاهر می شود، درختان، چمن را انتخاب کنید.


همچنین کوه ها و دست اندازها ایجاد کنید. سپس بسته کنترلر Characher را در پروژه بارگذاری کنید. سپس در پنجره با پروژه Standard assets-Characters controller جستجو می کنیم و نمای اول شخص (کپسول) یا نمای سوم شخص (مکانیک) را انتخاب می کنیم.
اگر نفر اول است، آن را روی زمین بگذارید. اگر از سومین، پس باید انیمیشن را دانلود کنید. من همچنین توصیه می کنم نور صحنه را روی Create-Directional Light تنظیم کنید.


برای افزودن موسیقی، آن را به مورد مورد نظر بکشید.
بازی آماده است، اما چگونه آن را کامپایل کنیم؟

برای انجام این کار، به File-Build settings-player settings (برای برچسب و نام) بروید. یک پلت فرم و voila را انتخاب کنید، کار شما تمام شده است. برای این کار باید Android SDK را نصب کنید. اما در آنجا باید پوشه با SDK را مشخص کنید و نه فقط به SDK بلکه به API سطح مورد نظر نیاز دارید (مثلاً Android 4.2 دارای API 17 است). به عنوان مثال، برای اینکه بازی روی اندروید 4.0+ باشد، باید این API ها را نصب کنید.

در مقاله بعدی به شما خواهم گفت که چگونه کنترل ها را برای اندروید یا iOS تنظیم کنید و نحوه نوشتن اسکریپت را خودتان یاد بگیرید.

بازدید پست: 19 374

ما در مورد اینکه چگونه می توانید با استفاده از Unreal Engine بازی خود را در اندروید بسازید صحبت کردیم. در این مقاله، ما به یکی دیگر از موتورهای توسعه بازی به همان اندازه محبوب نگاه خواهیم کرد - وحدت.

Unity یک موتور بسیار معروف در بین توسعه دهندگان مستقل است. در واقع، این یک موتور کراس پلتفرم است که به شما امکان توسعه را می دهد سه بعدی- و 2 بعدی-بازی ها. ویژگی که Unity را از سایر موتورها متمایز می کند، آستانه ورود کم برای مبتدیان است، در حالی که دارای یک جعبه ابزار غنی برای حرفه ای ها است. کراس پلتفرم به شما امکان می دهد برنامه های کاربردی را برای هر پلتفرمی، از بازی های دسکتاپ گرفته تا موبایل، توسعه دهید.

به طور جداگانه، لازم است به سیستم اشتراک اشاره شود، زیرا Unity یک محصول کاملا رایگان نیست. چندین نوع اشتراک وجود دارد:

  • شخصی. نسخه رایگان که شامل تمام ویژگی های اصلی موتور است. این محدودیت زیر را دارد: درآمد در سال یا مقدار وجوه جمع آوری شده نباید از آن تجاوز کند 100000$ .
  • به علاوه. مطابق 35 دلار در ماهگزارش ها و تجزیه و تحلیل های مختلف و همچنین امکان تغییر صفحه نمایش اسپلش ارائه شده است. 20% - تخفیف برای خرید در فروشگاه داراییو مزایای جزئی مختلف این محدودیت زیر را دارد: درآمد سال یا مقدار وجوه جمع آوری شده نباید بیشتر از آن باشد 200000$ .
  • حرفه ای. مطابق 125 دلار در ماهشامل تمام مزایای نسخه است به علاوهو همچنین خدمات حرفه ای و پشتیبانی برتر. بدون محدودیت در گردش مالی یا مقدار وجوه.
  • نسخه های جداگانه برای تجارت (که توسط شرکت های بزرگ استفاده می شود).

بنابراین، توسعه دهندگان مستقل با بودجه کم باید از نسخه راضی باشند شخصییا به علاوهدر غیر این صورت باید مشترک شوید حرفه ای. در این مقاله استفاده خواهیم کرد نسخه رایگانبرای اولین اجرا

مرحله 1 Unity را نصب کنید

برای شروع نصب یونیتی، باید به وب سایت فروشگاه یونیتی بروید، در آنجا از شما خواسته می شود تا نوع اشتراک را انتخاب کنید. همانطور که در بالا ذکر شد، ما انتخاب می کنیم شخصی.

سپس از شما خواسته می شود که شرایط استفاده را بپذیرید و نصب کننده را دانلود کنید. شما همچنین می توانید بررسی کنید سیستم مورد نیازبرای کار با یونیتی

پس از راه‌اندازی نصب‌کننده، از شما خواسته می‌شود که انتخاب کنید کدام مؤلفه‌ها را نصب کنید. از آنجایی که باید یک برنامه اندروید بسازیم، کادر مربوطه را علامت می زنیم پشتیبانی از ساخت اندروید. همچنین در صورت تمایل به جای با یونیتی می توانید نصب کنید انجمن ویژوال استودیو 2017برای برنامه نویسی در سی شارپ.

پس از آن، تنها چیزی که باقی می ماند این است که مسیر نصب را انتخاب کرده و شروع به نصب Unity کنید.

مرحله 2: ثبت نام و راه اندازی Unity

پس از اتمام نصب و اجرای Unity، از ما خواسته می شود که با حساب کاربری خود وارد شوید.

سپس دوباره از شما خواسته می شود که اشتراکی را انتخاب کنید، ما نیز روی Personal تمرکز خواهیم کرد. در این صورت، باید تأیید کنید که درآمد سالانه شرکت کمتر از 100000 دلار است یا اینکه Unity برای اهداف آموزشی استفاده می شود.

در پایان، پیشنهاد می شود یک نظرسنجی کوچک انجام دهید که در آن باید پاسخ دهید که چه کاری انجام می دهید و برای چه هدفی Unity را نصب می کنید.

مرحله 3. یک پروژه جدید ایجاد کنید

با پیکربندی Unity، برای انتخاب / ایجاد یک پروژه به صفحه نمایش می رویم. اینجا کلیک کنید جدیدبرای ایجاد پروژه جدید خود

پس از آن، در پنجره ای که ظاهر می شود، از شما خواسته می شود نام پروژه و دایرکتوری که در آن قرار دارد را وارد کنید. همچنین فراموش نکنید که کادر را علامت بزنید سه بعدیبرای استفاده از ویرایشگر در حالت سه بعدی.

پس از انجام این کار، کلیک کنید پروژه ایجاد کنیدبرای ایجاد یک پروژه پس از آن، یک پنجره ویرایشگر با یک صحنه از پیش تولید شده باز می شود.

بیایید فعلاً به پیچیدگی های برنامه نویسی نپردازیم و یک بازی تمام شده را مثال بزنیم. برای این وجود دارد فروشگاه داراییکه شامل تعداد زیادی مدل، انیمیشن، صدا (و حتی بازی) آماده و رایگان است.

برای باز کردن فروشگاه دارایی، در منو نیاز دارید پنجرهانتخاب کنید فروشگاه دارایی(ترکیب کلید ctrl-9).

ویترین فروشگاه باز خواهد شد. در نوار جستجو وارد کنید " بازی نمونه سبک پرنده شل و ولو یک مثال رایگان را باز کنید که در پروژه خود از آن استفاده خواهیم کرد.

کلیک کردن دانلودو بنابراین با دانلود آن، می توانید آن را به پروژه خود وارد کنید. برای انجام این کار، کلیک کنید وارد كردن، پس از آن اخطاری مبنی بر تغییر تنظیمات پروژه پس از وارد کردن ظاهر می شود.

پس از موافقت با وارد کردن، پنجره ای را مشاهده خواهید کرد که در آن باید انتخاب کنید کدام اجزا را وارد کنید. همه را انتخاب کنید و کلیک کنید وارد كردن.

پس از تکمیل واردات، فایل های جدید را در مرورگر پروژه مشاهده خواهید کرد. اینم فایل های بازی برای باز کردن صحنه در ویرایشگر، باز کنید پرنده شل و ولسبک - صحنه هایو دوبار کلیک کنید اصلی.

در نتیجه صحنه بازی در پنجره ویرایشگر سه بعدی ظاهر می شود.

با کلیک بر روی دکمه می توانید نحوه عملکرد بازی را در یونیتی بررسی کنید بازیبالای پنجره ویرایشگر

مرحله 4 پیکربندی ابزار اندروید

توجه داشته باشید:اگر استفاده می کنید استودیو اندروید، پس از قبل همه چیز را نصب کرده اید اجزای لازمو بنابراین می توانید با خیال راحت به مرحله بعدی بروید.

برای مونتاژ بازی به دست آمده در اندروید، باید ابزارهای زیر را نصب کنید:

  • کیت توسعه جاوا (JDK).می توانید آن را از وب سایت جاوا دانلود کنید. با کلیک بر روی لینک، در بالای صفحه مشاهده خواهید کرد پلتفرم جاوا (JDK)، کلیک کنید دانلوددر کنار کتیبه، سپس خود را انتخاب کنید سیستم عاملو شروع به دانلود کنید. پس از آن فقط دستورالعمل های نصب کننده را دنبال کنید.
  • Android SDK. توسط بیشتر به روشی سادهبرای نصب آخرین نسخه، اندروید استودیو را دانلود کنید که این SDK با آن ارائه می شود. برای این کار به سایت اندروید استودیو رفته و کلیک کنید اندروید استودیو را دانلود کنید. نصب کننده Android Studio اجزای اصلی Android SDK مورد نیاز برای توسعه Android را نصب می کند.

مرحله 5. پروژه را برای راه اندازی آماده کنید

ابتدا باید پلتفرم توسعه را به اندروید تغییر دهید. برای این کار در Unity منوی File را باز کرده و Build Settings را انتخاب کنید.

در پنجره ای که ظاهر می شود، را انتخاب کنید اندرویدو سپس فشار دهید پلت فرم سوئیچ.

سوئیچ پلتفرم به ما می گوید که در حال ساخت یک برنامه اندرویدی خواهیم بود. این بدان معناست که وقتی برنامه را می سازیم، Unity ایجاد می کند فایل APK. سوئیچ پلتفرم همچنین Unity را مجبور می‌کند تا همه دارایی‌های پروژه را دوباره وارد کند. این کار در یک پروژه کوچک زیاد طول نمی کشد، اما به خاطر داشته باشید که این عملیات در پروژه های بزرگ می تواند زمان زیادی را ببرد.

حال باید یک نام پکیج برای اپلیکیشن ارائه کنیم.

توجه داشته باشید:نام بسته یک شناسه منحصر به فرد برای برنامه است و به سبک DNS معکوس در قالب نوشته شده است com.CompanyName.ProductName. پس از انتشار برنامه در گوگل پلینام بسته دیگر قابل تغییر نیست.

برای انجام این کار، به منو بروید ویرایش کنیدو انتخاب کنید تنظیمات پروژه - پخش کننده.

در سمت راست یونیتی، پنجره ای با تنظیمات مختلف مانند نسخه برنامه، هدف و حداقل SDK، انتخاب آیکون و غیره باز می شود. در اینجا ما در بلوک نیاز داریم تنظیمات دیگرپیدا کردن شناساییو نام بسته را در فیلد تنظیم کنید نام بسته. در صورت تمایل می توانید تنظیمات دیگر را نیز تغییر دهید.

اکنون فقط تعیین مسیر Android SDK و JDK باقی مانده است. برای این کار به منو رفته و انتخاب کنید ویرایش تنظیمات.

در پنجره ای که ظاهر می شود، به ابزارهای خارجیو در مزارع SDKو JDKمسیرهای مناسب را مشخص کنید و سپس پنجره را ببندید.

مرحله 6: ساخت و اجرای برنامه

وقت آن رسیده است که اولین اپلیکیشن Unity خود را بسازید. برای انجام این کار، از منو انتخاب کنید فایل - تنظیمات ساخت. پنجره ای باز می شود که در آن باید صحنه ای را که می خواهید جمع آوری کنید اضافه کنید. از آنجایی که ما قبلاً این صحنه را در ویرایشگر باز کرده ایم، کافیست کلیک کنید اضافه کردن صحنه های بازبرای اضافه کردن آن به اسمبلی، پس از افزودن آن، آن را در لیست صحنه ها مشاهده خواهید کرد.

فقط فشار دادن باقی می ماند ساختن، پس از آن Unity شروع به ساخت برنامه می کند. قبل از آن، ممکن است از شما خواسته شود که پوشه ای را انتخاب کنید که فایل های برنامه جمع آوری شده و همچنین نام فایل APK در آن ذخیره شوند.

توجه داشته باشید:بر روی این لحظهاگر نسخه آلفا را در Android SDK نصب کرده اید ابزارهای ساخت(نسخه 28.0.0-rc1)، هنگام ساخت Gradle خطا می دهد. برای رفع این مشکل، به سادگی این نسخه را از Android SDK حذف کنید.

در نتیجه، فایل APK ساخته شده در پوشه ای که مشخص کرده اید ظاهر می شود و آماده نصب در شبیه ساز یا روی یک دستگاه واقعی است.

بیایید ببینیم داخل APK ساخته شده چیست. برای این کار از برنامه کاربردی استفاده می کنیم تحلیلگر APK، که با اندروید استودیو موجود است،

اندازه فایل APK فشرده نشده است 21.1 مگابایت، به صورت فشرده 20.9 مگابایت. همانطور که از نمودار می بینید، بیشتر حجم توسط کتابخانه های شخص ثالث اضافه شده توسط Unity اشغال شده است. سپس در دارایی هایتمام منابعی که در صحنه مونتاژ شده استفاده می شود قرار دارند. فایل classes.dexفقط شامل 89 کلاس ها و 479 مواد و روش ها.

علاوه بر این، اگر نگاه کنید AndroidManifest.xml، برنامه از یک فعالیت تشکیل شده است.

نتیجه

همین. در این مقاله نحوه نصب و پیکربندی Unity را یاد گرفتیم و همچنین اولین برنامه اندروید خود را ساختیم.

چگونه سریع و نسبتا آسان یک بازی یا اپلیکیشن ساده برای اندروید بسازیم؟ در مقاله زیر که به کار با موتور Unity3D می پردازد، این موضوع را بخوانید.

آیا بازی کامپیوتری میکنید؟ اگر چنین است، پس، مطمئناً، در روند عبور از بلاک باستر بعدی بازی، گاهی اوقات افکاری مانند: "اما اینجا، من اشتباه می کردم!". آیا می خواهید خودتان یک توسعه دهنده باشید؟ سپس، من یک "ماجراجویی" کوچک، اما بسیار سرگرم کننده را به شما پیشنهاد می کنم؛)

موتور چیست و چرا به آن نیاز است؟

پیش از این، در زمان اولین رایانه ها، بازی ها و برنامه ها با روش به اصطلاح "هاردکور" ساخته می شدند. یعنی برای یک توسعه کامل، نیاز به یک برنامه نویس نسبتاً با تجربه بود که زبان برنامه نویسی خود را کاملاً بلد باشد و بتواند تقریباً کل بازی (از جمله گرافیک پیکسل و جلوه های ویژه!) را در یک Notepad ساده بنویسد. چنین افرادی کم بودند و ارزش زیادی داشتند (و هنوز هم ارزش دارند) ...

امروزه آستانه ورود به مبحث برنامه نویسی به میزان قابل توجهی کاهش یافته است. و این نه تنها با در دسترس بودن ادبیات و انواع مواد آموزشی، بلکه با فرآیند توسعه به طور فزاینده ساده شده تسهیل می شود. امروزه به ندرت می توان با افراد "هاردکور" واقعی ملاقات کرد، زیرا محیط های توسعه بسیار مناسبی ظاهر شده است که به آنها "موتور" می گویند.

ماهیت موتور این است که به شما امکان می دهد تمام اشیاء بازی لازم را در حالت بصری ساده شده وارد کنید، آنها را در یک مرحله مجازی مرتب کنید و تمام پارامترهای آنها را پیکربندی کنید. یعنی وظیفه برنامه نویس فقط نوشتن درست منطق بازیه!

با این حال، شما باید هزینه راحتی کار را با افزایش جزئی در اندازه پروژه (گاهی حتی چندین برابر!) در مقایسه با همتای خود که به روش قدیمی "هاردکور" نوشته شده است، بپردازید. به همین دلیل است که برخی از توسعه دهندگان موتورها را دوست ندارند یا سعی می کنند موتورهای خود را بنویسند که در آن فقط از اجزای مورد نیاز آنها استفاده می شود ...

اما من و شما از برنامه نویسان واقعی فاصله داریم :) بنابراین، بیایید یک بازی ساده برای اندروید بر اساس موتور محبوب و قدرتمند Unity3D بسازیم.

شروع کار با یک پروژه در Unity3D

بنابراین، چرا تصمیم گرفتیم از Unity3D استفاده کنیم:

  • توانایی ایجاد بازی های دو بعدی و سه بعدی کامل؛
  • توانایی کامپایل بازی تمام شده برای هر دستگاه؛
  • سهولت نسبی کنترل موتور؛
  • توسعه خوب عملکرد با اتصال پلاگین ها.
  • اندازه نسبتا کوچک مونتاژ نهایی بازی (در مقایسه با موتورهای دیگر).

برگ برنده اصلی Unity3D البته همه کاره بودن و چند پلتفرمی بودن آن است. بازی تمام شد(شاید با کمی اصلاح) می توانید به رایانه شخصی (ویندوز، لینوکس یا MacOS)، اندروید، پلی استیشن یا ایکس باکس پورت کنید! برای انجام این کار، ما باید فقط خود موتور را بارگیری کنیم، که به هر حال، وزن آن بیش از یک گیگابایت و SDK های لازم است (در صورت برنامه ریزی برای توسعه پلتفرم های موبایلیا کنسول). اگر می خواهید یک بازی برای ویندوز بسازید، پس نیازی به دانلود ندارید، اما از آنجایی که قصد داریم یک بازی برای اندروید بسازیم، باید اندروید SDK (کیت توسعه نرم افزار) را نیز دانلود کنیم. من به شما توصیه می کنم برای راحتی بیشتر کار با آن، SDK را در یک آرشیو ZIP دانلود کنید.

وقتی همه چیز دانلود شد، می‌توانید بسته‌بندی را در هر پوشه Android SDK که برای شما مناسب است باز کنید و سپس اقدام به نصب Unity3D کنید. این برنامه مانند هر برنامه معمولی ویندوز نصب شده است، بنابراین هیچ مشکلی در نصب وجود ندارد. پس از نصب، موتور شروع به کار می کند و ابتدا باید یک پروژه جدید ایجاد کنیم:

برای انجام این کار، باید تمام پنجره های خوش آمدگویی و مقدماتی را ببندیم و سپس از منوی «فایل» «پروژه جدید» را انتخاب کنیم. در پنجره ای که باز می شود (به تصویر بالا مراجعه کنید)، از ما خواسته می شود پوشه ذخیره پروژه را مشخص کنیم (نام آن با نام پروژه یکسان خواهد بود)، مجموعه ای از توابع استاندارد را وارد کرده (به آنها نیازی نداریم) و مشخص کنیم حالت عملکرد 2D را به عنوان حالت انتخاب کنید و روی دکمه "ایجاد" کلیک کنید. این قسمت مقدماتی کار را کامل می کند :)

رابط موتور و سلسله مراتب پروژه

پس از ایجاد پروژه، در فضای کاری Unity3D بارگذاری می شود:

این فضای کاری خود ساختاری مدولار دارد و از چندین پنجره تو در تو تشکیل شده است که به دلخواه می توان آنها را جابجا کرد. من آن را اینگونه تنظیم کرده ام (از چپ به راست و از بالا به پایین):

  1. پنجره سلسله مراتبی - موقعیت سلسله مراتبی اشیاء فعال و غیرفعال را در صحنه نمایش می دهد. به طور پیش فرض، تنها شی بلافاصله در لیست دوربین اصلی است.
  2. پنجره صحنه - کل صحنه بازی و اشیاء روی آن (از جمله دوربین ها، صداها، بافت ها و غیره) را نمایش می دهد.
  3. پنجره Inspector - تمام خصوصیات شی انتخاب شده در سلسله مراتب یا روی صحنه را نمایش می دهد و به شما امکان ویرایش، تکمیل یا حذف آنها را می دهد.
  4. پنجره بازی - دنیای بازی را نمایش می دهد که برای دوربین قابل مشاهده است و به شما امکان می دهد اندازه پنجره آزمایشی بازی مجازی را بر حسب پیکسل انتخاب کنید. همچنین به شما امکان می دهد گسترش پنجره بازی را در اندازه کامل (Maximize on Play) فعال کنید و نمایش اطلاعات مختلف را برای توسعه دهنده فعال یا غیرفعال کنید.
  5. پنجره های پروژه و کنسول پنجره Project برای پیمایش در منابع پروژه استفاده می شود: تصاویر آپلود شده، صداها، مدل ها و غیره. همچنین با استفاده از این پنجره (منوی زمینه) می توانید آبجکت های خالی جدید بازی با انواع و اسکریپت های مختلف ایجاد کنید. پنجره Console برای نمایش پیام های خطا (قرمز)، هشدارها (زرد) و اطلاعات اشکال زدایی مختلف درخواست شده توسط شما (خاکستری) استفاده می شود.
  6. پنجره Assets Label قسمت پایینی پنجره بازرس است که پیش نمایشی از شی یا فایل انتخاب شده در پنجره Project را نمایش می دهد.

علاوه بر تمام موارد فوق، به سه دکمه در مرکز بالا توجه کنید. آنها به شما اجازه می دهند پروژه خود را شروع کنید، آن را متوقف کنید (به عنوان مثال، گاهی اوقات هنگام اشکال زدایی برای دیدن کارهایی که در سلسله مراتب انجام می شود مفید است) و بر این اساس، آن را خاموش کنید.

ما یک شبیه ساز یک آلات موسیقی ایجاد خواهیم کرد: طبل های محلی هند به نام "تابلا"، بنابراین، برای شروع، دو پوشه خالی در پروژه ایجاد می کنیم که صداها و تصاویر در آن ذخیره می شوند. می توانید با فراخوانی منوی زمینه در پنجره Project Navigator و انتخاب مورد "Folder" از لیست "Create" یک پوشه جدید ایجاد کنید.

در اینجا لازم است چند کلمه در مورد نحوه نامگذاری این پوشه ها بیان شود. برای یک بازی ساده، مانند شبیه ساز ما، در اصل، پوشه ها را می توان همانطور که دوست دارید "نام" کرد، با این حال، حداقل دو نام وجود دارد که بهتر است از آنها استفاده نکنید، زیرا توسط موتور رزرو شده اند. اینها نام منابع و پلاگین ها هستند. در پروژه‌های بزرگ، پوشه Resources بلافاصله ایجاد می‌شود و تمام «قطعات یدکی» بازی (تصاویر، صداها، مدل‌ها، بافت‌ها و پیش ساخته‌ها) قبلاً در آن ذخیره می‌شوند (بر اساس زیر پوشه‌ها مرتب شده‌اند). در پلاگین ها، همانطور که از نام آن پیداست، تمام مجموعه های اضافی از توابع شخص ثالث (به اصطلاح "دارایی ها" (دارایی)) ذخیره می شوند که تعداد کمی از آنها در Asset Store وجود دارد - یک فروشگاه برای برنامه های افزودنی برای Unity3D.

وارد کردن فایل ها و ایجاد اشیاء بازی

قبل از ایجاد یک پروژه بازی جدید، توصیه می شود از قبل تمام فایل های لازم برای عملکرد آن را آماده کنید. در مورد ما، این فایل ها تصاویر و صداها هستند. ساده ترین راه برای وارد کردن آنها به یک پروژه، کشیدن و رها کردن آنها در پوشه مورد نظر است. بیایید با تصاویر شروع کنیم ...

پس از اینکه تصاویر در پوشه Images ما ظاهر شدند، باید کمی اصلاح شوند:

واقعیت این است که به طور پیش فرض Unity3D تمام تصاویر اضافه شده به پروژه را با کاهش کیفیت فشرده می کند. اگر به چنین ضرری نیاز نداریم (مخصوصاً برای بازی هایی با گرافیک HD)، باید هر تصویر را انتخاب کرده و در پنجره Inspector مقدار پارامتر "Format" را از "Compressed" به "Truecolor" در "Default" تغییر دهیم. "برگه همچنین ممکن است لازم باشد پارامتر "Max Size" را در صورتی که کوچکتر از عرض تصویر واقعی است (پیش فرض 1024 پیکسل) تغییر دهید. پس از تمام تغییرات، باید به خاطر داشته باشید که روی دکمه "اعمال" کلیک کنید تا آنها را اعمال کنید. در صورت لزوم، اقدامات مشابهی را برای سایر تصاویر انجام می دهیم.

حالا بیایید از تصاویر خود اشیاء بازی بسازیم. برای این کار کافی است تصویر مورد نظر را به پنجره Hierarchy بکشید. تصویر یا مدل سه بعدی به طور خودکار به یک شی بازی تبدیل می شود و در نقطه شروع مختصات مقابل دوربین نمایش داده می شود.

اول از همه، یک تصویر پس زمینه اضافه کردیم که باید به صورت تمام صفحه نمایش داده شود. می توانید با انتخاب دوربین در پنجره سلسله مراتبی و مشاهده نحوه نمایش قاب آن بررسی کنید که آیا این چنین است. در اسکرین شات بالا می بینید که بخشی از پس زمینه ما خارج از دید دوربین باقی می ماند، بنابراین باید اندازه این نما را با کشیدن فریم به طور مستقیم روی صحنه یا با ویرایش پارامتر "Size" در پنجره Inspector تنظیم کنیم. در مورد ما، باید مقدار پیش فرض (5) را به 5.4 تغییر می دادیم.

همین، دیگر دوربین را لمس نمی کنیم، اما بقیه تصاویر را اضافه و تنظیم می کنیم. هنگام اضافه کردن، می بینیم که برخی از آنها برای بازی ما خیلی بزرگ هستند. می توانید آنها را به صورت فیزیکی در یک ویرایشگر گرافیکی یا با استفاده از موتور کاهش دهید. بیایید آخرین روش را امتحان کنیم. برای انجام این کار، تصویر را در پنجره Hierarchy انتخاب کنید و در پنجره Inspector مقادیر "Scale" را برای مختصات X و Y از 1 به 0.5 تغییر دهید (یعنی به نصف کاهش دهید). در همان مکان، برای جلوگیری از همپوشانی، مطلوب است که به همه اشیاء بازی (به جز پس‌زمینه) ترتیب غیر صفر لایه‌ها (ترتیب در لایه) اختصاص دهید:

آخرین مرحله در تهیه اشیاء بازی از روی تصاویر، "آویزان" برخورد دهنده ها بر روی آنها خواهد بود. در Unity3D، برخورد دهنده ها به عنوان آشکارسازهای تعامل بین اشیاء استفاده می شوند. یعنی در واقع یک پوسته مجازی روی عکس ما قرار می گیرد که می تواند لمس آن را ثبت کند.

برای افزودن برخورد دهنده به یک شی، آن را در پنجره سلسله مراتب انتخاب کنید و سپس روی دکمه «افزودن مؤلفه» در پنجره Inspector کلیک کنید. در لیست اجزایی که ظاهر می شود، ما به دنبال Physics 2D هستیم (فیزیک سه بعدی معمولی در حالت ما کار نمی کند) و از بین همه گزینه ها، "Circle Collider 2D" برای ما مناسب ترین است. ما او را انتخاب می کنیم. یک ضربه سبز رنگ در اطراف جسم ما ظاهر می شود که مرزهای برخورد دهنده را نشان می دهد. فقط باید کادر "Is Trigger" را علامت بزنید تا برخورد دهنده ما فقط کلیک ها را ثبت کند و دیگر با فضای بازی اطراف تعامل نداشته باشد:

اقدامات مشابه برای تمام اشیاء باقی مانده تکرار می شود. فقط پس زمینه ما با اشیاء دیگر متفاوت خواهد بود. برای این کار، یک Box Collider 2D اعمال می‌کنیم و موقعیت Z را بزرگ‌تر از صفر می‌کنیم تا برخورد دهنده و خود پس‌زمینه را به پس‌زمینه فشار دهیم (بعداً به آن نیاز خواهیم داشت).

کار با صدا

با صدا در Unity 3D، در نگاه اول، همه چیز تا حدودی گیج کننده است. اما، بیایید سعی کنیم آن را به ترتیب بفهمیم :)

اول از همه، ما باید همه صداها را به پوشه Sounds بکشیم و آنها را نیز کمی تغییر دهیم:

اگر سطح صدای همه صداهای شما در ابتدا تنظیم شده باشد، تنها کاری که باید انجام دهید این است که پردازش صدای سه بعدی را خاموش کنید. در بازی‌های سه‌بعدی، این پردازش برای شبیه‌سازی نزدیک شدن منبع صدا هنگام نزدیک شدن دوربین به آن مورد نیاز است. اما در دو بعدی ما به این نیاز نداریم، بنابراین هر صدا را به ترتیب انتخاب می کنیم و تیک "صدای سه بعدی" را از آن بردارید.

اکنون می توانیم شروع به اضافه کردن صداها به اشیاء بازی کنیم. برای این کار باید هر دکمه را به ترتیب انتخاب کنیم و از قسمت Audio یک کامپوننت جدید «Audio Source» به آن اضافه کنیم. هنگامی که مؤلفه اضافه شد، دکمه «Audio Clip» مربوطه را انتخاب کنید و علامت گزینه «Play On Awake» را که به طور پیش‌فرض فعال است را بردارید (هنگامی که ظاهر شد پخش شود):

وقتی همه صداها به دکمه های سمت راست وصل می شوند، نوبت به قسمت سرگرم کننده می رسد - اسکریپت...

اسکریپت اول

قبل از شروع به تجزیه و تحلیل اولین اسکریپت، احتمالاً ارزش گفتن چند کلمه در مورد سیستم اسکریپت در خود Unity 3D را دارد.

یونیتی به شما امکان می دهد همزمان به سه زبان کد بنویسید: جاوا اسکریپت (به طور دقیق تر، نسخه کمی تغییر یافته UnityScript)، C # و Boo. در تعدادی از کتاب ها و راهنماها، می توانید این عقیده را پیدا کنید که برای مبتدیان، تسلط بر اسکریپت نویسی در Unity با استفاده از جاوا اسکریپت به عنوان مثال آسان تر است. با این حال، این زبان به راحتی دیگران نیست و در آینده به احتمال زیاد مجبور خواهید بود دوباره یاد بگیرید. بنابراین، بهتر است بلافاصله با یادگیری #C شروع کنید (Boo نیز خوب است، اما مطالب آموزشی کمی روی آن وجود دارد).

حالا در مورد محل نوشتن کد. ویرایشگر کد پیش فرض در Unity 3D MonoDevelop IDE است. مزیت این محیط توسعه این است که نکاتی برای ورود سریع متدها، کلاس ها و توابع استاندارد و همچنین یک سیستم بررسی نحوی دارد. با این حال، برای من، نقطه ضعف آن حجیم بودن و شدت منابع بالا بود. خوشبختانه، در تنظیمات Unity می توانید هر چیزی را به عنوان یک ویرایشگر متن تنظیم کنید، بنابراین من Notepad سبک و کاربردی ++ را برای خودم "آویزان" کردم (تقریباً همه نمونه ها در آن نشان داده خواهند شد).

و آخرین. به طور طبیعی، بدون مواد مرجع در تسلط بر تمام پیچیدگی های موتور، راه دوری نخواهید رفت، بنابراین در اینجا لیستی از چندین منبع اینترنتی معقول در مورد Unity 3D آورده شده است:

  • http://docs.unity3d.com/ru/current/Manual/UnityManualRestructured.html - کتابچه راهنمای رسمی موتور با ترجمه جزئی به روسی (اخیراً ظاهر شده و گاهی اوقات ناپایدار است).
  • http://docs.unity3d.com/ru/current/ScriptReference/index.html - راهنمای رسمی مرجع برنامه نویسی به زبان انگلیسی؛
  • http://unity3d.ru/distribution/index.php - انجمن روسی برای توسعه دهندگان Unity 3D.
  • http://habrahabr.ru/post/141362/ - مجموعه ای از دروس ساخت بازی های سه بعدی در Habrahabr;
  • http://msdn.microsoft.com/ru-ru/library/618ayhy6.aspx - مرجع رسمی C# مایکروسافت به زبان روسی.

خوب، برای اینکه آن را برای مدت طولانی طولانی نکنید، پیشنهاد می کنم بلافاصله اولین اسکریپت را ایجاد کنید. در زیر اسکریپت ها، اگر تعداد آنها زیاد است، بهتر است یک پوشه جداگانه اختصاص دهیم، اما بازی ما ساده خواهد بود، بنابراین می توانیم یک اسکریپت را مستقیماً در پوشه ریشه پروژه ایجاد کنیم. برای انجام این کار، منوی زمینه را در پنجره پروژه فراخوانی کنید، لیست ایجاد را انتخاب کنید و روی "C# Script" کلیک کنید. اسم اسکریپت جدیدمون رو مثلا Sounds بذاریم و با دوبار کلیک بازش کنیم. پس از حذف روش های استاندارد Update و Start و سپس با ثبت موارد لازم، اسکریپت زیر را دریافت می کنیم:

اگر ویرایشگر را دوباره پیکربندی نکرده‌اید، اسکریپت ما در MonoDevelop باز می‌شود. بیایید نگاهی به ساختار آن بیندازیم ...

در واقع هر اسکریپت سی شارپ از سه بخش اصلی تشکیل شده است:

  1. در بالا، کتابخانه‌هایی که برای کار کردن اسکریپت باید متصل شوند فهرست شده‌اند (به عنوان مثال، «استفاده از Unity.Engine» کار خود موتور را به هم متصل می‌کند، و «استفاده از System.Collections» - یک کتابخانه حاوی یک شماره از کلاس های داخلی برای کار کردن اسکریپت تحت سیستم های مختلف).
  2. اعلان کلاس و متغیر هیچ مفهومی از اسکریپت در سی شارپ وجود ندارد. در عوض، از مفهوم "کلاس" استفاده می شود که شامل تعدادی روش و عملکرد است. اگرچه، در واقع، در زمینه Unity 3D، این تقریباً یکسان است :) نکته اصلی که باید به خاطر داشته باشید این است که نام کلاس باید با نامی که ما به اسکریپت دادیم مطابقت داشته باشد. ویژگی متغیرها در سی شارپ این است که باید (به جز متغیرهای موقتی که در خود اسکریپت اعلام شده است) تایپ شوند. در عمل این بدان معناست که سطح دسترسی (خصوصی یا عمومی) و نوع (int، float، bool یا همانطور که در اسکریپت داریم AudioClip) باید برای متغیر مشخص شود، در عین حال، نام هر متغیری می تواند باشد. یا می توانید فوراً به آن یک مقدار نسبت دهید.
  3. مجموعه ای از روش ها و عملکردها. متد در سی شارپ تقریباً هر تابعی است که اقدامات خاصی را انجام می دهد. در اصل، در ادبیات Unity 3D به آنها توابع گفته می شود، اما اگر ما در مورد C # به عنوان یک زبان برنامه نویسی جداگانه صحبت می کنیم، پس از همه، اینها روش هایی هستند :). توابع خالص در Unity به عنوان مثال توابع استاندارد برای خروجی صدا، ترسیم عناصر رابط کاربری گرافیکی و غیره هستند که در داخل متدها استفاده می شوند.

با دانستن ساختار اسکریپت، به راحتی می توان معنی آن را فهمید که به موارد زیر خلاصه می شود ... در کلاس Sounds (اسکریپت)، 9 متغیر از نوع AudioClip را با نام هایی که برای راحتی کار نیاز داریم، اعلام می کنیم. متمایز کردن آنها ما آنها را لزوما عمومی می کنیم (خصوصی ها در ویرایشگر نمایش داده نمی شوند و باید صداها را از طریق ویرایشگر روی آنها آویزان کنیم). و سپس در بدنه اسکریپت از روش استاندارد "void OnMouseDown ()" استفاده می کنیم. قبلاً فقط وظیفه پردازش کلیک ماوس را بر عهده داشت، اما در نسخه های جدید به عنوان لمس صفحه نمایش لمسی نیز تعبیر می شود. در آن شرایطی را می نویسیم که با آن نام برخورد دهنده های فشرده شده را بررسی می کنیم و اگر فشار یکی از آنها را تشخیص دهیم، صدای مربوطه را تولید می کنیم (از تابع استاندارد audio.PlayOneShot(); استفاده می کنیم.

در هنگام نوشتن کد دقت کنید که تمام براکت های باز و بسته را درج کنید، در غیر این صورت مدام در کنسول گزارش خطا دریافت می کنید و اصلا نمی توانید پروژه خود را اجرا کنید! همچنین به استفاده از حروف بزرگ در نام روش ها و توابع توجه کنید. آنها همچنین اغلب علت خطا هستند. و البته تمام نشانه ها (نقطه، دو نقطه و براکت) را به طور خلاصه، نحو زبان را رعایت کنید. در ابتدا کار دشواری خواهد بود، اما به مرور زمان از ابتدا بدون اشتباه شروع به نوشتن خواهید کرد!

وقتی اسکریپت آماده شد، آن را انتخاب کنید و در پنجره Inspector صدای متفاوتی را به هر متغیر اختصاص دهید. اکنون فقط باید اسکریپت خود را بر روی اشیاء موجود در صحنه اعمال کنیم. ساده ترین راه برای انجام این کار، دوباره کشیدن اسکریپت به طور مستقیم بر روی شی بازی مورد نظر در لیست سلسله مراتب است:

اگر اسکریپت به درستی کشیده شده باشد، باید در پنجره Inspector در کنار شیئی که روی آن کشیده ایم ظاهر شود. بر این اساس، اسکریپت را به تمام اشیایی که باید در بازی به صدا درآید می کشیم و می توانیم آن را اجرا کنیم. وقتی روی دکمه های بازی ما کلیک کنید، حالا بالاخره صدای مشخص شده به صدا در می آید!

مقدمه ای بر رابط کاربری گرافیکی

در اصل، بازی در حال حاضر با ما کار می کند، اما به نوعی بیش از حد "طاس" است. چیزی در آن گم شده است ... یا، حداقل، کتیبه ای با نامی که در مقابل ما قرار دارد! به عبارت دیگر، شما باید نوعی رابط کاربری قابل فهم را پیاده سازی کنید.

در واقع، GUI مخفف انگلیسی است. "رابط کاربری گرافیکی"، یعنی یک رابط کاربری گرافیکی. به طور سنتی، شامل اجزایی مانند:

  • دکمه ها؛
  • پنجره؛
  • مناطق متنی؛
  • چک باکس ها و/یا دکمه های رادیویی؛
  • لغزنده (نوارهای اسکرول) و غیره

در Unity 3D همه اینها (و حتی چیزی بیشتر از آن) به طور کامل وجود دارد. نکته اصلی این است که یاد بگیرید چگونه از آن استفاده کنید! بیایید نگاهی بیندازیم که چگونه رابط کاربری گرافیکی Unity می تواند یک عنوان ساده ایجاد کند.

برای انجام این کار، یک اسکریپت جدید به نام Interface ایجاد کنید و آن را به صورت زیر تغییر دهید:

اسکریپت موجود در اسکرین شات را با دقت در نظر بگیرید. در اینجا فقط یک متغیر عمومی از نوع GUIStyle می نویسیم که برای ما جدید است. این نوع به شما امکان می دهد ظاهر عناصری که این سبک به آنها اختصاص داده شده است را به صورت بصری تغییر دهید. سبک‌ها زمانی مفید هستند که عناصر رابط از یک نوع (مثلاً دکمه‌ها) وجود داشته باشند، اما باید ظاهر متفاوتی داشته باشند.

بعد، یک دکمه ("GUI.Button") ایجاد می کنیم که دارای نحو زیر است: شرط - 4 مختصات (تورفتگی افقی از لبه سمت چپ، تورفتگی عمودی از لبه بالا، عرض، ارتفاع) - متن قابل مشاهده در نقل قول و موارد دیگر ، به صورت اختیاری، نشانگر سبک. توابع لازم در داخل شرط دکمه نوشته شده است. در مورد ما، انتقال به سایت توسعه دهندگان را ثبت کردیم ("Application.OpenURL("");").

اسکریپت‌های رابط کاربری گرافیکی می‌توانند روی هر شی بازی کار کنند، اما معمولاً به آنها توصیه می‌شود که آنها را روی دوربین "آویزان" کنند، که با کشیدن اسکریپت روی شی دوربین اصلی انجام می‌دهیم. حال اگر در پنجره Hierarchy آن را انتخاب کنیم، سپس در پنجره Inspector می توانیم متغیر عمومی استایل خود را ببینیم، با گسترش آن به تنظیمات این استایل دسترسی کامل خواهیم داشت!

ما می‌توانیم در هر شرایطی رنگ و بافت متن را برای پس‌زمینه مشخص کنیم (برای دکمه، باید سه گزینه آن (Normal - normal view، Hover - on hover و Active - on click) را ثبت کنید، padding را تنظیم کنید و فونت را تنظیم کنید. به طور پیش فرض، تنها فونت موجود در Unity 3D Arial است، با این حال، می توانید به صورت دستی هر فونت دیگری را در پروژه بارگذاری کنید و آن را در قسمت "Font" اعمال کنید و تمام پارامترهای مرتبط را تنظیم کنید.

چیزی که جالب و در عین حال خیلی راحت نیست این است که تا زمانی که پروژه را شروع نکنیم عناصر رابط کاربری گرافیکی روی صحنه نمایش داده نمی شوند، بنابراین تنظیم پارامترهای هر عنصر می تواند زمان زیادی را ببرد. بیایید پروژه را اجرا کنیم و ببینیم دکمه ایجاد شده در بالا به چه صورت خواهد بود:

تغییر رابط بر اساس شرایط و متغیرهای استاتیک

ما قبلاً کارهای زیادی انجام داده‌ایم، اما همیشه جا برای پیشرفت وجود دارد :) بنابراین، به عنوان آخرین نمونه، ایجاد یک پنجره راهنما را پیشنهاد می‌کنم که معمولاً توسعه‌دهندگان عادی بازی‌ها و برنامه‌های خود را با آن عرضه می‌کنند. برای این کار یک عکس برای چنین دکمه ای به شکل علامت سوال به پوشه حاوی تصاویر اضافه کنید و از آن یک شی بازی بسازید. بیایید یک برخورد دهنده را روی آن آویزان کنیم و یک اسکریپت با یک نام بنویسیم، به عنوان مثال "Help" با محتوای زیر:

در این اسکریپت دو متغیر داریم. اولین متغیر پوسته ای را که برای تمام عناصر رابط توضیح داده شده در این کلاس استفاده می شود، تعریف می کند. برخلاف استایل‌هایی که در بالا بحث کردیم، پوسته‌ها به شما این امکان را می‌دهند که ظاهر نه تنها عنصر فردی را که به آن اختصاص داده شده‌اند، بلکه همه عناصر یک نوع خاص را به یکباره تغییر دهید. علاوه بر این، بر خلاف استایل ها، پوسته ها به عناصر اختصاص داده نمی شوند، بلکه بلافاصله برای کل متد اعلام می شوند و تا زمانی که پوسته دیگری اعلام شود، کار می کنند. همچنین باید به خاطر داشت که پوسته ها نه تنها به عنوان متغیر، بلکه به عنوان وجود دارند فایل های فردی. بنابراین، قبل از اعلام یک پوسته، باید فوراً آن را در پنجره "پروژه" از منوی زمینه ایجاد کنید: "Create" - "GUI Skin".

دومین متغیری که داریم یک منطقی (یا در غیر این صورت بولی) است. فقط می تواند دو مقدار داشته باشد: "true" (true) یا "false" (false). با توجه به ماهیت باینری آن، چنین متغیری برای پیاده سازی انواع سوئیچ ها مناسب است. در مورد ما، مسئولیت نمایش متنی که بازی ما را توصیف می کند، خواهد بود.

با این حال، اگر به دقت نگاه کنید، متوجه خواهید شد که آخرین متغیر دارای یک پارامتر فوق العاده است - "استاتیک". افزودن این پارامتر به متغیرها به شما این امکان را می دهد که آنها را ثابت کنید و از اسکریپت های دیگر به آنها دسترسی داشته باشید!

اما به بقیه کدها برگردیم. روش "void OnMouseDown()" که قبلاً در اینجا برای ما آشنا بود، به عنوان یک سوئیچ برای متغیر "isVisible" با استفاده از یک شرط ساده عمل می کند. با این حال، پس از شرایط، عملکرد دیگری وجود دارد. این تابع ("Debug.Log();") برای خروجی "on the fly" به کنسول مقادیر متغیرهای مورد نیاز ما (آنها را بدون نقل قول در پرانتز وارد می کنیم) استفاده می شود. همانطور که می بینید، در داخل یک تابع، می توانید هم متن تغییرناپذیر (نوشته شده در گیومه) و هم متغیرها (بدون نقل قول) را با هم ترکیب کنید. نکته اصلی این است که باید یک علامت "+" بین تمام داده ها وجود داشته باشد.

در ادامه در متن اسکریپت، روشی برای ترسیم رابط ("void OnGUI()()" داریم که در داخل آن اعلان یک پوسته جدید ("GUI.skin = HelpSkin;") و یک پوست جدید را می بینیم. عنصر رابط از نوع GUI.Box. برخلاف دکمه، یک جعبه یک عنصر غیرفعال است و معمولاً برای نمایش متن یا داده های گرافیکی مختلف استفاده می شود.

به نحوه تنظیم موقعیت جعبه دقت کنید. در اینجا، تمام مقادیر به طور مستقیم مشخص نمی شوند، اما با کمک عبارات ریاضی، که در واقع، آنالوگ "طرح بندی سیال" در توسعه وب است. مشکل این است که هنگام تعیین اندازه دقیق عناصر رابط کاربری گرافیکی در رزولوشن های مختلف صفحه نمایش، آنها سازگار نیستند و ممکن است خیلی کوچک یا برعکس بزرگ باشند. در نسخه بعدی موتور، توسعه دهندگان قول می دهند که رابط کاربری گرافیکی را تطبیق دهند، اما تا اینجای کار باید منحرف شویم :(

آخرین قدم در مسیر موفقیت، سفارشی کردن پوست ما خواهد بود. فایل پوسته را در متغیر اسکریپت مشخص می کنیم و سپس در پنجره پروژه این فایل را انتخاب می کنیم. مانند سایر فایل ها، تنظیمات پوسته در پنجره Inspector نمایش داده می شود. در اینجا ما به دنبال عنصری هستیم که در معرض تغییر است (در مورد ما، Box)، آن را باز کرده و به همان شیوه ای که در بالا توضیح داده شد تنظیم کنید:

برای اینکه ببینیم اسکریپت ما درست کار می کند، پروژه را اجرا کنیم و سعی کنیم روی دکمه help کلیک کنیم:

اکنون همه چیز کار می کند، اما فشار دادن دکمه راهنما برای پنهان کردن توضیحات همیشه راحت نیست. مرسوم تر است که هر گونه اعلان را به هر کدام وارد کنید مکان آزاداز هدف گرفتن دکمه ها و اینجاست که ما فقط باید از این واقعیت استفاده کنیم که متغیر "isVisible" و همچنین برخورد دهنده را که روی تصویر پس‌زمینه آویزان است را ثابت کرده‌ایم...

بیایید به اولین اسکریپت خود ("صداها") برگردیم که دکمه های ردیابی را برای پخش صداها فشار می دهد. برای ما کافی است که فقط یک خط در آن بنویسیم (به طور دقیق تر، در روش "void OnMouseDown ()":

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

با این خط شرط می گذاریم: اگر نام برخورد دهنده فشار داده شده با نام دکمه راهنما برابر نباشد، متغیر "isVisible" در اسکریپت "Help" برابر با "false" خواهد بود. فقط لازم است که متغیر "isVisible" قطعا دارای پس اسکریپت "static" باشد، در غیر این صورت با خطا مواجه خواهیم شد.

اکنون، هنگام راه‌اندازی، می‌بینیم که پنجره راهنمای ما نه تنها هنگام کلیک کردن روی دکمه در گوشه بالا سمت راست، بلکه هنگام لمس هر قسمت آزاد از صفحه نمایش بسته می‌شود. تنها چیزی که می تواند بهبود یابد این است که وقتی روی آن کلیک می کنید پنجره را مخفی کنید... این "تکلیف" شما خواهد بود؛) فقط می توانم بگویم که جعبه رابط کاربری گرافیکی باید دوباره به یک دکمه طراحی مشابه تغییر کند. ، با تنظیمات پوسته و تجویز تابعی که متغیر "isVisible" را تغییر می دهد. همه چی ساکت باش :)

کامپایل بازی و ذخیره پروژه

بالاخره همه چیز برای ما کار می کند! این بدان معنی است که زمان ذخیره بازی و آزمایش آن بر روی یک دستگاه واقعی است. و برای این، باید در یک فایل اجرایی (برای ویندوز، به عنوان مثال، در EXE، و برای Android، در APK) کامپایل شود.

اگر می خواهید یک بازی برای رایانه شخصی کامپایل کنید، پس نیازی به انجام تنظیمات اولیه ندارید. با این حال، برای اندروید، ابتدا باید Android SDK را که در همان ابتدا دانلود کردیم وصل کنید. این کار به سادگی انجام می شود: به منوی "ویرایش" بروید، آیتم "Preferences" را فراخوانی کنید و در پنجره ای که باز می شود، به برگه "ابزارهای خارجی" بروید. در اینجا ما به دنبال خط "Android SDK Location" هستیم و در آن مسیر بایگانی بدون بسته بندی را با SDK نشان می دهیم (تصویر زیر را ببینید). به هر حال، در اینجا شما همچنین می توانید ویرایشگر متنی هیولایی MonoDevelop فعال به طور پیش فرض را به مورد علاقه خود تغییر دهید :)

و اکنون لحظه حقیقت فرا رسیده است! به منوی "File" بروید و در آنجا به دنبال آیتم "Build Settings" بگردید. در پنجره ای که باز می شود، باید بلافاصله صحنه هایی را برای اسمبلی اضافه کنیم. اگر فقط یک صحنه (مانند پروژه ما) وجود دارد، کافی است روی دکمه "افزودن فعلی" کلیک کنید. اگر چندین مورد وجود دارد، باید هر کدام از آنها را باز کنید و به همان ترتیب به لیست صحنه ها اضافه کنید و سپس با کشیدن و رها کردن، ترتیب دلخواه آنها را تنظیم کنید:

مرحله بعدی این است که پلتفرم ساخت را انتخاب کنید (ما در حال برنامه ریزی یک بازی برای اندروید هستیم، یعنی آن را انتخاب می کنیم) و روی دکمه "Player Settings" در زیر کلیک کنید. پنجره Inspector تعدادی تنظیمات را باز می کند که برخی از آنها اجباری یا بسیار مطلوب هستند. مطلوب است که نام شرکت توسعه دهنده، برنامه و نماد آن (به ترتیب نام شرکت، نام محصول و نماد پیش فرض) در بالای لیست تنظیمات ذکر شود.

در پایین، در بخش «تنظیمات دیگر»، دو پارامتر مورد نیاز وجود دارد: «شناسه بسته» و «نسخه بسته». نسخه پیش فرض به عنوان 1.0 تنظیم شده است، اما شناسه باید به صورت دستی و ترجیحاً منحصر به فرد ایجاد شود. باید از سه قسمت تشکیل شده باشد که با نقطه از یکدیگر جدا شده اند: کلمه رزرو شده "com"، سپس نام شرکت توسعه دهنده و در پایان نام خود برنامه.

شما می توانید بقیه تنظیمات مونتاژ را به صلاحدید خود تغییر دهید یا اصلاً تغییر نکنید. نکته اصلی این است که اکنون تلفیقی می تواند شروع شود. برای انجام این کار، فقط روی دکمه "Build" در پنجره "Build Settings" کلیک کنید و منتظر بمانید تا برنامه یک برنامه آماده بسته بندی شده در یک فایل APK را به ما بدهد :)

نتیجه

این بررسی درس ما را در مورد ایجاد ساده ترین برنامه ها برای اندروید به پایان می رساند. برای اینکه بتوانید همه چیزهایی را که در مورد آن صحبت کردیم تکرار کنید، در پایان مقاله پیوندی به آرشیو می دهم که تمام منابع بازی را به عنوان یک پوشه جداگانه ذخیره می کند (اگر می خواهید همه چیز را از ابتدا انجام دهید) و به عنوان یک فایل با پسوند unitypackage. دومی به شما امکان می دهد کل پروژه را به یکباره وارد یونیتی کنید، از جمله وابستگی ها و غیره.

برای وارد کردن پروژه ما (و به هر حال، هر افزونه بارگیری شده از اینترنت یا فروشگاه دارایی)، باید به منوی "دارایی" بروید، مورد "وارد کردن بسته" و در آن "بسته سفارشی" را انتخاب کنید. سپس مسیر فایل ما را مشخص کرده و دکمه "Import" را فشار دهید. به هر حال، می توانید با کلیک بر روی آیتم "Export Package" از همان منو ("Assets") یک نسخه پشتیبان کامل از پروژه خود تهیه کنید و آن را در چنین unitypackage ذخیره کنید.

به نظر می رسد همه چیز :) به عنوان فردی که خودش از ابتدا به Unity 3D تسلط داشت ، در مقاله سعی کردم به حداکثر تعداد سؤالات پاسخ دهم و تفاوت های ظریف اصلی کار با موتور را که در ابتدا ایجاد می شود برجسته کنم. اما، شاید، این برای کسی کافی نباشد، بنابراین، اگر سؤالی دارید، می توانید مستقیماً از طریق پست یا در انجمن با من تماس بگیرید: من به هر نحوی که بتوانم به شما کمک خواهم کرد!

برای همه شما آرزوی موفقیت و اجرای موفق همه پروژه ها دارم!

P.S. کپی و نقل قول آزادانه این مقاله مجاز است، مشروط بر اینکه یک پیوند فعال باز به منبع ذکر شده باشد و نویسندگی روسلان ترتیشنی حفظ شود.