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
⭕️ذخیره سازی اطلاعات به صورت ایمن بر اساس تابع Hash در یونیتی

📍اطلاعات قبلی لازم: مطالعه در مورد نحوه ذخیره سازی داده ها به کمک جدول درهم سازی(Hash Table)

🔸در صورتی که در یونیتی بخواهیم اطلاعات با ایمنی بیشتر ذخیره شود، می توانیم از کلاس Hashtable در یونیتی استفاده کرد. این کلاس به طور کامل در یونتی برنامه نویسی شده است و نیازی به عمل اضافه برای تعریف نحوه ذخیره سازی داده ها نیست.

🔹برای استفاده از این کلاس ابتدا باید یک نمونه (متغیر) از آن تعریف کرد./🔻
var h : Hashtable;
h = new Hashtable();

وسپس با دستورات این کلاس مقادیر را به آن داد. به طور مثال دستورات زیر در اندیس های 1 و 2 مقادیر "one" , "two" را قرار می دهد./🔻
h.Add(1,"one");
h.Add(2,"two");

📍دستورات زیر یک اندیس به همراه مقدارش را از HashTable حذف می کند./🔻
h.Remove("1");

🔹دستور زیر تعداد مقادیر اضافه شده به متغیر از نوع HashTable را به عدد بر می گرداند./🔻
hCount;

🔘 سایر دستورات این کلاس در پست های بعد در Reply این پیام قرار خواهد گرفت. باید دانست دلیل اصلی استفاده از کلاس مذکور امنیت است ولی کاربرد های دیگر آن در مرتب سازی داده از کسی پوشیده نیست. این دستور ایمنی داده ها در حافظه Ram را تأمین می کند.

به کانال یونیتی لرنینگ
بپــــــوندید./🔻
@UnityLearning
Unity Learning
⭕️ذخیره سازی اطلاعات به صورت ایمن بر اساس تابع Hash در یونیتی 📍اطلاعات قبلی لازم: مطالعه در مورد نحوه ذخیره سازی داده ها به کمک جدول درهم سازی(Hash Table) 🔸در صورتی که در یونیتی بخواهیم اطلاعات با ایمنی بیشتر ذخیره شود، می توانیم از کلاس Hashtable در یونیتی…
⭕️ نحوه ذخیره سازی با استفاده از Hash Table به کمک جدول اندیس ها

این نحوه ذخیره سازی به طور گسترده درنرم‌افزارها، آرایه‌های شرکت پذیر، ساختار پایگاه‌داده، حافظه‌های نهان و مجموعه‌ها کاربرد دارد.
Unity Learning
⭕️ذخیره سازی اطلاعات به صورت ایمن بر اساس تابع Hash در یونیتی 📍اطلاعات قبلی لازم: مطالعه در مورد نحوه ذخیره سازی داده ها به کمک جدول درهم سازی(Hash Table) 🔸در صورتی که در یونیتی بخواهیم اطلاعات با ایمنی بیشتر ذخیره شود، می توانیم از کلاس Hashtable در یونیتی…
⭕️نحوه ذخیره سازی داده در هش(Hash) به شکل 🔻
(Key,Value)
است و به کمک آنها می توان به مقادیر دسترسی داشت. (همانطور که در دستور Add به همین شکل مقادیر ارسال می شد)
🔸در صورتی که بخواهیم از روی مقدار Key به مقدار Value دستیابی پیدا کنیم از دستور زیر استفاده خواهیم کرد./🔻
h.ContainsKey(key)
🔹در دستور فوق key همان مقدار key است که در دستور add وارد شده است و نوع آن نیز Object است، یعنی می تواند عددی، رشته ای و... باشد.

📍برای استفاده از حالت بر عکس یعنی دسترسی از روی مقدار value نیز می توان از دستور زیر استفاده کرد./🔻
h.ContainsValue("value")

[ در واقع دستورات فوق در Hash Table جستجو می کنند و اگر مقادیر در آن وجود داشت true خواهند بود ]

به کانال یونیتی لرنینگ
بپــــیوندید/🔻
@UnityLearning
⭕️ تبدیل مقادیر عددی و رشته ای

🔸در #یونیتی نیز مانند دیگر برنامه های برنامه نویسی عمل تبدیل بین عدد و رشته ای با دستورات خاصی انجام می گیرد. در ادامه دستورات تبدیلی به شکل مثال قرار خواهند گرفت، دقت کنید در تمام دستورات متغیر ها هر کدام از نوع int،float و String تعریف شده اند./🔻

