Unity Learning
2.99K 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
⭕️ اگر می‌خواهید اسکریپت دارای توابع OnTrigger.... برای یک آبجکت اجرا شود باید حتما گزینه Is Trigger #کامپوننت Collider را بزنید.

محدوده کالیدر به عنوان Trigger در نظر گرفته شده و توابع مذکور می‌شود.
⭕️ بازکردن سایت در بازی

🔹اگر به هر دلیل می‌خواهید یک سایت در زمان اجرای بازی باز شود(مثلا برای تبلیغات یا معرفی) می‌توانید از #کلاس Application با متد زیر استفاده کنید/👇

Application.OpenURL("http://unity3d.com/");

🔸به طور #مثال این دستور سایت یونیتی را در محل مورد نظر و در مرورگر پیش فرض سیستم باز می‌کند.

▫️این دستور می‌تواند در رویداد OnClick یکی از دکمه های منوی بازی و یا در محلی خاص در بازی اجرا شود.

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


⭕️کانال یونیتی لرنینگ⭕️
💢@UnityLearning💢
⭕️ تغییر متدی که در زمان On Click توسط یک UI Button اجرا می‌شود، در کد نویسی یا زمان اجرای بازی

▫️آموزش اسکریپت نویسی در پست بعدی

@UnityLearning
⭕️ تغییر در توابعی که که توسط Button و در زمان کلیک شدن اجرا می‌شوند.

▪️برای اینکه یک تابع(متد) به رویداد OnClick یک Button اضافه کنیم، در #برنامه #یونیتی مانند تصویر قبل عمل می کردیم. اما اگر بخواهیم این کار را در کد نویسی انجام دهیم، باید چکار کنیم؟

👈هر Burton که تعریف می‌شود یک رویداد یا بهتر بگوئیم پارامتر به نام onClick دارد، این پارامتر معادل لیست توابعی است که باید توسط Event System یونیتی در زمان فشرده شدن Button توسط کاربر اجرا شود.

▫️برای اضافه کردن یک متد جدید به این لیست از دستور AddListener استفاده می‌شود و این تابع نام متدی که می خواهیم به عنوان متد جدید در Button شناخته شود را به عنوان ورودی می‌گیرد.

🔹برای مثال دستور زیر را در نظر بگیرید/👇

btn.onClick.AddListener(TaskOnClick);

🔰این دستور تابع TaskOnClick که در همین اسکریپت باید تعریف شده باشد را به عنوان یک متد OnClick برای دکمه btn تعریف می‌کند و هر آنچه در آن تابع از اسکریپت نوشته شده باشد در زمان کلیکِ کاربر روی دکمه اجرا می‌شود.

❗️تذکر مهم: منظور از btn در اسکریپت بالا #کامپوننت Button است، یعنی کامپوننتی که به عنوان یک تنظیم کننده به دکمه اصلی داده شده است، برای بدست آوردن آن در کد نویسی می‌توان از دستور زیر استفاده کرد. (فرض کنید myButton نام آبجکت UI است که در یونیتی باید مقدار دهی شود)

var btn: Button = myButton.GetComponent.<Button>();

🔹اکنون میتوان از پارامتر onClick مربوط به btn استفاده کرد.

⭕️برای راهنمایی ساخت اسکریپت/👇

🔸زمانی که می‌خواهید یک اسکریپت بنویسید که در آن تابعی داشته باشید که در هنگام کلیک شدن روی یک Button اجرا شود، باید برای آن اسکریپت یک پارامتر ورودی مثل زیر برای Button تعریف کنید و آن را به اسکریپت بدهید(در یونیتی)

var myButton: Button;

🔹سپس از آن در اسکریپت استفاده کنید به طور مثال در تابع Start متد مورد نظرتان را به Button تعریف شده معرفی کنید(با دستوراتی که توضیح داده شد) و درنهایت هم می‌توانید برای اجرای این اسکریپت آن را به یک گیم آبجکت خالی و یا خود Button بدهید.

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


⭕️کانال یونیتی لرنینگ⭕️
💢@UnityLearning💢
آمار کلی از سخت افزار ها و سیستم عامل های استفاده کننده از یونیتی طی 2016-2017

🔹 مرجع: سایت یونیتی

@UnityLearning
UnityWebPlayer64.exe
1.1 MB
⭕️ شبیه ساز Web Player یونیتی

🔹برای ویندوز های 64 بیتی

