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
MCPR.exe
8.3 MB
برنامه حذف کننده کلیه فایل های مربوط به کلیه محصولات مکافی

🛡Mcafee Product Remover

💡بعد از حذف آنتی ویروس از Control panel این برنامه را اجرا کنید.

@UnityLearning
🔸یونیتی برای Decompression کردن پکیج های خود از نرم افزار های فشرده سازی استفاده می‌کند، توصیه ما نصب آخرین نسخه از نرم افزار 7Zip است که برای دانلود در کانال قرار گرفته است. این نرم افزار رایگان است اما از سرعت بسیار بالایی برخوردار است. اگر هم نرم افزار winrar و هم 7Zip را نصب کرده باشید، یونیتی از 7Z برای Decompress کردن پکیج های خود استفاده می‌کند.

📍این نرم افزار فوق العاده است و به کمک آن شما می‌توانید هر فایلی را باز کنید، مثلا اگر یک فایل نصبی exe داشته باشید که باز نمی‌شود با کمک 7Zip می توانید این فایل را باز و به فایل های درون آن دسترسی داشته باشید.

◀️این برنامه در پست های زیر از کانال برای دانلود قرار گرفته است/👇

▶️ https://t.me/UnityLearning/757

▶️ https://t.me/UnityLearning/758

▶️ https://t.me/UnityLearning/759




⭕️کانال یونیتی لرنینگ⭕️
💢@UnityLearning💢
⭕️توضیحاتی در مورد تابع OnCollisionEnter

🔹این تابع زمانی در یونیتی اجرا می‌شود که دو جسم دارای Collider/Regidbody یک دیگر را به اصطلاح لمس کنند(به هم برخورد کنند)

🔹پارامتر ورودی این تابع کلاس Collision است که مختصات محل برخورد(لمس) در آن اتفاق اُفتاده است. این مختصات برای هر محل لمس در آرایه ای از کلاس Collision قرار می‌گیرد. این آرایه contacts نام دارد و از آن می توان به مختصات محل برخورد دسترسی داشت. پارامتری که از contacs در آن مختصات قرار می‌گیرد point نام دارد که از جنس Vector3 می‌باشد (دقیقا مثل پارامتر position در کلاس transform)

▪️به طور مثال خط زیر مختصات اولین نقطه برخورد دو آبجکت را به هم بر می گرداند./👇

collision.contacts[0].point;

👈اگر بخواهیم آبجکتی در محل بر خورد ایجاد شود (مثل آتش در محل برخورد موشک) از دستور instantiate استفاده می‌شود.

🔜 مطالب تکمیلی در پست های آتی قرار خواهد گرفت.

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

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


#اسکریپت_نویسی #کد_نویسی به زبان #جاوا و #سی_شارپ در #يونيتي




⭕️کانال یونیتی لرنینگ⭕️
💢@UnityLearning💢
⭕️ #تابع SetActive

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

gameObject.SetActive (false);

🔸اکتیو بودن یک گیم آبجکت را می توان با دو پارامتر زیر بررسی کرد/👇

GameObject.activeSelf

GameObject.activeInHierarchy

👈این دو پارامتر Read only هستند و فقط مقدار true یا false بر می گردانند.


⭕️کانال یونیتی لرنینگ⭕️
💢@UnityLearning💢
⭕️ اضافه کردن یک #کامپوننت خاص در زمان اجرا بازی

برای اینکه بتوان یک کامپوننت خاص در زمان اجرا (Runtime) بازی به gameobject مورد نظر اضافه شود از تابع AddComponent استفاده می‌شود.

🔘هر نوع کامپوننتی که در پارامتر به تابع بدهیم را در همان لحظه به گیم #آبجکت مورد نظر اضافه شده و خود آن برای کار های بعدی برگردانده می‌شود. به طور #مثال دستور زیر یک کامپوننت SphareCollider را به گیم آبجکت جاری(که کد به آن متصل است) اضافه میکند./👇

gameObject.AddComponent(SphereCollider);

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

🔜 مطالب تکمیلی در پست های آینده قرار خواهد گرفت.

#اسکریپت_نویسی #کد_نویسی #جاوا


⭕️کانال یونیتی لرنینگ⭕️
💢@UnityLearning💢
👤قابلیت جدید Biography در #تلگرام

🔸به منظور اضافه کردن اطلاعات شخصی (در حد 50 حرف در یک خط) می‌توان از این قابلیت جدید در تلگرام استفاده کرد.

@UnityLearning
برخی دستورات مربوط به GameObject

به کمک دستور transform می توان به Transformیی که این گیم #آبجکت به آن متصل است دسترسی داشت و این دستور آن را بر می گرداند. #مثال ساده، برای دسترسی به پارامترهای موقعیتی یک game object باید از دستور transform استفاده کرد (چون همانطور که می دانید position از پارامتــرهای یک Game Object نیست!)

