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

▪️ @UnityLearning ▫️

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

@UnityLearning_Admin

🔹 کد شامد /👇

1-1-3526-61-3-1

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

@UnityLearning_Ads

لینک گروه تبادل نظر اعضای کانال
@UnityLearning_Group
Download Telegram
⭕️ #نکته برنامه نویسی

🔸 همانطور که می دانید، برخی از دستورات در ورژن های جدید یونیتی ارائه می شوند و دستورات قبل ممکن است دیگر برای ورژن جدید شناخته شده نباشند و کارایی نداشته باشند، مثلاً دستور SetActive که در ورژن های اخیر یونیتی اضافه گشته و جایگزین دستوراتی مثل SetActiveRecursively و Active شده است. گاهی یک کد نویس قصد دارد یک کد عمومی بنویسد و در اینجا لازم است کدش در هر نسخه ای از یونیتی قابل استفاده باشد، روش حل این موضوع به شکل زیر است/🔻

#if UNITY_3_5 Obj.SetActiveRecursively(false);
#else
Obj.SetActive(false);
#endif

🔹نوشتن if به این شکل (یعنی همراه با علامت شارپ #) یک شرط خاص برای یونیتی ایجاد می کند. مثلا دستور بالا می گوید اگر کامپایلر Unity3.5 است از دستور SetActiveRecursively استفاده کن و برای سایر ورژن ها از SetActive .

💡به کمک دستور SetActive در یونیتی می توان یک آبجکت را فعال/غیر فعال کرد. [توضیحات بیشتر در پست زیر/🔻]
https://t.me/UnityLearning/800

@UnityLearning
⭕️ استفاده از یک اسکریپت دیگر در اسکریپت جاری

💡 گاهی اوقات لازم است بتوانیم به یک اسکریپت (که در یونیتی از نوع Component است ) در کدهای خود دسترسی داشته باشیم. معمولاً این دسترسی برای «غیرفعال کردنِ اجرای آن اسکریپت» می باشد اما می تواند هر کاربرد دیگری نیز داشته باشد.

[این آموزش در اسکریپت نویسی به زبان #سی_شارپ کاربرد دارد]

🔹 ابتدا لازم است یک متغیر از نوع کامپوننت تعریف شــــود./🔻
Component Script;

📍 سپس تنها کافی است با دستور GetComponent مانند زیر به اسکریپت متصل شده به Obj دسترسی داشــــت./🔻
Script= Obj.GetComponent<ScriptName> ();

🔸 در صورتی که بخواهیم اجرای اسکریپت فوق متوقف شود، از دستور enabled استفاده خواهیم کـــرد./🔻
Script.enabled=false;

🔹 اما در یونیتی از اسکریپت های دیگر به منظور استفاده از پارامترها و توابع شان نیز استفاده می شود. در این صورت این کار دقیقاً مشابه تعریف کلاس در زبان های برنامه نویسی خواهد بود با این تفاوت که در اینجا کلاس مورد دسترسی برای یک آبجکت دیگر در حال اجرا می باشــــد. (در پست های بعدی آموزش بیشتر قرار خواهد گرفت)

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

@UnityLearning
Unity Learning
⭕️ استفاده از یک اسکریپت دیگر در اسکریپت جاری 💡 گاهی اوقات لازم است بتوانیم به یک اسکریپت (که در یونیتی از نوع Component است ) در کدهای خود دسترسی داشته باشیم. معمولاً این دسترسی برای «غیرفعال کردنِ اجرای آن اسکریپت» می باشد اما می تواند هر کاربرد دیگری نیز…
⭕️ انتقال از یک آبجکت حرکتی به آبجکت دیگر

#ادامه دستورات

🔸یکی از کاربردهای فعال و غیر فعال کردن #کامپوننت ها، به خصوص اسکریپت ها، جابجایی از آبجکت های حرکتی به هم می باشد. منظور از این کار مثلاً «سوار شدن به ماشین» یا هر وسیله حرکتی دیگر می باشد. در این زمان باید یک سری موارد از کاراکتر اصلی غیر فعال و مشابه همانها در آبجکت دیگر فعال شود و همین عمل در زمان پیاده شدن باید برعکس اتفاق بیافتد.

🔹در یونیتی در هر زمان باید یک دوربین فعال وجود داشته باشد بنابراین اولین موردی که باید تغییر کند دوربین بین آبجکت ها می باشد. همچنین معمولاً حرکت به وسیلۀ اسکریپت ها صورت می پذیرد بنابراین باید اسکریپت حرکتی کاراکتر اصلی غیر فعال و برای وسیلۀ دیگر فعال شود. اسکریپت حرکتی برای FPS به نام Character Controller می باشد و برای سایر آبجکت ها نیز شما باید کد نوشته باشید. با این اعمال کلیه کارها از آبجکت اول(مثلا کاراکتر FPS) به آبجکت دوم(مثلاً ماشین) منتقل خواهد شد و به نظر خواهد رسید کاراکتر شما به ماشین سوار می شود. مثال/🔻
GetComponent< CharacterController> () .enabled=false;

👈 دستور فوق اسکریپت ( #کامپوننت ) CharacterController از آبجکت جاری را غیر فعال خواهد کرد و در این صورت در صورتی که کاربر روی دکمه های جهتی کلیک کند روی این #آبجکت تأثیری نخواهد داشت.

#ادامه_دارد

@UnityLearning
Unity Learning
⭕️ توابع OnEnable و OnDisable 🔹 این دو تابع برای یک آبجکت زمانی اجرا می شوند که فعال یا غیر فعال شود. یعنی زمانی که یک آبجکت Active/Enable می شود تابع OnEnable یک بار اجرا خواهد شد و همین موضوع برای تابع OnDisable نیز اتفاق خواهد افتاد. 🔸 بهتر است برای عدم…
⭕️ #ادامه مطالب توابع OnEnable OnDisable

🔹 از دستورات زمانی در این توابع نمی توان به طور مستقیم استفاده کرد (مانند تابع Update که نوشتن دستورات زمانی تأخیر در آن تأثیر اجرایی نداشت!)
برای این کار لازم است یک تابع فرعی تعریف کرده و با دستور StartCoroutine آن را در توابع مذکور صدا بزنیم در این صورت کلیه دستورات تاخیری اجرا خواهند شد و مشکلی پیش نخواهد آمد.
به طور مثال اگر بخواهیم یک اسکریپت 5 ثانیه بعد از فعال شدن آبجکت خود را غیر فعال کند، مجبور به استفاده از تابع OnEnable هستیم اما استفاده از دستورات WaitFor در یونیتی ما را با خطای کامپایلری مواجه خواهد کرد. راه حل استفاده از یک تابع فرعی به شکل زیر است./🔻 ( #جاوا )
function OnEnable () {
StartCoroutine(Wait());
}
function Wait()
{
yield WaitForSeconds(5); gameObject.SetActive(false);
}

[با استفاده از دستورSetActive عمل غیر فعال کردن GameObject که کد به آن متصل شده است صورت می پذیرد]

🔸 این اسکریپت برای اعمال بسیاری کاربرد دارد و هر بار که آبجکت با هر دستور دیگری در برنامه فعال (Active) شد ، بعد از 5 ثانیه آن را غیر فعال می کند.

@UnityLearning
Android Bluetooth Multiplayer Pro.unitypackage
4.2 MB
⭕️ #دانلود #پکیج ایجاد ارتباط بلوتوث بین گوشی های اندروید برای ساخت بازی های چند نفری

android bluetooth multiplayer pro

📍با تشکر از فرستنده پکیج

@UnityLearning
MovingElevator.cs
744 B
⭕️ اسکریپت آماده حرکت آسانسور

این اسکریپت، آبجکت را به صورت بالا و پایین طبق قاعدۀ خاص مانند آسانسور حرکت می‌دهد. #سی_شارپ

@UnityLearning
⭕️ کاربرد Layer (لایه)ها در یونیتی

🔹 لایه ها در یونیتی مانند تگ ها برای دسته بندی آبجکت ها به کار می روند. لایه ها معمولا در یونیتی برای ایجاد محدودیت در عملیات Reycast استفاده می شود. منظور از ایجاد محدودیت این است که بین آبجکت های مقصد Reycast تفاوت ایجاد گردد و یک Reycast روی گروهی از آبجکت ها به یک شکل عمل کند و روی گروه دیگر به شکل دیگر.

🔸 در یونیتی دو نوع Layer وجود دارد. هشت Layer اول [Builtin Layers] نام دارند و پیش فرض یونیتی هستند و قابل تغییر توسط کاربر نیستند.
از لایه شماره 8 تا 32 نیز برای تعریف توسط کاربر وجود دارند و کاربر می تواند از آنها استفاده کند. [User Layers]

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

@UnityLearning
⭕️ کاربرد Layerها در یونیتی (#ادامه |کدنویسی)

🔹 برای بررسی Layer تعیین شده برای یک آبجکت خاص می توان از اندیس آن استفاده کرد. با مقایسۀ اندیس می توان تفاوت خاص را در اسکریپت نویسی انجام داد. /🔻
gameObject.layer = 2;

🔸 دستور بالا layer آبجکت (که کد به آن متصل شده است) را روی 2 تنظیم می کند. [ لایه 2 ، لایه ایست که در پنجره Tags and Layer در مقابل Layer2 قرار گرفته است ]

if (gameObject.layer == 8 ) {...

📍 دستور بالا نیز بررسی می کند اگر آبجکت مورد نظر دارای Layer شماره 8 می باشد عمل شرط انجام شود.

@UnityLearning
🔴 خبر فوری

زمین لرزه ای به بزرگی 7.2 ریشتر مرز ایران و عراق در منطقه حلبچه را لرزاند. این زمین لرزه حدود 30 دقیقه پیش در عمق 19 کیلومتری زمین رخ داده است.

مرکز زلزله نگرانی ایران زلزله را 7.3 ریشتر اعلام کرد.
🔴 پزشکی قانونی تاکنون تعداد تلفات را 129 نفر اعلام کرده است. /شبکه خبر

@UnityLearning
⚫️ درگذشت تعدادی از هموطنان عزیزمان در استان های غربی کشور به خصوص استان کرمانشاه در پی وقوع زمین لرزه را #تسلیت عرض می‌کنیم.

⚫️ بر اساس آمار 1 بعد از ظهر در این زمین لرزه تاکنون بیش از 336 نفر از هموطنانمان کشته شده اند.

@UnityLearning
Unity Learning
ایجاد تاخیر در کد نویسی 🔹 به منظور ایجـــاد تاخیر زمانی در اجرای اسکریپت ها روش های مختلفی وجود دارد، که زمان استفاده صحیح از آن ها مهم است. یعنی کد نویس باید بداند که از چه روشی در چه موقعیتی می تواند استفاده کند. 🔸یکی از این روش ها استفاده از دستورات…
⭕️ استفاده از دستورات ایجاد تأخیر در #سی_شارپ

🔹 در یونیتی توابعی که بتوانند در میان اجرای دستورات شان متوقف شوند، CoRoutine نامیده می‌شوند، این توقف در هر خط که کلید واژه yield وجود داشته باشد اتفاق میافتد. به بیان دیگر هر تابعی که در دستوراتش تعلیق اجرا صورت گیرد Coroutine نامیده می‌شود.

🔸 تعریف توابع Coroutine در #جاوا اسکریپت تفاوتی با سایر توابع ندارد و مانند قبل بدون هیچ کلمه اضافی خود تابع در صورتی که درونش دستورات yield وجود داشته باشد به coroutine تغییر ماهیت می‌دهد. اما تعریف این توابع در #سی_شارپ کمی متفاوت است. برای تعریف یک تابع از نوع Coroutine از کلید واژه IEnumerator قبل از نام تابع استفاده می‌شود (در واقع این کلمه باعث می‌شود کامپایلر تابع مورد نظر را یک Coroutine در نظر بگیرد)

🔘 شکل کلی یک تابع coroutine در یونیتی مانند زیر است./🔻
IEnumerator Wait() {
....
📍 دستور بالا یک تابع به نام Wait که از نوع coroutine است می سازد، دقت کنید باید حتماً در دستورات این تابع از کلمه yield استفاده شده باشد در غیر این صورت با مشکل مواجه می شوید. برای استفاده از دستور WaitForSeconds در #سی_شارپ از شکل دستوری زیر استفاده می شود./🔻
yield return new WaitForSeconds(5);

💡 دستور بالا کامپایلر را در مدت 5 ثانیه در این تابع متوقف می کند (این دستور باید در توابع coroutine تعریف شود در غیر این صورت خطا گرفته می شود.)

👈 #ادامه_دارد
@UnityLearning
Unity Learning
⭕️ استفاده از دستورات ایجاد تأخیر در #سی_شارپ 🔹 در یونیتی توابعی که بتوانند در میان اجرای دستورات شان متوقف شوند، CoRoutine نامیده می‌شوند، این توقف در هر خط که کلید واژه yield وجود داشته باشد اتفاق میافتد. به بیان دیگر هر تابعی که در دستوراتش تعلیق اجرا…
⭕️ توابع Coroutine در یونیتی برای ساخت حالت تعلیق

👈 #ادامه پست قبل [آموزش استفاده از دستورات WaitFor در #سی_شارپ ]

🔹به طور #مثال اگر بخواهیم یک حالت تأخیر 5 ثانیه در تابع Start ایجاد کنیم باید نوع آن را از حالت void به IEnumerator تغییر داد. /🔻
IEnumerator Start() {
yield return StartCoroutine("Wait");

🔸در دستور بالا فرض بر تعریف تابع Wait (مانند مثال قبل) می باشد، هر عملی بعد از این دستور نوشته شود، بعد از تأخیر 5 ثانیه ای اجرا خواهد شد.

[همانطور که مشاهده می کنید برای صدا زدن توابع IEnumerator در #یونیتی از تابع StartCoroutine استفاده می شود، در صورتی که تابع پارامتر ورودی هم داشته باشد، در پارامتر دوم این تابع قرار خواهد گرفت./🔻]
StartCoroutine("function",Par);

[از این دستور برای صدا زدن توابع coroutine در #جاوا نیز استفاده می شود، در صورتی که در تابعی از yield استفاده شده باشد برای صدا زدن آن در #جاوا باید از این تابع استفاده کرد]

@UnityLearning
Forwarded from KHAMENEI.IR
🔰طريقه خواندن #نماز_آیات؛ مطابق با فتوای حضرت آیت‌الله خامنه‌ای

☑️ @Khamenei_ir
Audio
🎵 #دانلود #موسیقی منوی اولیه بازی Project IGI برای استفاده در بازی به عنوان صدای پس زمینه در حالت Start Menu

@UnityLearning
⭕️ بررسی موجود بودن یک فایل

🔹 در #کلاس File برای بررسی اینکه یک فایل در مسیر داده شده موجود هست یا خیر؟ از دستور Exists استفاده می شود. این دستور از نوع bool بوده و اگر فایل در مسیر داده شده موجود باشد مقدار true را بر میگرداند. چک کردنِ موجود بودنِ فایل قبل از کار با آن ضروری است./🔻
if( File.Exists(filewithpath)){

👈این دستور تنها یک پارامتر داشته و آن هم نام فایل به همراه مسیر آن از نوع String می باشد.

⭕️ حذف کردن یک #فایل

🔸به منظور حذف کردن یک فایل از دستور Delete از کلاس File استفاده می شود که عملکرد و کاربرد آن کاملاً مشخص است./🔻
File.Delete(FIlewithPath);

📍 برای دسترسی به کلیه مطالب مربوط به کلاس File از هشتگ #فایل استفاده کنید.

@UnityLearning
Door_Unity5_Package.rar
1.3 MB
⭕️ #دانلود #پکیج درب با قابلیت باز و بسته شدن (انیمیشن) قابل استفاده برای یونیتی 5 به بالا

@UnityLearning
flag.unitypackage
97.8 KB
⭕️ #دانلود #پکیج پرچم رسمی (Flag) برای #یونیتی

طراحی شده با بلندر
@UnityLearning
⭕️ #یونیتی نسخه 5.6.4 را به صورت نهایی ارائه کرد. در این نسخه برخی ویژگی های مربوط به Navmesh حل گردیده و سایر Fixها مربوط به مشکلات گزارش شده می باشد.

🔹این نسخه به طور کامل با Patch ارائه شده در کانال کرک می شود و هیچگونه مشکلی هم پیش نمی آید. با استفاده از لینک ها زیر می توانید نسخه های مختلف یونیتی را به طور مستقیم #دانلود کنید. [از این پس کلیه آموزش ها بر اساس این نسخه از یونیتی قرار خواهند گرفت]

🔻دانلــــــود کنـــید🔻