🔹تبدیل String به int
i = int.Parse(s);

🔹تبدیل String به float
f = float.Parse(s);

🔹تبدیل int یا float به String
برای این تبدیل کافی است از دستور ToString در انتهای متغیر از نوع عددی استفاده کرد.
s = f.ToString();

به کانال یونیتی لرنینگ
بپــــــوندید/🔻
@UnityLearning
⭕️ میل دادن مقادیر در یونیتی

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

🔸شکل کلی دستور به حالت زیر است./🔻
Mathf.PingPong(Time, Value)

👈 در دستور فوق مقدار Time بازه زمانی تولید اعداد است و مقدار Value عددی است که دستور از صفر تا آن یک بازه عددی تولید می کند. اگر می خواهیم این دستور در بازه زمانی بازی انجام شود (همیشه) می توان به جای Time دستور Time.time را نوشت. #مثال/🔻
Mathf.PingPong(Time.time, 3)

📍 دستور بالا یک بازۀ زمانی از صفر تا سه در اجرای بازی (قابل استفاده در تابع Update) ایجاد می کند. برای آموزش نحوۀ استفاده از این دستور در پست بعدی اسکریپت آماده حرکت در محور x با استفاده از دستور PingPong قرار خواهد گرفت.

به کانال یونیتی لرنینگ
بپــیوندید./🔻
@UnityLearning
PingPong.js
319 B
⭕️ اسکریپت آماده ساخت یک حالت رفت و برگشتی (Loop) برای حرکت یک آبجکت در محور x از 0 تا 3

🔹 بــه زبان #جاوا اسکریپت

@UnityLearning
⭕️ رفتارها و رویدادها در یونیتی

[این پست جنبه یادآوری و توضیح بیشتر دارد]

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

🔸برای رفتار های خاص در یونیتی کامپوننت های زیادی وجود دارد که بسیاری از آنها را در کانال بررسی کرده ایم. اما گاهی اوقات رفتار مد نظر ما به عنوان یک کامپوننت خاص در دسترس نیست در اینجا لازم است برای آبجکت/آبجکت هایمان کد بنویسیم. در واقع این کد یک کامپوننت است که ویژگیهای مد نظر ما را برای آبجکت انجام خواهد داد. علت اسکریپت نویسی در یونیتی هم دقیقاً همین موضوع است یعنی «انجام برخی رفتار و ویژگیها که در یونیتی برای آنها کامپوننت خاصی تعریف نشده است.»

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

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

@UnityLearning
Scripts_as_Behaviour_Components_Unity_Official_Tutorials.137.mp4
14.5 MB
🎥 Scripts as Behaviour Components

🔷 #فیلم قرار گرفته برای توصیف #کامپوننت ها و اسکریپت نویسی در سایت در یونیتی با کیفیت FHD

@UnityLearning
Unity Learning
Scripts_as_Behaviour_Components_Unity_Official_Tutorials.137.mp4
Change_Color.cs
599 B
⭕️ اسکریپت آماده معرفی شده در فیلم

«تغییر #رنگ یک آبجکت با کلید های RGB»

به زبان #سی_شارپ اسکریپت

به کانال یونیتی لرنینگ
بپیوندید./🔻
@UnityLearning
Its A Road Tool.unitypackage
1.4 MB
⭕️ #پکیج ساخت جاده در یونیتی

🔹 این پکیج برای ساخت محیط با جاده به هر شکلی استفاده می شود. هماهنگی با Terrain و سطوح آن از دیگر ویژگی های این پکیج است.

@UnityLearning
Unity Learning
Its A Road Tool.unitypackage
⭕️ #آموزش استفاده از #پکیج

🔹برای استفاده از این پکیج بعد از import کردن آن به پروژه بازی سازی خود، می توانید آن را از منوی GameObject به بازی اضافه کنید./🔻
GameObject->Create Other->Road

🔸سپس روی Terrain یا هر آبجکت دارای MeshRendrer و Collider کلیک کنید تا نقاط روی صفحه ثبت شود.

🔹در پایان تعیین مسیر دکمه قرمز رنگ Lock در کنار صفحه [پنجره Inspector] کلیک کنید و منتظر بمانید تا مسیر شما کامل شود.

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