🔸به طور #مثال برای جابجا کردن یک گیم آبجکت می توان از دستور زیر استفاده کرد/👇

other.transform.Translate(1,1,1);

🔘 دقت کنید other از نوع GameObject است یعنی به شکــل زیر تعریف شده است/👇

var other : GameObject;

🔹 برای بدســـت آوردن Scene که یک آبجکت در آن قرار گرفته است از پارامتر scene استفاده می کنیم. خروجی این پارامتر از نوع SceneManagement.Scene است که می توان به عنوان نام به دستورات مربوط به جابجای Scene داد (مثل LoadLevel و...)

GameObject.scene;

👈 این دستور Scene که GameObject در آن قرار گرفته است را بر می گرداند.


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

@UnityLearning
برخی دستورات مربوط به GameObject #ادامه

👈دستور tag اسم تگ Game Object مورد نظر را بر می گرداند، اگر برای گیم #آبجکت تگی در نظر گرفته نشده Untagged را بر می گرداند. (خروجی دستور رشته ای است و برای تست آن باید مقدار خروجی را با مقدار رشته ای چک کرد)

gameObject.tag = "Player";

🔸این دستور تگ یک گیم آبجکت را به Player تغییر می دهد، بنابراین کاربرد دیگر این پارامتر در تعیین تگ یک گیم آبجکت است.

⭕️توابع مهم کلاس GameObject

👈کلاس GameObject، کلاسی برای مدیریت گیم آبجکت ها در یونیتی است که دستورات زیادی دارد. در این پست به بررسی تعدادی از آنها می پردازیم و سایر دستورات را نیز در پست های بعدی بیان خواهیم کرد. دقت کنید به کمک تگ #ادامه می توانید به مطالب دنباله دار دسترسی داشته باشید. مطالبی هم که تگ « #ادامه_دارد » دارند، نیز مطالبی هست که در پست های بعدی ادامه مطالب آن قرار گرفته است.

▫️یکی از مهمترین توابع این #کلاس ، دستور Find است، به کمک این دستور می توان به یک گیم آبجکت که اسم آن را داده ایم دسترسی داشت. قوانین استفاده از این دستور زیاد است/ در این پست فقط شکل کلی تابع را بیان می کنیم و قوانین مختلف آن را در پست های بعدی قرار خواهیم داد.

▪️شکل کلی #تابع Find به نحو زیر است/👇

var hand : GameObject;

hand = GameObject.Find("Hand");

👈به طور کلی این دستور آبجکتی که اسم آن Hand است را بر می گرداند و در متغیر hand قرار می دهد و در ادامه برنامه نویس می تواند مانند یک گیم آبجکت مستقل با آن رفتار کند.

(بهترین محل برای استفاده از این دستور تابع Start است)

🔹دستور FindWithTag اولین گیم آبجکتی که دارای تگ داده شده است را بر می گرداند. خروجی آن از نوع یک متغیر GameObject است. اما اگر می خواهیم به مجموعه ای از گیم آبجکت ها که دارای تگ خاصی هستند دسترسی داشته باشیم از دستور FindGameObjectsWithTag استفاده می کنیم که خروجی آن از نوع آرایه ای از GameObject هاست که دارای تگ مورد نظر هستند و برای دسترسی به تک تک آنها باید آرایه را پیمایش کرد.

(به طور مثال اسکریپت ایجاد یک گیم آبجکت در محل کلیه آبجکت هایی که دارای تگ Player هستند در پست بعدی قرار می گیرد، لطفا به این اسکریپت دقت کنید چون دستورات پیمایش آرایه (از نوع GameObject) در آن بیان شده است، سایر دستورات آن را که قبلاً توضیح داده ایم مثل دستور Instantiate برای ایجاد یک گیم آبجکت)

#ادامه_دارد

🔜سایر توابع کلاس GameObject در پست های بعدی قرار خواهد گرفت.

@UnityLearning
Findwithtags.js
628 B
اسکریپت آماده برای ساخت یک Prefab در محل کلیه گیم آبجکت هایی که دارای تگ Player هستند. مثال آموزشی برای استفاده از دستور FindGameObjectsWithTags

@UnityLearning
UniPatcher_v2017.5_DownLoadLy.iR.exe
334 KB
🔑کرک ارائه شده برای تمام نسخه های یونیتی

🗝کرک یونیتی 2017.1

👈 #دانلود کنید

@UnityLearning
#اصلاحیه

⭕️دوستان گرامی و کاربران عزیز، همانطور که پیشبینی کرده بودیم، یونیتی 2017 با کرک های ارائه شده مشکل دارد(البته برنامه کامل کرک می‌شود و مشکل از آن نیست اما نسخه کرک شده دارای محدودیت هایی مثل اتصال حتمی به اینترنت حتی در زمان work offline بودن است)

