ایجاد یک بازی سه بعدی برای وحدت اندروید. ایجاد یک بازی در اندروید

ایجاد یک بازی سه بعدی برای وحدت اندروید. ایجاد یک بازی در اندروید

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

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

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

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

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

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

مرحله 1. نصب Unity

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

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

پس از شروع نصب ، از شما خواسته می شود که م componentsلفه هایی را که می خواهید نصب کنید انتخاب کنید. از آنجا که باید برنامه ای برای Android ایجاد کنیم ، کادر را علامت بزنید Android Build پشتیبانی... همچنین ، در صورت تمایل ، به جای با Unity ، می توانید نصب کنید Visual Studio Community 2017 برای برنامه نویسی در C #.

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

مرحله 2. Unity را ثبت و پیکربندی کنید

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

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

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

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

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

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

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

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

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

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

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

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

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

در نتیجه ، صحنه بازی در پنجره ویرایشگر 3D ظاهر می شود.

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

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

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

برای ساخت بازی حاصل در اندروید ، باید ابزارهای زیر را نصب کنید:

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

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

ابتدا باید سیستم عامل توسعه خود را به Android تغییر دهید. برای انجام این کار ، در Unity ، منوی File را باز کرده و گزینه Build Settings را انتخاب کنید.

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

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

اکنون باید یک نام بسته برای برنامه ارائه دهیم.

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

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

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

حال تنها باقی مانده مشخص کردن مسیر Android SDK و JDK است. برای انجام این کار ، به منو رفته و انتخاب کنید ویرایش تنظیمات.

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

مرحله 6. برنامه را بسازید و اجرا کنید

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

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

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

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

بیایید ببینیم چه چیزی درون APK مونتاژ شده است. برای این کار ما از برنامه کمکی استفاده خواهیم کرد APK Analyzerکه در Android Studio گنجانده شده است ،

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

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

نتیجه

همین. در این مقاله ، ما با نحوه نصب و پیکربندی Unity آشنا شدیم ، و همچنین اولین برنامه اندرویدی خود را کنار هم قرار دادیم.

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

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

برای نشان دادن اینکه نوشتن چنین چیزی آسان است ، امروز قصد داریم Flappy Bird خود را با استفاده از Unity فقط در 10 دقیقه بنویسیم.

شخصیت قابل بازی

ابتدا یک پروژه جدید ایجاد کنید و مطمئن شوید که 2D انتخاب شده است.

روح پرنده خود را در صحنه بارگیری کنید. فراموش نکنید که خیال خود را روشن کنید!

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

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

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

اکنون بر روی Add Component کلیک کنید. Physics2D\u003e Rigidbody2D را انتخاب کنید - این یک مجموعه آماده از دستورالعمل ها برای اعمال جاذبه بر شخصیت ما است. در این صفحه بر روی محدودیت ها کلیک کنید و سپس freeze rotation Z را انتخاب کنید. این از چرخش پرنده با دوربین به صورت دایره ای جلوگیری می کند.

به همین ترتیب یک Polygon Collider اضافه کنید که به Unity بگوید مرزهای شخصیت کجاست. Play را فشار دهید و ببینید که چگونه روحانی همراه با دوربین بی نهایت سقوط می کند.

تا کنون خیلی خوب!

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

ابتدا باید یک اسکریپت C # ایجاد کنید. پوشه ای برای آن ایجاد کنید (در جایی از دارایی ها کلیک راست کرده و پوشه "Scripts" را ایجاد کنید) ، کلیک راست کرده و گزینه Create\u003e C # Script را انتخاب کنید.

بگذارید آن را "شخصیت" بنامیم. روی آن دوبار کلیک کنید تا در IDE باز شود ، خواه MonoDevelop باشد یا Visual Studio. سپس کد زیر را اضافه کنید:

