Unity Learning
2.99K subscribers
574 photos
211 videos
1.05K files
280 links
⭕️کانال آموزش حرفـــه ای موتور بازی سازی یـــونیتی

▪️ @UnityLearning ▫️

🔹ارتباط با مدیر کانال/👇

@UnityLearning_Admin

🔹 کد شامد /👇

1-1-3526-61-3-1

💰 تعرفه تبلیغات/👇

@UnityLearning_Ads

لینک گروه تبادل نظر اعضای کانال
@UnityLearning_Group
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
📸 با استفاده از پارامتر Field of view از کامپوننت Camera می توان محدودۀ دید دوربین را کم یا زیاد کرد. (این حالت می تواند برای زوم کردن دوربین کاربرد داشته باشد، چرا که زوم کردن یعنی کاهش محدودۀ دید)
This media is not supported in your browser
VIEW IN TELEGRAM
⭕️ اسکریپت آماده ساخت حالت حرکت دوربین و زوم کردن (مانند تصویر بالا👆)

📍جابجایی و زوم با لمس صفحه در پلتفرم WebGL و با ماوس در سایر پلتفرم ها

#دانلود در پست بعدی🔻
⚫️ السلام علیک یا ابا محمد یا حَسن بن علی ایها الزَّکی الْعَسکری

⚪️ شهادت حضرت امام حسن عسکری(ع) پدر بزرگوار امام زمان را تسلیت عرض می‌کنیم.

🔸 التماس دعا

👉 @UnityLearning
📸 محدود کردن استفاده از Mesh Collider برای آبجکت ها در جهت بالابردن سرعت اجرای بازی

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

@UnityLearning
⭕️ کامپوننت LOD Group

🔹 با بزرگ شدن محیط بازی (Scene) کارایی و عملکرد بسیار تحت تأثیر قرار می گیرند که باید در مورد آنها تصمیم گیری های اساسی انجام شود. یکی از روش های کنترل کارایی در یونیتی استفاده از حالت های مختلفی از Rendering برای یک آبجکت است. با استفاده از #کامپوننت LOD می توان کاری کرد که Mesh Renderer های مختلفی از یک آبجکت در فواصل مختلف دوربین از آنها نمایش داده شود. با توجه به عمومی بودن این کامپوننت برای فاصله از درصد استفاده می کند و شما می توانید برای هر در صد یک MeshRenderer خاص تعریف کنید که در آن فاصله نمایش داده شود. مشخص است که بهترین عمل انتخاب MeshRendererهای با کیفیت پایین در فاصلۀ دور از دوربین و با کیفیت تر برای فاصله های نزدیک و نزدیک تر است.

🔸معمولاً آبجکت های درخت، پرچم، آینه و... از LOD Group برای نمایش حالت های مختلفی از خود استفاده می کنند.

به منظور اضافه کردن #کامپوننت LOD Group به آبجکت مورد نظر خود (که البته چند MeshRenderer با کیفیت متفاوت از آن وجود دارد) از مسیر زیر استفاده کنید./🔻

Component > Rendering > LOD Group

👈 #ادامه_دارد

@UnityLearning
This media is not supported in your browser
VIEW IN TELEGRAM
🎥 استفاده از LOD Group در ساده ترین روش ممکن

🔸به جهت مشاهده عملکرد کامپوننت LOD در نمایش Mesh Rendererهای مختلف برای یک آبجکت در فواصل گوناگون، تماشای این #فیلم توصیه می‌شود.

@UnityLearning
⭕️ بارگزاری مراحل با نمایش میزان بارگزاری

🔹 در زمان بارگزاری مراحل بازی، در صورتی که بخواهیم این بارگزاری روی صفحه نمایش داده شود(مثلا به صورت درصد) به جای دستور LoadLevel از دستور دیگر به نام LoadLevelAsync از #کلاس Application استفاده می شود. تفاوت بارگزاری این دو دستور به این شکل است که در دستور LoadLevel کامپایلر در خط مورد نظر متوقف می شود تا مرحله شما کاملاً لود شود اما در دستور LoadLevelAsync این کار در پس زمینه انجام می شود و کامپایلر متوقف نمی شود. استفاده از این دستور کمی نسبت به LoadLevel متفاوت است، که در پست های بعدی به شرح آن خواهیم پرداخت.

👈 #ادامه_دارد

@UnityLearning
Unity Learning
⭕️ بارگزاری مراحل با نمایش میزان بارگزاری 🔹 در زمان بارگزاری مراحل بازی، در صورتی که بخواهیم این بارگزاری روی صفحه نمایش داده شود(مثلا به صورت درصد) به جای دستور LoadLevel از دستور دیگر به نام LoadLevelAsync از #کلاس Application استفاده می شود. تفاوت بارگزاری…
⭕️بارگزاری بازی در پس زمینه #ادامه