🔹به همین علت یونیتی لرنینگ آموزش ها را تا زمان ارائه یک نسخه پایدار و قابل استفاده از نسخه 2017 با همان نسخه 5.6.2 پیگیری خواهد کرد.


🔹بنابراین برنامه های آموزشی در این کانال تا این لحظه با این نسخه ها هستند.

🔹Unity 5.6.2f1
🔸Autodesk Maya and 3D Max 2017
🔹Blender 2.78


@UnityLearning
⭕️ برخی دستورات مربوط به Transformها در یونیتی

👈به کمک دستور childCount می‌توان به تعداد گیم آبجکت های متصل شده به یک Transform (در پنجره Hierarchy دسترسی داشت) یعنی مثلا اگر به یک Transform خاص دو گیم آبجکت دیگر متصل باشد این دستور 2 را بر می‌گرداند./👇

transform.childCount

👈این دستور تعداد گیم آبجکت متصل به ترنسفورمی که کد به آن متصل شده است را بر می‌گرداند./👇

🔹برای بدست آوردن بردار رو بروی یک ترنسفورم از forward استفاده می‌شود. این دستور از نوع Vector3 است و معادل بردار سه بعدی با جهت روبروی یک آبجکت است.

🔸با استفاده از دستور root می‌توان به ترنسفورم ریشه(بالاترین ترنسفورم در Hierarchy) دسترسی داشت. این دستور هیچگاه مقدار null برنمی گرداند و اگر آبجکت خودش بالاترین سطح باشد(پدری نداشته باشد) خودش را بر می گرداند. بنابراین دقت کنید خروجی این دستور از نوع Transform است.

▫️با دستور rotation می‌توان به پارامتر های چرخشی یک ترنسفورم دسترسی داشت. خروجی این دستور از نوع Vector3 برای جهت چرخش آبجکت می‌باشد. برای دسترسی به مقادیر xyz از شکل زیر(به طور مثال برای x) استفاده می‌شود./👇

transform.rotation.x;

▪️سایر دستورات و توابع در پست های بعدی قرار خواهد گرفت.

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

@UnityLearning
غیر فعــال شدن اجرای یک اسکریپت بعد از شروع اجرا

🔸 در صورتی که بخواهید یک اسکریپت بعد از فعال شدن(یا بهتر است بگوییم اجرا شدن) به حالت غیر فعال یا عدم اجرا برود. از دستور this.enabled=false; در تابع Start استفاده می شود و به هر مقدار که می خواهیم زمان بگذرد و بعد از آن اسکریپت غیر فعال شود، از دستور WaitForSecconds استفاده می شود.