شخصیت کلاس عمومی: MonoBehaviour (public Rigidbody2D rb؛ public float moveSpeed؛ public float flapHeight؛ // این برای مقداردهی اولیه باطل لازم است () (rb \u003d GetComponent ()؛) // به روز رسانی یک بار در هر باطل بروزرسانی قاب () (rb .velocity \u003d new Vector2 (moveSpeed، rb.velocity.y)؛ if (Input.GetMouseButtonDown (0)) (rb.velocity \u003d new Vector2 (rb.velocity.x، flapHeight)؛) if (transform.position.y\u003e 18 || تبدیل.نمایش< -19) { Death(); } } public void Death() { rb.velocity = Vector3.zero; transform.position = new Vector2(0, 0); } }

این کد دو کار انجام می دهد. باعث می شود شخصیت با سرعتی که ما در بازرس تعریف می کنیم به جلو برود و احساس پرواز پرنده را ایجاد کند. روش Update () به طور مکرر در طول بازی فراخوانی می شود ، بنابراین هر آنچه را که اینجا قرار دهید به طور مداوم اجرا می شود. در این حالت ، ما مقداری سرعت به جسم خود اضافه می کنیم. متغیر rb اسکریپت RigidBody2D است که ما قبلاً بر روی شی our خود اعمال کردیم ، بنابراین هنگام نوشتن rb.velocity به سرعت آن اشاره می کنیم.

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

متغیر moveSpeed \u200b\u200bمسئول سرعت حرکت خواهد بود و متغیر flapHeight مسئول افزایش ارتفاع پرواز پرنده پس از هر بار کلیک خواهد بود. از آنجا که این متغیرها عمومی اعلام می شوند ، می توانیم آنها را خارج از متن تغییر دهیم.

روش Death () نیز عمومی اعلام می شود ، به این معنی که اشیا and و اسکریپت های دیگر می توانند آن را فراخوانی کنند. این روش به سادگی موقعیت شخصیت را به ابتدا برمی گرداند. همچنین هر بار که شخصیت بیش از حد بالا یا پایین پرواز کند ، از آن استفاده خواهد شد. به زودی خواهید فهمید که چرا علنی اعلام شده است. خط rb.velocity \u003d Vector3.zero؛ برای حذف انگیزه لازم است - ما نمی خواهیم شخصیت پس از هر مرگ سریعتر و سریعتر سقوط کند؟

اکنون می توانید از IDE خارج شده و اسکریپت را به عنوان یک جز component به شخصیت خود اضافه کنید. برای این کار ، پرنده ما را انتخاب کنید و روی Add Component\u003e Scripts\u003e Character کلیک کنید. اکنون می توانیم moveSpeed \u200b\u200bو flapHeight را در بازرس تعریف کنیم (این همان چیزی است که متغیرهای عمومی برای آن کار می کنند). بیایید متغیرها را به ترتیب مقادیر 3 و 5 اختصاص دهیم.

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

موانع

حالا بیایید موانع اضافه کنیم: لوله ها. شخصی قارچ را در لوله ها پیدا می کند و دیگری مرگ آنها را پیدا می کند.

اسپریت لوله را به صحنه ای که اولین مانع باید باشد بکشید و نام آن را pipe_up بگذارید.
حالا بیایید یک اسکریپت جدید به نام Pipe ایجاد کنیم:

Pipe کلاس عمومی: MonoBehaviour (شخصیت خصوصی شخصیت؛ // این برای مقداردهی اولیه باطل لازم است Start () (character \u003d FindObjectOfType ()؛) // به روزرسانی یکبار در هر فریم باطل به روز می شود () (if (character.transform.position.x - transform.position.x\u003e

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

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

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

لوله های وارونه

در حال حاضر ما فقط یک لوله روحانی داریم. بیایید یکی دیگر اضافه کنیم. برای انجام این کار ، در پنجره سلسله مراتب کلیک راست کنید ، روی New 2D Object\u003e Sprite کلیک کنید و سپس روحانی را که می خواهید استفاده کنید انتخاب کنید. حتی ساده تر است که دوباره پرونده را به صحنه بکشید و رها کنید.

این sprite pipe_down را نامگذاری کنید. در بازرس زیر Sprite Renderer ، گزینه Flip Y را انتخاب کنید تا لوله را به صورت زیر و رو کنید. همان RigidBody2D را اضافه کنید.

حالا بیایید یک اسکریپت C # جدید بنویسیم به نام PipeD. این شامل کد مشابه است:

کلاس عمومی PipeD: MonoBehaviour (شخصیت خصوصی شخصیت ؛ // این برای مقداردهی اولیه باطل لازم است Start) - transform.position.x\u003e 30) ()) void OnCollisionEnter2D (Collision2D other) (اگر (other.gameObject.tag \u003d\u003d "پخش کننده") (character.Death ()؛))))

پیش ساخته ها

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

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

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

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

برای انجام این کار ، یک پوشه جدید "Prefabs" ایجاد کنید. سپس pipe_up و pipe_down را از پنجره سلسله مراتب به داخل پوشه بکشید.

هر بار که یک شی را از این پوشه به داخل صحنه بکشید ، ویژگی های آن یکسان خواهد بود ، بنابراین مجبور نیستید به طور مداوم اجزا را اضافه کنید. علاوه بر این ، اگر اندازه یک م componentلفه را در یک پوشه تغییر اندازه دهید ، روی همه لوله های بازی تأثیر می گذارد و لازم نیست هرکدام را جداگانه تغییر دهید.

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

ابتدا این کد را به دستور شرط موجود در روش Update () اسکریپت Pipe اضافه کنید ، که ما آن را خالی گذاشتیم:

Void Update () (if (character.transform.position.x - transform.position.x\u003e 30) (float xRan \u003d Random.Range (0، 10)؛ float yRan \u003d Random.Range (-5، 5)؛ Instantiate (gameObject ، Vector2 جدید (character.transform.position.x + 15 + xRan ، -10 + yRan) ، transform.rotation) ؛ Destroy (gameObject) ؛))

این مورد برای ایجاد نمونه ای از gameObject ما لازم است. نتیجه یک کپی یکسان جدید است. در Unity ، هر زمان که از کلمه gameObject استفاده می کنید ، این به شیئی که در حال حاضر اسکریپت به آن متصل است اشاره دارد - در مورد ما ، لوله.

ما در حال تولید مجدد لوله های خود با تغییرات تصادفی هستیم تا از آن لذت بیشتری ببریم.

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

یک بازی عمومی ایجاد کنید اشیا به نام pipeDown. سپس کد خود را اینگونه به روز کنید:

اگر (کاراکتر. تغییر شکل. موقعیت (0 ، 3) ؛ فوری (gameObject ، جدید Vector2 (character.transform.position.x + 15 + xRan ، -11 + yRan) ، transform.rotation) ؛ فوری (pipeDown ، جدید Vector2 (character.transform.position.x + 15 + xRan ، 12 + gapRan + yRan) ، transform.rotation) ؛ Destroy (gameObject) ؛)

به Unity برگردید و پیش ساخته pipe_down را از پوشه prefab بکشید (این مهم است!) به جایی که می گوید "Pipe Down" (توجه داشته باشید که چگونه مورد شتر ما با فاصله جایگزین شده است) را بر روی لوله up sprite بکشید. اگر به یاد داشته باشید ، ما Pipe Down را به عنوان یک بازی عمومی Object تعریف کردیم ، که به ما این امکان را می دهد که از هر نقطه - در این مورد ، از طریق بازرس تعیین کنیم که این شی چیست. با انتخاب پیش ساخته برای این شی ، اطمینان حاصل می کنیم که وقتی لوله لوله می شود ، تمام ویژگی ها و اسکریپت هایی را که قبلاً اضافه کردیم ، در بر خواهد گرفت. ما فقط یک روح نمی سازیم ، بلکه یک شی re را با یک برخوردگر ایجاد می کنیم که می تواند شخصیت را از بین ببرد.

همه آنچه را که ما در همان مکان در اسکریپت PipeD اضافه می کنیم فقط Destroy (gameObject) است تا هنگام خارج شدن از لبه سمت چپ صفحه ، لوله خود تخریب شود.

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

متاسفانه فاصله زیادی بین لوله ها وجود دارد و صفحه خالی به نظر می رسد. ما می توانیم با ایجاد برخی از پیش ساخته ها به صحنه خود این مشکل را حل کنیم تا خط لوله ای از لوله هایی که دائماً ظاهر می شوند ایجاد کنیم. با این حال ، تولید لوله ها به صورت اسکریپت بهتر است. این مهم است ، زیرا در غیر این صورت ، پس از مرگ شخصیت ، لوله های ابتدای مسیر از بین می روند ، و فضای خالی دوباره تشکیل می شود.

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

پرواز بی پایان

حال بیایید متغیرهای عمومی pipe_up و pipe_down را در اسکریپت Character ایجاد کنیم. این به شما امکان می دهد تا با کشیدن و انداختن پیش ساخته ها روی شی object کاراکتر ، به اشیا generated تولید شده مراجعه کنید ، درست مثل وقتی که pipe_down را به اسکریپت Pipe اضافه کردیم.

ما باید این متغیرها را اضافه کنیم:

Game_Object عمومی Game_ob؛ عمومی GameObject pipe_down؛

سپس ما روشی مانند این را می نویسیم:

باطل عمومی BuildLevel () (لحظه ای (pipe_down ، new Vector3 (14 ، 12) ، transform.rotation) ؛ لحظه ای (pipe_up ، new vector3 (14 ، -11) ، transform.rotation)) Instantiate (pipe_down ، new vector3 (26 ، 14) ، transform.rotation)؛ Instantiate (pipe_up، new Vector3 (26، -10)، transform.rotation)؛ Instantiate (pipe_down، new Vector3 (38، 10)، transform.rotation)؛ Instantiate (pipe_up، new Vector3 ( 38 ، -14) ، تبدیل.گردش) ؛ فوری (لوله_ پایین ، وکتور 3 جدید (50 ، 16) ، تبدیل.گردش) جدید Vector3 (61 ، 11) ، transform.rotation) ؛ فوری (pipe_up ، new Vector3 (61 ، -13) ، transform.rotation) ؛)

ما یک بار آن را در روش Update () و یک بار دیگر در روش Death () فراخوانی خواهیم کرد.

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

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

سرانجام

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

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

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

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

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

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

مدل های شی

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

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

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

محتوای بازی

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

رابط

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

موتور بازی

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

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

UDK

گشتاور 2d / 3D

Game Builder چیست؟

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

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

نتیجه

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

ویدئو

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

یونیتی موتور بسیاری از بازی های امروزی در سراسر سیستم عامل است. با استفاده از موتور ، واقعاً می توان بازی هایی با هدف راه اندازی در رایانه ها (ویندوز ، لینوکس ، MacOS) ، تلفن های همراه ، تبلت ها (اندروید ، iOS) و حتی کنسول های بازی PlayStation ، Xbox ، Nintendo ایجاد کرد.

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

وحدت مبتنی بر مفهومی م componentلفه محور است. در واقع ، هر بازی متشکل از انبوهی از اشیا است که با اجزای اضافی رقیق می شوند. به عنوان مثال ، در طول ایجاد یک platformer ، ما یک GameObject ایجاد می کنیم ، علاوه بر این یک جز component گرافیکی به آن متصل می کنیم ، که مسئول نمایش شخصیت است و یک جز control کنترل که کنترل شخصیت را با استفاده از ماوس ، صفحه کلید ، جوی استیک یا صفحه لمسی فراهم می کند. موتور محدودیتی در تعداد چنین ماژول هایی ایجاد نمی کند. ما می توانیم به تعداد مورد نیاز اجزای سازنده را به GameObject اضافه کنیم. تمام کارها بر روی موتور مبتنی بر ایجاد GameObject و استفاده از اجزای مناسب بر روی آنها است.

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

سیستم عامل های پشتیبانی شده

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

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

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

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

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

ایجاد یک بازی یا برنامه ساده برای اندروید چقدر سریع و نسبتاً ساده است؟ در مقاله زیر که در مورد کار با موتور Unity3D بحث می شود ، در این باره بخوانید.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

وارد کردن پرونده ها و ایجاد اشیا game بازی

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

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

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

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

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

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

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

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

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

کار با صدا

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

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

اگر میزان صدا برای همه اصوات در ابتدا برای شما تنظیم شده باشد ، پس تنها کاری که باید انجام دهید خاموش کردن پردازش سه بعدی صداها است. در بازی های سه بعدی ، برای شبیه سازی رویکرد منبع صوتی هنگام نزدیک شدن دوربین به این پردازش نیاز است. اما در 2D به آن نیازی نداریم ، بنابراین هر صدا را به نوبه خود انتخاب می کنیم و علامت کادر "3D Sound" را برداریم.

اکنون می توانیم صداها را به اشیا game بازی اضافه کنیم. برای این کار ، باید هر دکمه را به نوبت انتخاب کرده و از قسمت "Audio" یک م componentلفه جدید "Audio Source" به آن اضافه کنیم. وقتی م theلفه اضافه شد ، دکمه مربوطه "Clip Audio" را انتخاب کنید و علامت کادر "Play On Awake" را بردارید (به طور پیش فرض فعال است):

وقتی همه صداها به دکمه های مورد نظر متصل می شوند ، وقت آن فرا می رسد که قسمت سرگرم کننده ای داشته باشید - برنامه نویسی

فیلمنامه اول

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

Unity به شما امکان می دهد که همزمان کد را به سه زبان بنویسید: JavaScript (دقیق تر ، نسخه کمی اصلاح شده UnityScript) ، C # و Boo. در تعدادی از کتاب ها و آموزش ها ، می توانید این نظر را پیدا کنید که برای مبتدیان ، یادگیری اسکریپت نویسی در Unity با استفاده از JavaScript به عنوان مثال آسان تر است. با این حال ، این زبان مانند زبان های دیگر کاربر پسند نیست و در آینده به احتمال زیاد مجبورید دوباره یاد بگیرید. بنابراین ، بهتر است فوراً با یادگیری 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 - تالار گفتگوی روسی به منظور توسعه دهندگان 3D Unity ؛
  • http://habrahabr.ru/post/141362/ - مجموعه ای از درس های ایجاد بازی های سه بعدی در Habrahabr ؛
  • http://msdn.microsoft.com/ru-ru/library/618ayhy6.aspx - مرجع رسمی C # از مایکروسافت به زبان روسی.

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

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

در واقع ، هر اسکریپت C # دارای سه قسمت اصلی است:

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

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

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

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

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

معرفی GUI

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

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

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

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

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

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

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

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

در هر شرایطی می توانیم رنگ متن و بافت را برای پس زمینه مشخص کنیم (برای دکمه ، باید سه نوع از آن را ثبت کنید (عادی - نمای عادی ، شناور - روی شناور و فعال - با کلیک) ، تورفتگی ها را تنظیم کنید و قلم را تنظیم کنید. به طور پیش فرض ، تنها مورد موجود در Unity 3D فونت Arial است ، اما شما می توانید هر دستی را در پروژه بارگیری کرده و با تنظیم تمام پارامترهای مربوطه ، آن را در قسمت "Font" اعمال کنید.

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

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

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

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

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

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

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

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

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

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

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

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

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

if (this.name! \u003d "دکمه راهنما") (Help.isVisible \u003d false؛)

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

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

تنظیم بازی و ذخیره پروژه

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

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

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

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

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

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

نتیجه

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

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

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

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

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



© 2020 skypenguin.ru - نکاتی برای مراقبت از حیوانات خانگی