📕 این پکیج ویژگیهای دیگری نیز دارد که می توانید آنها را در فایل Readme موجود در پوشه پکیج مشاهده نمایید.

به کانال یونیتی لرنینگ
بپیــــــــوندید./🔻
@UnityLearning
Unity Learning
⭕️ رفتارها و رویدادها در یونیتی [این پست جنبه یادآوری و توضیح بیشتر دارد] 🔹در یونیتی زمانی که بخواهیم یک آبجکت از خود رفتار خاصی نشان دهد، باید از #کامپوننت ها استفاده کنیم. کامپوننت ها ویژگی هایی هستند که آبجکت ها در حالت عادی ندارند و لازم است به آنها…
⭕️ اسکریپت نویسی برای ایجاد یک رفتار خاص #ادامه

🔸اسکریپت ها در یک بازی نقش بسیار مهمی را بر عهده دارند و یک بازی ساز حتماً باید به آن توجه کامل کند. همانطور که قبلاً نیز توضیح داده ایم، بدترین حالت برای کدها وجود اشکال (bug) در کد است که حتماً منجر به شکست کل بازی خواهد شد. در یونیتی این استراتژی وجود دارد که تا خطاهای کامپایلری کلیه اسکریپت های موجود در کد رفع نشود، به هیچ عنوان اجازۀ اجرای بازی را نخواهد داد اما خطاهای غیر دستوری مثل مقدار دهی اشتباه یک متغیر و... در یونیتی تست نخواهد شد و تنها در زمان اجرای بازی باعث Crash خواهند شد.

🔹حتما در اسکریپت نویسی سعی کنید یک کد را مدام کپی پِیست نکنید. این کار بیش از 5 بار در یک پروژۀ بازی سازی، نشان از متخصص نبودن برنامه نویسان آن دارد. همچنین سعی کنید، متغیرها در برنامه نویسی را با توجه به کاری که انجام می دهند، نام گذاری کنید. این کار ساختار اسکریپت شما را کاملاً مفهومی می کند که به Trace کردن (آزمون کردن) کد بسیار کمک خواهد کرد.

@UnityLearning
⭕️ تنظیم آسمان محیط

☀️ همانطور که می دانید در یونیتی، کامپوننت Skybox مسئول نمایش محیط آسمان در بازی می باشد. اما این #کامپوننت باید کجا استفاده شود تا خروجی لازم نمایش داده شود؟ همانطور که واضح است آسمان موضوعی است برای نمایش در دوربیـــن فعال بازی، بنابراین باید کامپوننت Skybox به آبجکتی که دارای کامپوننت Camera است داده شود. یعنی همیشه کامپوننت زمانی کار خواهد کرد که در کنار Camera باشد.

🔹ضمناً پارامتر Clear Flags نیز از کامپوننت Camera باید روی Skybox تنظیم شده باشد. در صورتی که لازم باشد دوربین فعال در بازی تغییر کند باید کامپوننت Skybox آن نیز همزمان تغییر کند.

🔸 کامپوننت Skybox تنها یک پارامتر دارد و آن ، همان آسمانی است که باید برای دوربین نمایش دهد، در صورتی که Skybox برای پروژه خود دانلود کرده باشید می توانید با کلیک روی دایره کنار پارامتر Custom Skybox آنرا انتخاب کنید.

@UnityLearning
Unity Learning
⭕️ تنظیم آسمان محیط ☀️ همانطور که می دانید در یونیتی، کامپوننت Skybox مسئول نمایش محیط آسمان در بازی می باشد. اما این #کامپوننت باید کجا استفاده شود تا خروجی لازم نمایش داده شود؟ همانطور که واضح است آسمان موضوعی است برای نمایش در دوربیـــن فعال بازی، بنابراین…
⭕️ استفاده از یک آسمان برای تمام دوربین های فعال

[تنظیم یک آسمان به عنوان Default Skybox برای همه دوربین ها]

🔸در یونیتی برای اینکه بخواهیم یک آسمان را روی تمام دوربین های فعال بازی اعمال کنیم و دیگر نخواهیم برای تک تک دوربین ها کامپوننت Skybox قرار دهیم، لازم است از پنجره Light Setting استفاده کنیم و در بخش Environment اقدام به تنظیم یک آسمان خاص برای بازی کنیم. این آسمان روی تمامی دوربین ها به عنوان پیش فرض تنظیم می شود و شما اگر بخواهید یک دوربین آسمان متفاوتی را نمایش دهد باید اختصاصاً برای آن #کامپوننت Skybox قرار دهید.

