ساخت یک بازی سه بعدی برای اندروید Unity. ساخت بازی در اندروید. طراح بازی چیست

توسعه بازی‌ها برای دستگاه‌های دارای سیستم‌عامل اندروید نیازمند رویکردی مشابه توسعه برای iOS است. از سوی دیگر، سخت‌افزار دستگاه‌های اندرویدی مشمول استانداردهای واضحی نیستند و همین امر باعث می‌شود تا مشکلاتی که در هنگام کار با iOS وجود ندارند، حل شوند. همچنین تفاوت هایی بین نسخه اندروید و iOS یونیتی وجود دارد.

آماده سازی محیط توسعه اندروید

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

دسترسی به ویژگی های اندروید

Unity یک API برای دسترسی به ورودی و تنظیمات اندروید ارائه می دهد. کلاس های موجود در صفحه Code for Android Assemblies مستند شده اند.

پیوند دادن کدهای C، C++ یا جاوا به اسکریپت ها

Unity به شما اجازه می دهد تا توابع نوشته شده در C/C++ را مستقیماً از اسکریپت ها فراخوانی کنید (توابع جاوا را می توان غیر مستقیم فراخوانی کرد). برای یادگیری نحوه دسترسی به توابع از کد بومی Unity، به صفحه ساخت افزونه اندروید مراجعه کنید.

انسداد حذف (بریده شدن هندسه نامرئی)

Unity پشتیبانی از حذف انسداد را فراهم می کند، که هنگام بهینه سازی برای پلتفرم های تلفن همراه بسیار مفید است. اطلاعات بیشتررا می توان در صفحه حذف انسداد یافت.

سفارشی کردن صفحه راه اندازی

صفحه نمایشی که هنگام شروع بازی نمایش داده می شود را می توان سفارشی کرد - برای اطلاعات بیشتر به این صفحه مراجعه کنید.

عیب یابی و گزارش خطا

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

تفاوت Unity برای اندروید با نسخه دسکتاپ

جاوا اسکریپت با تایپ قوی

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

اگر چه یونیتی اندرویدو از بافت‌های DXT/PVRTC/ATC پشتیبانی می‌کند، اگر این روش‌های فشرده‌سازی در دستگاه خاصی پشتیبانی نشود، Unity در زمان اجرا، بافت‌ها را به فرمت RGB(A) از حالت فشرده خارج می‌کند. این می تواند به طور جدی بر عملکرد رندر GPU تأثیر بگذارد، بنابراین توصیه می شود از فرمت ETC استفاده کنید. این استاندارد واقعی برای اندروید است و باید توسط همه دستگاه های مدرن پشتیبانی شود. از طرف دیگر، ETC از کانال آلفا پشتیبانی نمی کند و گاهی اوقات بافت های 16 بیتی RGBA بهترین انتخاب از نظر کیفیت، اندازه و سرعت رندر در جایی که به کانال آلفا نیاز است خواهد بود.

Unity 3D یک ابزار ضروری برای کسانی خواهد بود که به طور حرفه ای به کار ایجاد مواد با کیفیت بالا نزدیک می شوند. این برنامه مدل‌ها، اسکریپت‌ها و بافت‌های آماده را ادغام می‌کند که می‌تواند با محتوای خود - تصاویر، صداها و فیلم‌ها - تکمیل شود.

محصولات نهایی ایجاد شده در Unity 3D تقریباً با تمام پلتفرم های محبوب سازگار هستند - اعم از تلفن های همراهو پایان دادن به تلویزیون های SMART.

ویژگی های برنامه:

  • موتور یادگیری Unity;
  • ویرایشگر چند منظوره انعطاف پذیر.
  • سرعت کامپایل بالا؛
  • رابط کاربری آسان برای یادگیری؛
  • سازگاری با تعداد زیادی پلتفرم

اصل عملیات

برای استفاده از این برنامه، باید پلتفرم Unity Hub را دانلود کنید و از طریق آن می توانید ویژگی های نسخه رایگان Personal را امتحان کنید. با حجم درآمدزایی تا 100 هزار دلار در سال در دسترس است.

علاوه بر نسخه رایگان، می توانید مشترک دو نسخه پیشرفته دیگر شوید:

یونیتی پلاس (~ 25 دلار ماهانه) - دسترسی محدودی به خدمات مشاور موفقیت مشتری فراهم می کند، اطلاعات مربوط به خرابی دستگاه های کاربر را جمع آوری می کند، بازخورد را نظارت می کند.

Unity Pro (~ 125 دلار ماهانه) حداکثر گزینه اشتراک است. پشتیبانی از توسعه دهندگان حرفه ای را ارائه می دهد، به شما امکان می دهد به پشتیبانی از سازندگان برنامه دسترسی اولویت داشته باشید، شامل قابلیت های بهبود یافته برای نظارت بر عملکرد و جمع آوری آمار است.

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

برای کار حرفه ای با Unity 3D به مدتی زمان نیاز دارید تا با رابط کاربری و ویژگی های اپلیکیشن آشنا شوید. برای این کار می توانید ویدیوهای زیادی را در اینترنت پیدا کنید یا از دوره های تخصصی که در بسیاری از شهرهای بزرگ برگزار می شود بازدید کنید.

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

طرفداران:

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

معایب:

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

می‌توانید Unity 3D را نه تنها برای آماده کردن رقیبی برای اسباب‌بازی آنلاین محبوب Juggernaut (که با ابزارهای قهرمان بررسی ما ترسیم شده است) دانلود کنید، بلکه همچنین برای ایجاد ارائه‌های سه بعدی شیک. بگذارید کمی بیشتر طول بکشد، اما اثر واو برای مخاطب تضمین شده است.

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

آنالوگ ها:

  • ویرایشگر بازی- نرم افزار رایگانبرای ایجاد بازی؛
  • Construct 2 یک سازنده بازی محبوب با رابط کاربری ساده است.
  • Construct 2 یک برنامه قدرتمند برای ایجاد پروژه های دو بعدی است.

سلام به همه! با یادگیری نحوه ساخت بازی روی این موتور، می خواهم همین کار را به شما آموزش دهم. اول، ما به خود 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 تنظیم کنید و نحوه نوشتن اسکریپت را خودتان یاد بگیرید.

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

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

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

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

مدل های شی

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

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

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

محتوای بازی

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

رابط

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

موتور بازی

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

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

UDK

گشتاور 2d/3d

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

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

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

نتیجه

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

ویدیو

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

چگونه سریع و نسبتا آسان یک بازی یا اپلیکیشن ساده برای اندروید بسازیم؟ در مقاله زیر که به کار با موتور 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. کپی و نقل قول آزادانه این مقاله مجاز است، مشروط بر اینکه یک پیوند فعال باز به منبع ذکر شده باشد و نویسندگی روسلان ترتیشنی حفظ شود.