🔸ساخت بازی های تحت وب در یونیتی

@UnityLearning
webplayer_mini.dmg
4.9 MB
⭕️ شبیه ساز Web Player یونیتی

🔹برای سیستم عامل مک

🔸ساخت بازی های تحت وب در یونیتی

@UnityLearning
⚫️ فرا رسیدن سالروز شهادت حضرت امام محمد باقر علیه السلام را به تمام شیعیان و دل دادگان اهل بیت تسلیت عرض می‌کنیم.

▪️◾️◼️السلام علیک یا باقر العلوم ◼️◾️▪️

@UnityLearning
master.zip
68.1 MB
⭕️ #پکیج پیشنهاد کلمات در برنامه نویسی برای یونیتی « #تست_نشده»

📍پشتیبانی سه زبان( #سی_شارپ، #جاوا و بو اسکریپت) و قابل استفاده روی یونیتی 5.6 به بالا

🔸نام پکیج
🔹Unity Completions

@UnityLearning
⭕️ استفاده از دستور Time.deltaTime

🔸دستور دلتا تایم از #کلاس Time برگرداننده اختلاف زمانی بین تابع FixedUpdate و Update است، به این معنی که اگر بخواهیم در تابع Update یک کار (معمولا کار های حرکتی و چرخشی) بر اساس زمان دقیق تکرار شود باید خروجی آن را در دستور فوق ضرب کنیم. این دستور عددی بین صفر و یک بر می گرداند و باعث می‌شود عمل شما دقیقا بر واحد زمان اجرا شود. از این دستور در اسکریپت های کانال بسیار استفاده کرده ایم.

🔹به طور #مثال دستور زیر آبجکتی که کد به آن داده شده است را در واحد زمان به سمت بالا جابجا می‌کند./👇

transform.position += Vector3.up * Time.deltaTime;

👈اگر به جای Time.deltaTime از یک عدد مثلا 10 استفاده می کردیم یعنی در هر بار تکرار تابع Update ـ ۱۰ واحد آبجکت بالا رود و به علت اینکه سرعت تکرار تابع Update یکسان نیست این جابجایی به صورت مطلوب انجام نمی شد(چون سرعت در سیستم ها و محل های مختلف متفاوت بود) اما استفاده از این دستور ( Time.deltaTime) بسیار می‌تواند کارساز باشد و باعث دقیق شدن عملیات در بازی شود. بنابراین همیشه برای انجام عملیاتی مثل حرکت و چرخش آبجکت ها حتماً از دستور Time.deltaTime به صورت ضرب در خروجی دستور استفاده کنید.

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


⭕️کانال یونیتی لرنینگ⭕️
💢@UnityLearning💢
⭕️ بررسی تگ یک آبجکت

🔹برای بررسی تگ اختصاص داده شده به یک آبجکت دو روش وجود دارد که ما از روش اول زیاد در اسکریپت ها استفاده کرده ایم.

روش اول) بررسی تگ با استفاده از خصوصیت tag همه آبجکت ها(transform) در یونیتی دارای خصوصیتی به نام tag هستند که میتوان به کمک آن تگ یک آبجکت را تعیین کرد یا آن را بدست آورد.

🔸قرار دادن تگ پلیر روی آبجکت/👇
transform.tag = "Player";
🔸بررسی تگ آبجکت که پلیر هست یا خیر؟ /👇
if (transform.tag == "Player")

روش دوم) استفاده از دستور و تابع CompareTag است، این تابع بررسی می‌کند تگ یک آبجکت آنچه در ورودی تابع داده شده هست یا خیر؟ /👇

if (transform.CompareTag ("Player"))

🔹این دستور دقیقا معادل همان دستور قبل است و هیچ تفاوتی نمی کند.

#اسکریپت_نویسی #کد_نویسی #یونیتی #تگ #برنامه

❗️ضمناً تأکید می‌گردد کلیه آبجکت ها در یونیتی دارای تگ هستند آنهایی که هنوز برای آنها تگ خاصی تعریف نکرده ایم دارای تگ به نام Untagged هستند. دقت کنید Untagged به معنای این نیست که آبجکت تگ ندارد بلکه نام یک تگ است که یونیتی به طور پیش فرض به تمام آبجکت ها می‌دهد.