@UnityLearning
⭕️ تنظیم یک آسمان به عنوان پیش فرض برای تمام دوربین های موجود در بازی

Windows> Lighting > Setting > Scene(Tab) >Skybox Material

@UnityLearning
⭕️ یک Skybox در یونیتی مجموعه ای از چند تکسچر کنار هم است (در تصویر👆 حالت شش وجهی انتخاب شده است)

بهترین حالت برای Skybox وجود تکسچر برای تمام وجه ها (شش جهت) می باشد.

@UnityLearning
نحوه ساخت Skybox.pdf
249.1 KB
⭕️نحوه ساخت SkyBox در یونیتی

🔹 آموزش تصویری در قالب فایل PDF

[نحوۀ ساخت یک Skybox از روی تکسچرهای دو بعدی در یونیتی]

@UnityLearning
⭕️ کاربرد Material

🔹در یونیتی Materialهابرای نحوۀ رندر شدن سطوح استفاده می شوند. یعنی یک سطح (هر سطحی، اعم از سطوح آبجکت ها تا سطح آسمان) بنابراین Materialها قابلیت شکل گیری زیادی در یونیتی خواهند داشت. از آنها قبلا در کد نویسی برای تغییر رنگ آبجکت ها و نمایش محل برخورد تیر استفاده کرده ایم.

🔸تکسچر ها برای نمایش روی سطوح باید از Material ها استفاده کنند و به خودی خود قابلیت قرار گیری روی آبجکت ها را ندارند. درست است که بیان می کردیم، تکسچر را روی آبجکت بکشید اما در اصل با این کار شما یک Material برای آبجکت درست می کردید و #تکسچر مورد نظر به Material داده می شد. Material ها در یونیتی از طریق منوی زیر ساخته می شوند./🔻
Assets->Create->Material

📍با این کار در پنجره Inspector منویی باز می شود تا تنظیمات را در آن وارد کنید. مهمترین تنظیم برای یک Material نوع آن است که در پارامتر Shader قابل تنظیم است. نوع یک Material یعنی آن برای چه کاربردی قرار است ساخته شود/ ساخت تکسچر ساده، استفاده به عنوان Skybox و...

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

@UnityLearning
Unity Learning
⭕️ استفاده از یک آسمان برای تمام دوربین های فعال [تنظیم یک آسمان به عنوان Default Skybox برای همه دوربین ها] 🔸در یونیتی برای اینکه بخواهیم یک آسمان را روی تمام دوربین های فعال بازی اعمال کنیم و دیگر نخواهیم برای تک تک دوربین ها کامپوننت Skybox قرار دهیم،…
🔹در صورتی که بخواهیم این کار یعنی قرار گیری یک آسمان به عنوان پیش فرض (Global) در کد نویسی انجام شود. باید از کلاس RenderSettings استفاده کنیم. تنظیمات مربوط به Rendering در یونیتی در این کلاس موجود است و با دستور skybox از این کلاس می توانیم به آسمان Global در یونیتی دسترسی داشت. /🔻
RenderSettings.skybox=mat;

همانطور که مشاهده می کنید نوع این دستور Material بوده و همان Materialییست که برای آسمان در یونیتی ساخته شده است. در فرض بالا mat یک متغیر سراسری برای مقدار دهی در یونیتی است که به شکل زیر تعریف شده است./🔻
var mat:Material;

[که البته باید بعداً در یونیتی با Material مناسب مقدار دهی گـــردد]

👈 این دستور (دستور RenderSettings.skybox)
برای تغییر آسمان در یونیتی استفاده می شود و زمانی کاربرد دارد که بخواهید به هر دلیلی در یونیتی آسمان تغییر کند یکی از این دلایل می تواند شبیه سازی محیط شب و روز در بازی باشد که با دستور بالا در محل مناسب آسمان بازی تغییر خواهد کرد.

@UnityLearning
BTScript.cs
2.4 KB
⭕️ اسکریپت آماده جهت ایجاد ارتباط با دستگاه های بلوتوث مثل Joystickها و کیبوردهای بلوتوثی

🔹 این اتصال به وسیله پورت ها برقرار می شود. (محل های کد نویسی در اسکریپت مشخص شده است)

@UnityLearning