🔹 به طور مثال قطعه کد زیر را اگر به اسکریپت خود (به زبان #جاوا اسکریپت) اضافه کنیم، این اسکریپت بعد از گذشت 10 ثانیه از کار خواهد افتاد.

function Start(){
yield WaitForSeconds(10);
this.enabled=false;
}

دقت کنید بعد از دستور this.enabled=false دیگر نباید دستور دیگری باشد چون اجرا نخواهد شد. این دستور بیشتر برای منوها در بازی استفاده می شود.

#اسکریپت_نویسی #کد_نویسی #جاوا #یونیتی


کانال یونیتی لرنینگ
💢 @UnityLearning💢
⭕️ #آموزش #دانلود ماژول های یونیتی از سایت Unity

🔹روش اول استفاده از پنجره Build Setting

@UnityLearning
⭕️ #آموزش #دانلود ماژول های یونیتی از سایت Unity

🔹روش دوم استفاده از برنامه Unity Download Assistant که لینک های دانلود آن در پست های قبلی هست.

@UnityLearning
🎨 تغییر رنگ های ظاهری محیط یونیتی

🔸 #درخواست داشتیم برای تغییر تم در یونیتی که با این روش از پنجره Performance از منوی Edit امکان پذیر است.

@UnityLearning
⭕️ دستورات و توابع مربوط به Transform در یونیتی #ادامه

▪️با کمک تابع DetachChildren می‌توان کلیه فرزندان یک ترنسفورم را از پدرشان(که تابع برای آن نوشته شده است) جدا کرد. به بیان دیگر اگر یک ترنسفورم دارای چندین بچه باشد، با این تابع می‌توان آن ها را از این ترنسفورم جدا کرد. به طور مثال فرض کنید لازم باشد بخواهید یک ترنسفورم را Destroy کنید اما نباید بچه هایش حذف گردند، برای این کار به نحو زیر می‌نویسیم/👇

transform.DetachChildren(); Destroy(gameObject);

👈دستور اول که گیم آبجکت های متصل به ترنسفورم جاری را از آن جدا می‌کند و دستور دوم نیز آن را حذف می‌کند.

🔹با کمک تابع GetChild می‌توان به بچه iام یک گیم آبجکت(ترنسفورم) دسترسی داشت، یعنی مثلا اگر یک گیم آبجکت 5 زیر مجموعه داشته باشد و بخواهیم به آبجکت سوم دسترسی داشته باشیم و برای آن کد بنویسیم از دستور زیر به طور مثال استفاده می‌کنیم/👇

transform.GetChild(2);

👈خروجی دستور از نوع Transform است و دقت کنید اندیس ها از صفر شروع می‌شوند (2 یعنی آبجکت سوم)

🎦 تابع LookAt ، این تابع جهت یک ترنسفورم را به سمت ترنسفورم دیگر می چرخاند (دقیقا بردار Forward را برابر ترنسفورم دوم قرار می‌دهد)

transform.LookAt(target);

📹 به طور مثال اگر کد بالا را در تابع آپدیت قرار دهیم و این کد را به دوربین بدهیم، دوربین در تمام طول بازی هدف (آبجکت target) را نشان می‌دهد.

▫️برای طولانی نشدن مطالب ادامه دستورات را در پست های بعد قرار خواهیم داد.


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

#اسکریپت_نویسی #کد_نویسی #جاوا #سی_شارپ #یونیتی



⭕️کانال یونیتی لرنینگ⭕️
💢@UnityLearning💢
📷 برای ذخیره کلیه اطلاعات و آبجکت های موجود در یک Scene بازی از گزینه Save Scene استفاده می‌شود. از Scene ها برای مرحله ای کردن بازی استفاده می‌شود.


@UnityLearning
📷 برای ذخیره کامل پروژه که شامل تمام تنظیمات و همچنین کلیه مراحل بازی (Sceneها) از گزینه Save Project استفاده می‌شود.

@UnityLearning
📸 تنظیماتی که در پروژه (Project Setting) در قسمت های مختلف انجام می‌شود در این فایل ها و در مسیر پروژه ذخیره می‌شوند.

👈منبع سایت یونیتی

@UnityLearning
Canvas چیست؟

📌 در واقع Canvas بخشی از گیم آبجکت‏ های دسته بندی یونیتی ، برای قرار دادن آبجکت های مربوط به به UI است. یعنی کلیه آبجکت های مربوط به Ui مثل دکمه ها و ... در Canvas قرار می گیرند. بنابراین اگر Canvas را غیر فعال کنیم تمامی دستورات UI و آبجکت های آن را نیز غیر فعال کرده ایم. Canvas تنظیماتی برای محل قرار گیری آبجکت های رابط کاربری دارد که در قسمت Rect Transform و بخش Anchors می توانید به آن دسترسی داشــته باشید.

در Canvas سه حالت برای Rendering دارد.

🔹 Screen Space - Overlay
در این حالت کلیه المنت های UI در بالای Scene (صحنه نمایشی) قرار می گیرند و اگر رزولیشن تغییر کند آن ها نیز جابجا خواهند شد.

🔹 ـScreen Space - Camera یکی از بهترین حالتهای Canvas است زیرا به کمک آن می توان کاری کرد از هر جهتی بخواهیم به سمت المنت های UI نگاه کنیم (این کار به کمک یک دوربین انجام خواهد شد که در پارامتر Render Camera مقدار دهی خواهد شد. در واقع ما از جهتی که دوربین نسبت به Canvas قرار گرفته منو ها را میبینیم )

🔹 ـWorld Space در این حالت نیز مانند دوربین است اما با این تفاوت که از هر جهتی که بازی در جریان است به منو نگاه می کنیم (در واقع در این حالت Canvas یعنی المنت های UI به شکل 3D یا سه بعدی به نظر خواهند رسید)

🔸 در صورتی که بخواهیم جهت یک آبجکت خاص از زیر مجموعه های Canvas را تغییر دهیم باید #کامپوننت جدید Rect Transform را برای آن المنت تنظیم کنیم.

برای تغییر اندازه المنت های Canvas (آبجکت های UI مثل Button) از ویژگی جدید Resize استفاده می شود (که دکمه آن در بالای صفحه کنار دکمه های Scale و Rotation است)

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

💎 این المنت ها در یونیتی Visual Components نامیده می شوند که در پست های بعدی به طور کامل تر از قبل مورد بررسی قرار خواهند گرفت. در پست های قبل از نظر برنامه نویسی این کنترل ها را بررسی کردیم و اکنون در نظر داریم به طور کامل تر همراه با توضیح محیط و نحوه استفاده از آن ها مطالبی را بیان کنیم.

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

#آموزش #برنامه #یونیتی



کانال یونیتی لرنینگ
💢 @UnityLearning💢