⭕️کانال یونیتی لرنینگ⭕️
💢@UnityLearning💢
Unity Learning
Distance.js
Distance_CSharp.cs
411 B
اسکریپت آماده ثبت فاصله از موقعیت اولیه که قبلا به زبان #جاوا قرار داده بودیم، به #درخواست کاربران به زبان #سی_شارپ

@UnityLearning
🔘کاربران گرامی لطفا با معرفی کانال ما را در هر چه بهتر شدن کانال یاری کنید. برای معرفی کانال می توانید از پست لینک زیر استفاده کنید/👇

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

◻️◽️▫️یونیتی لرنـــینگ▫️◽️◻️
▪️◾️◼️@UnityLearning◼️◾️▪️
⭕️ پنجره Time Manager

Edit > Project Settings > Time

زمان پیش فرض تکرار دستورات تابع FixedUpdate با پارامتر Fixed Timestep قابل تنظیم است.

@UnityLearning
Unity Learning
⭕️ پنجره Time Manager Edit > Project Settings > Time زمان پیش فرض تکرار دستورات تابع FixedUpdate با پارامتر Fixed Timestep قابل تنظیم است. @UnityLearning
⭕️ #پنجره Time به منظور تنظیم اولیه پارامتر های مربوط به زمان

🔹همانطور که بیان شد با پارامتر اول یعنی Fixed Timestep می‌توان زمان تکرار تابع FixedUpdate() را مشخص می‌کند یعنی مثلا دستورات تابع مذکور هر 0.2 ثانیه یک بار اجرا شود.

🔸پارامتر دوم نیز حداکثر زمان هر بار اجرای تابع FixedUpdate() را مشخص می‌کند یعنی اگر به هر دلیل اجرای دستورات تابع طول کشید(مثلا به دلیل طولانی یا سنگین بودن دستورات) نهایتا تا چه زمانی یونیتی باید به اجرای دستورات و عدم بازگشت به اول تابع ادامه دهد. یعنی اگر مدت زمان اجرای دستورات تابع مثلا از 0.33 بیشتر شد دیگر به ادامه دستورات توجه نشود و به ابتدای تابع برگردد.

🔹پارامتر سوم Time Scale نیز مقدار اولیه Time Scale است که سرعت بازی را مشخص می‌کند . در مورد دستور Time Scale قبلا توضیح داده ایم عددی است که به طور کلی در زمان بازی ضرب می‌شود یعنی اگر معادل نیم تنظیم شود زمان اجرای بازی دو برابر کُند (اسلومیشن) می‌شود و اگر برابر 2 باشد زمان اجرای بازی دو برابر حالت واقعی تند می‌شود.

#یونیتی #برنامه



⭕️کانال یونیتی لرنینگ⭕️
💢@UnityLearning💢
⭕️برخی دستورات #کلاس Vector3

🔹همانطور که قبلا نیز گفتیم این کلاس برای کار با بردار های سه بعدی (یا نقاط در صفحه سه بعدی) استفاده می‌شود.

🔸برای محاسبه زاویه بین دو بردار از دستور Vector3.Angle استفاده می‌شود این تابع دو پارامتر از نوع Vector3 می‌گیرد که در واقع همان دو بردار مورد نظر هستند و تابع زاویه بین آنها را از نوع float بر می‌گرداند.

👈 #مثال
var angle: float = Vector3.Angle(targetDir, transform.forward);

🔹این دستور زاویه بین دو بردار روبرو آبجکت جاری و targetDir را محاسبه کرده و در متغیر angle قرار می‌دهد.