🔹برای استفاده از دستور LoadLevelAsync نیاز هست از توابع IEnumerator استفاده شود. زمانی که دستور فوق صدا زده می شود، کامپایلر در این تابع متوقف نشده و ادامه می دهد. در صورتی که بخواهیم کامپایلر را تا زمانی که مرحله به طور کامل بارگزاری نشده در یک حلقه نگهداریم از پارامتر isDone از متغیر AsyncOperation استفاده می شود.
🔸متغیر AsyncOperation مقداری است که جریان بارگزاری در آن صورت می پذیرد و برای بررسی وضعیت بارگزاری از آن استفاده می شود(مثل درصد بارگزاری و...)
📍حالت کلی صدا زدن یک مرحله از بازی با تابع مذکور به شکل زیر است./🔻
AsyncOperation asyncLoad = Application.LoadLevelAsync(Scene);

👈 در دستور بالا متغیر asyncLoad همان وضعیت بارگزاری است که قرار است بعدا از ان استفاده کنیم. Scene نیز شماره و یا نام مرحله ای است که باید بارگزاری شود.

💡در پست های بعدی نحوۀ استفاده از متغیر asyncLoad که نمونه ای از #کلاس AsyncOperation می باشد را توضیح خواهیم داد. دقت کنید کاربرد این کلاس برای همه عملیاتی است که نیاز به بررسی شرایط بارگزاری دارند بنابراین در دستورات دیگر نیز مورد استفاده قرار خواهند گرفت.

👈 #ادامه_دارد

@UnityLearning
🌸 به #مناسبت سالروز شروع امامت امام زمان

⭐️ آغاز ۱۱۷۹ مین سال امامت حضرت اباصالح المهدی را به همه شیعیان و منتظران آن حضرت تبریک و تهنیت عرض می‌کنیم.


🌹السلام علیک یا اباصالح المهدی یا صاحب الزمان🌹

🌷اللهم عجل لولیک الفرج🌷

👉 @UnityLearning
📸 انواع حالتِ توابع قابل اجرا توسط یک UI Button در زمان کلیک شدن روی آن توسط کاربر

🔹توابع دارای ورودی نیز قابلیت استفاده به عنوان OnClick یک Button را دارند.

@UnityLearning
#آموزش ساخت منوی وسط بازی با کمک UI Button ها

🔸 برای یادگیری بیشتر، این آموزش را که پیشتر در کانال به صورت متنی و عکسِ آموزشی قرار گرفته بود، هم اکنون به صورت #فیلم با کیفیت Full HD نیز تهیه گردید. در این فیلم نحوۀ استفاده از UI Button ها به طور ساده و کامل شرح داده خواهد شد و می توانید به راحتی از آنها برای ساخت Start Menu ، Pause Menu و هر منوی خاصی که در بازی به آن احتیاج دارید استفاده کنید.

🔹 #دانلود فیلم آموزشی در پست بعدی/🔻
آموزش ساخت منوی وسط بازی.mkv
57 MB
🎥 #فیلم آموزش ساخت منو به کمک UI Buttonها و انجام تنظیمات روی آنها

🔹فیلم با کیفیت Full HD و با کمترین حجم ممکن قرار گرفته است.

مدت زمان: 11 دقیقه

@UnityLearning
📱 راه اندازی ساخت بازی اندروید در یونیتی #جدید (خلاصه شده)

1⃣ دانلود و نصب Android SDK و JDK (کتابخانه های لازم جاوا)

2⃣ فعال سازی حالت Debugging در گوشی اندروید

(معمولا قرار گرفته در مسیر Settings > Developer options گزینه Debugging در دستگاه اندرویدی)

3⃣ اتصال گوشی با کابل به سیستم و نصب درایور مخصوص آن

4⃣ معرفی محل نصب Android SDK به یونیتی
(قابل دسترسی در Unity > Preferences > External Tools)

5⃣ نصب و راه اندازی Android NDK (نسخه های مختلف در کانال)

(معرفی NDK به یونیتی از مسیر
Unity > Preferences > External Tools)

📍توصیه همیشگیِ یونیتی نصب اندروید استودیو برای این کار است.

👉 @UnityLearning
Unity Learning
⭕️ بازی روزهای تاریک (Dark Days) ساخته شده بر اساس گیمیفیکشن با موتور یونیتی 🔹ارائه در کانال یونیتی لرنینگ «به زودی» ⚠️ کلیه حقوق این بازی ازجمله اسم و داستان برای سازنده (محمدعلی قادری) محفوظ است.
⭕️ نسخه بتای بازی روزهای تاریک (آماده برای دانلود)

🔹بازی روزهای تاریک یک بازی ساخته شده با موتور یونیتی است که با هدف بالا بردن انگیزه افراد (اعم از بازیکنان و بازی سازان) در جهت ساخت بازی با این موتور می‌باشد و مبنای ساخت آن بر اساس بازی IGI (به علت معروف بودن) می‌باشد. بازی برای پلتفرم ویندوز در دسترس است.

🔸با توجه به اینکه هدف از ساختِ بازی این بوده که افراد با قابلیت های یونیتی آشنا شوند و اینکه بازی بر پایه بازی IGI ساخته شده می‌شود، یک مرحله از این بازی فعلا طراحی و در اختیار عموم قرار خواهد گرفت.

▫️ نسخه بتا از یک بازی، به معنای نسخه تست توسط جامعه هدف می‌باشد، یعنی افرادی که نهایتا قرار است بازیکن یک بازی باشند (از نظر سنی، فرهنگی و شخصیتی) بازی را مورد تست قرار می‌دهند و هرگونه مشکلی که با آن مواجه شدند را به سازندگان بازی اعلام می‌کنند. سپس در مرحله بعد تیم ساخت اقدام به رفع این مشکلات و نهایتا ارائه نسخه نهایی از بازی خواهند کرد.

📂 فایل نصبی بازی هم به صورت دانلود از تلگرام و هم به صورت سایت قرار خواهد گرفت. ضمنا راهنمای بازی نیز در دو فایل PDF در کنار فایل اجرایی بازی قرار خواهد گرفت.

🙏 از کلیۀ بازی سازان، بازیکنان و همراهان گرامی درخواست می شود، لطفا با دانلود و انجام این بازی و در نهایت ارسال نظرات خود ، ما را در جهت ارائه یک بازی خوب و قابل قبول توسط جامعه هدف بازی (سنین بالای 14 سال) یاری کنید.

👉 @UnityLearning
Dark_Days(Beta_v0.9).exe
531 MB
🔹نسخه بتای بازی روزهای تاریک (Dark Days) ، این بازی با هدف ایجاد انگیزه بر پایه گیمیفیکشن ساخته شده است.

🔸به منظور ارائه نظرات خود و یا دانلود از سایت Tranbit از گزینه های زیر استفاده کنید./🔻
Unity Learning
⭕️ استفاده از توابع و پارامترهای یک اسکریپت دیگر #ادامه [کاربرد آموزش های این پست تنها برای #سی_شارپ می باشد] 🔹 تعریف کلاس در سی شارپ با استفاده از کلمۀ class امکان پذیر است و در یونیتی هر اسکریپتی که به یک آبجکت متصل می شود، در واقع یک کلاس است. بنابراین…
⭕️ استفاده از توابع و متدهای سی شارپ در جاوا و بالعکس

🔹با دستوراتی که پیشتر در کانال برای استفاده از توابع اسکریپت های دیگر در اسکریپت جاری بیان شد، این امکان برای صدا زدن توابع نوشته به زبان جاوا در سی شارپ و یا برعکس وجود ندارد. یعنی شما نمی توانید با دستور GetComponent در سی شارپ به یک کلاس (اسکریپت) نوشته شده به زبان جاوا دسترسی داشته باشید و این باعث نمایش خطا در صفحه یونیتی می شود.

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

📍یادآوری: نحوه استفاده از تابع BroadcastMessage به منظور صدا زدن توابع موجود در یک اسکریپت دیگر که به یک آبجکت دیگر متصل شده است، به شکل زیر است./🔻
Obj.BroadcastMessage("function_name",[parameters],[SendMessageOptions])

👈در صورتی که تابع مذکور پارامتر داشته باشد، از بخش parameter استفاده می شود و در صورتی که بخواهیم این تابع برای پاسخ تابع در همین جا صبر کند از پارامتر سوم استفاده می‌شود که در پست های قبل مفصل توضیح داده شده است.

@UnityLearning
⭕️ فعال و غیر فعال کردن #کامپوننت Collider

🔹در #یونیتی در صورتی که یک کامپوننت کالیدر را غیر فعال کنیم، بدین منظور است که دیگر آن جسم به چیزی برخورد نمی کند و کلیۀ کالیدرهای دیگر روی آن تأثیری نخواهند داشت. (مانند بازی GTA یا Serious Sam که با یک کد تقلب می توان کاری کرد بازیکن نسبت به محیط کالیدر نداشته باشد)
💡برای فعال/غیرفعال کردن این کامپوننت دستور زیر را استفاده خواهیم کرد./🔻
GO.GetComponent<Collider> ().enabled=true; / false ;

🔸این دستور برای هر GameObject اجرا شود، کامپوننت کالیدر آن تغییر خواهد کرد.

@UnityLearning
ColliderEnabled.cs
799 B
📋 اسکریپت آماده برای ایجاد حالت تغییر کالیدر متصل شده به یک آبجکت (که کد به آن متصل می شود) با زدن دکمه Space

👈 #سی_شارپ

@UnityLearning