◻️ برای «محاسبه فاصله دو نقطه از هم» بر حسب متر نیز از تابع Vector3.Distance استفاده می‌شود. این تابع دو نقطه از نوع Vector3 دریافت می‌کند و فاصله آنها را بر اساس دستورات ریاضی «جذر حاصل جمع مکعب هر کدام از پارامتر های xyz» محاسبه می‌کند و آن را برمی گرداند(خروجی از نوع float است و به علت اینکه برای محاسبه این عدد (فاصله) نیاز به جذر گرفتن هست اکثر مواقع این عدد یک عدد گُنگ است.

▫️هر متغیری از کلاس Vector3 داشته باشیم می‌توانیم با دستورات XYZ به مقادیر این پارامتر ها به طور جداگانه دسترسی داشت /👇

var vct:Vector3;

▪️دستور زیر مقدار X مربوط به متغیر را بر می گرداند(اگر vct بیان کننده یک نقطه باشد 👈 x معادل موقعیت x در صفحه است و اگر معادل یک بردار باشد x معادل پارامتر x از آن است یعنی برداری که از نقطه (0،0،0) به سمت نقطه (X,Y,Z) رسم می‌شود معادل بردار مورد نظر ماست) /👇

vct.x;

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

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



⭕️کانال یونیتی لرنینگ⭕️
💢@UnityLearning💢
⭕️ برخی دستورات #کلاس Vector3 #ادامه

▪️با تابع Normalize میتوان مقادیر یک بردار (یا نقطه) را به صورت نرمال شده (بین صفر و یک) در آورد/👇
Vector3. Normalize(Vector);

▫️این دستور یک بردار (Vector3) با مقادیر نرمال شده بردار Vector را برمی گرداند.

🔸تابع MoveToward موقعیت لازم برای حرکت یک آبجکت از محلی به محل دیگر را بر می گرداند. پارامتر های دستور به این ترتیب هستند که پارامتر اول موقعیت فعلی آبجکت است، پارامتر دوم موقعیت نهایی است که در نظر داریم به آن برسیم و میزان جابجایی نیز در پارامتر سوم است. در واقع این تابع هر بار موقعیتی را از نقطه اول(شروع) به سمت نقطه پایان که به میزان داده شده پیموده شود می‌دهد. به طور مثال فرض کنید بخواهیم از نقطه A به سمت نقطه B به میزان 2 واحد برویم دستور را به این شکل به کار میبریم/👇

Vector3.MoveTowards(A,B,2);

🔹این دستور موقعیت جدید را بر می‌گرداند. دستوری بسیار مناسب برای حرکت آبجکت ها به دنبال هم و یا به سمت دلخواه (جایگزینی مناسب برای دستور Translate)

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


⭕️کانال یونیتی لرنینگ⭕️
💢@UnityLearning💢
This media is not supported in your browser
VIEW IN TELEGRAM
⭕️ حرکت با دستور Move Towards به این شکل است👆

(حرکت مستقیم به سمت نقطه مقصد)

@UnityLearning
📷 حرم مطهر امام حسین علیه السلام در شب عرفه «هم اکنون»

◻️◽️▫️السلام علیک یا اباعبدالله الحسین

🌷التماس دعا

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

▪️اگر یک متغیر از نوع UI Text برای دسترسی به آن داشته باشیم یعنی با فرض تعریف به شکل زیر /👇

#سی_شارپ
Using UnityEngin.UI
Text Txt;
#جاوا
var Txt:UnityEngine.UI.Text;

👈با پارامتر color می‌توان به رنگ متن دسترسی داشت. برای تغییر رنگ باید از #کلاس Color استفاده کرد که جزئیات بیشتر در پست زیر موجود است/👇

https://t.me/UnityLearning/1005

▫️با پارامتر font نیز میتوان فونت یک متن را در زمان اجرای بازی تغییر داد. این فونت باید در یونیتی تعریف شده باشد و آن را به اسکریپت معرفی کنیم، برای تعریف یک نوع داده فونت از کلاس Font استفاده می‌شود. این کلاس شامل پارامتر هایی مثل اندازه فونت و... است که در پست های بعد بیشتر در مورد آن توضیح می‌دهیم.

🔹برای تعیین تراز بندی (alignment) متن نیز از پارامتر alignment استفاده می‌شود. یک متن می تواند 6 حالت مختلف برای تراز بندی داشته باشد (مثلا بالا چپ چین، پایین راست چین و...) که این پارامتر ها با کلاس TextAnchor مشخص می‌شوند. مثلا

TextAnchor.MiddleLeft

▫️یعنی وسط چپ چین یا دستور /👇

TextAnchor.LowerCenter

🔸به معنای پایین وسط چین می‌باشد که باید این دستورات را به پارامتر alignment مربوط به یک UI Text داد. /👇

Txt.alignment = TextAnchor.LowerCenter;

🔹سایر دستورات و همچنین کلاس های لازم برای UI Text در پست های آتی توضیح داده خواهند شد.

#اسکریپت_نویسی #کد_نویسی در #یونیتی #برنامه


⭕️کانال یونیتی لرنینگ⭕️
💢@UnityLearning💢
🔴فوری

پیکر پاک شهید حججی دقایقی پیش تحویل حزب الله و نیروهای مقاومت شد.

🔹منبع: شبکه خبر

@UnityLearning