l1wsvpvd06ww_Residential_Buildings_Set.zip
69 MB
⭕️ #پکیج کاملی از ساختمان های اداری با کیفیت بسیار بالا
📍کلیه فرمت های تولید آبجکت در این پک موجود است.
@UnityLearning
📍کلیه فرمت های تولید آبجکت در این پک موجود است.
@UnityLearning
⭕️ بازگشت پیکر پاک و مطهر شهید مدافــع حرم را گرامی می داریم.
🔹 مراسم استقبال و تشییع پیکر پاک شهید مدافع حرم «محسن حججی» هم اکنون میدان امام حسین تهران - پخش زنده از شبکه خبر
🔸مراسم تشییع و خاک سپاری پیکر پاک شهید فردا در نجف آباد
▪️یاد و خاطره تمام شهدای راه حق را گرامـــی می داریم.
🔹 مراسم استقبال و تشییع پیکر پاک شهید مدافع حرم «محسن حججی» هم اکنون میدان امام حسین تهران - پخش زنده از شبکه خبر
🔸مراسم تشییع و خاک سپاری پیکر پاک شهید فردا در نجف آباد
▪️یاد و خاطره تمام شهدای راه حق را گرامـــی می داریم.
⭕️ نکاتی در مورد #پکیج هایی که به پروژه بازی اضافه می شود.
🔹 زمانی که یک پیکج یونیتی را به پروژه بازی خود اضافه می کنید، این پکیج در #پنجره Project و در پوشه های پروژه (Asset Folder) یک پوشه به نام خود اضافه می کند. این پوشه نیز شامل چندین فولدر دیگر است. فولدری به نام Scripts برای قرار گیری اسکریپت های لازم برای اجرای آن پکیج است. البته این اسکریپت ها، کدهای اجرایی برای آبجکت ها در زمان اجرای بازی هستند. (اجرای رفتارهای لازم برای آبجکت ها)
▫️ پوشه ای به نام Editor برای قرار گیری اسکریپت هایی که روی Unity Editor اجرا می شوند (مثل دستورات ایجاد منوی خاص در پروژه یا ایجاد تغییر در #پنجره Inspector) قبلاً این دستورات را توضیح داده ایم. کدهای این پوشه در زمان اجرای بازی اجرا نمی شوند، بلکه برای ایجاد تغییر در محیط یونیتی استفاده می شوند.
🔸 معمولاً پوشه ای هم به نام Objects یا شبیه به این اسم برای قرار گیری آبجکت های لازم برای پکیج در این پوشه نیز موجود است.
▫️پوشه مهم Prefab است که پریفاب هایی است که می توان از آنها در بازی استفاده کرد. همانطور که می دانید پریفاب همان آبجکت هایی است که به آنها ویژگی های لازم داده شده (مثل اسکریپت ها، کامپوننت هاو...) و آنها آماده برای استفاده در محیط بازی هستند و نیازی به اضافه کردن هیچ موردی را ندارند.
▪️ بنابراین برای استفاده از پکیج ها معمولا پوشه ای به نام Prefab وجـــود دارد که می توان با باز کردن آن به پریفاب های لازم برای استفاده در بازی دسترسی خواهیم داشت.
〰〰〰〰〰〰〰〰
⭕️کانال یونیتی لرنینگ⭕️
💢@UnityLearning💢
🔹 زمانی که یک پیکج یونیتی را به پروژه بازی خود اضافه می کنید، این پکیج در #پنجره Project و در پوشه های پروژه (Asset Folder) یک پوشه به نام خود اضافه می کند. این پوشه نیز شامل چندین فولدر دیگر است. فولدری به نام Scripts برای قرار گیری اسکریپت های لازم برای اجرای آن پکیج است. البته این اسکریپت ها، کدهای اجرایی برای آبجکت ها در زمان اجرای بازی هستند. (اجرای رفتارهای لازم برای آبجکت ها)
▫️ پوشه ای به نام Editor برای قرار گیری اسکریپت هایی که روی Unity Editor اجرا می شوند (مثل دستورات ایجاد منوی خاص در پروژه یا ایجاد تغییر در #پنجره Inspector) قبلاً این دستورات را توضیح داده ایم. کدهای این پوشه در زمان اجرای بازی اجرا نمی شوند، بلکه برای ایجاد تغییر در محیط یونیتی استفاده می شوند.
🔸 معمولاً پوشه ای هم به نام Objects یا شبیه به این اسم برای قرار گیری آبجکت های لازم برای پکیج در این پوشه نیز موجود است.
▫️پوشه مهم Prefab است که پریفاب هایی است که می توان از آنها در بازی استفاده کرد. همانطور که می دانید پریفاب همان آبجکت هایی است که به آنها ویژگی های لازم داده شده (مثل اسکریپت ها، کامپوننت هاو...) و آنها آماده برای استفاده در محیط بازی هستند و نیازی به اضافه کردن هیچ موردی را ندارند.
▪️ بنابراین برای استفاده از پکیج ها معمولا پوشه ای به نام Prefab وجـــود دارد که می توان با باز کردن آن به پریفاب های لازم برای استفاده در بازی دسترسی خواهیم داشت.
〰〰〰〰〰〰〰〰
⭕️کانال یونیتی لرنینگ⭕️
💢@UnityLearning💢
⭕️ متوقف کردن اجرای بازی در محیط Editor
▫️در صورتی که بخواهید در یک زمان خاص در اسکریپت اجرای بازی متوقف شود تا بتوانید عمل تست یا به اصطلاح Trace کدها را انجام دهید، می توانید از دستور Break از کلاس Debug استفاده کنید /👇
Debug.Break();
🔸این دستور تقریبا معادل BreakPoint ساختن در برنامه نویسی است. زمانی که شما یک نقطه از کد های برنامه تان را Breakpoint میکنید، زمانی که کامپایلر به اجرای آن نقطه می رسد، برنامه را متوقف میکند و سایر دستورات بعد از آن خط نیز اجرا نمی شوند. همانطور که می دانید این نقطه تاثیری در خروجی نهایی برنامه ندارد و تنها در زمان اجرای برنامه در محیط کد نویسی (مثلا ویژوال استودیو) باعث توقف میشود.
🔹در یونیتی هم به همین شکل است زمانی که کامپایلر به خط Debug.Break میرسد ادامه اجرای بازی را متوقف میکند و در این لحظه بازی ساز میتواند اطلاعاتی که لازم دارد را مشاهده و بر اساس آنها تصمیم بگیرد.
#اسکریپت_نویسی #کد_نویسی
#برنامه #یونیتی
〰〰〰〰〰〰〰
⭕️کانال یونیتی لرنینگ⭕️
💢@UnityLearning💢
▫️در صورتی که بخواهید در یک زمان خاص در اسکریپت اجرای بازی متوقف شود تا بتوانید عمل تست یا به اصطلاح Trace کدها را انجام دهید، می توانید از دستور Break از کلاس Debug استفاده کنید /👇
Debug.Break();
🔸این دستور تقریبا معادل BreakPoint ساختن در برنامه نویسی است. زمانی که شما یک نقطه از کد های برنامه تان را Breakpoint میکنید، زمانی که کامپایلر به اجرای آن نقطه می رسد، برنامه را متوقف میکند و سایر دستورات بعد از آن خط نیز اجرا نمی شوند. همانطور که می دانید این نقطه تاثیری در خروجی نهایی برنامه ندارد و تنها در زمان اجرای برنامه در محیط کد نویسی (مثلا ویژوال استودیو) باعث توقف میشود.
🔹در یونیتی هم به همین شکل است زمانی که کامپایلر به خط Debug.Break میرسد ادامه اجرای بازی را متوقف میکند و در این لحظه بازی ساز میتواند اطلاعاتی که لازم دارد را مشاهده و بر اساس آنها تصمیم بگیرد.
#اسکریپت_نویسی #کد_نویسی
#برنامه #یونیتی
〰〰〰〰〰〰〰
⭕️کانال یونیتی لرنینگ⭕️
💢@UnityLearning💢
⭕️ دستورات Try Catch برای کنترل خطا
🔸 زمانی در کد ممکن است خطاهایی رخ می دهد، این خطا ها می تواند علل بسیار مختلفی داشته باشد (مثلا تقسیم بر صفر یا هر خطای دیگری که ممکن است در زمان Runtime بازی رخ میدهد) در هنگام اجرای بازی در Editor یونیتی این خطاها در پنجره Console نمایش داده میشود(با رنگ قرمز) .
▪️ در هنگام اجرای بازی در Editor در موقع رخداد این خطاها بازی متوقف نمی شود و فقط متن خطا در کنسول نمایش داده میشود، اما اگر این خطا در هنگام اجرای بازی نهایی (مثلا در اندروید یا Pc) رخ دهد، بازی به طور کامل بسته شده و از محیط بازی خارج میشود.
▫️این مورد از مواردی است که ممکن است در کدها اتفاق بیافتد و بازی ما را با چالش روبرو میکند و این بدترین حالت ممکن برای یک بازی میتواند باشد.
❓ حال چگونه می توان از این خارج شدن در زمان رخداد خطا جلوگیری کرد؟
🔹در اکثر زبان های برنامه نویسی از جمله #جاوا و #سی_شارپ دستوری به نام Try Catch وجود دارد که برای مدیریت خطاها به کار برده میشود. اگر در دستورات از Try Catch استفاده و در این دستورات خطای کامپایلری رخ دهد، برنامه یا بازی دیگر بسته نمیشود بلکه دستوراتی که بلوک Catch نوشته شده است اجرا میشود. (به جای نقطه ها .... باید دستورات مورد نظر نوشته شود)
try
{
........
}
catch(e: Exception)
{
.......
}
👈 اگر در دستوراتی که در قسمت try نوشته میشود، خطایی رخ دهد اجرای دستورات آن قسمت متوقف شده و دستورات بخش Catch اجرا میشود. واضح است که این دستورات باید دستورات مدیریت خطا باشد که در پارامتر e قرار میگیرد. در پست های بعدی این دستورات را مفصلا مورد بررسی قرار می دهیم. این مدیریت باید توسط پارامتر e و دستورات اعلام پیغام در کلاس Debug باشد که سعی بر این است به طور کامل توضیح داده شود.
〰〰〰〰〰〰〰〰〰
⭕️کانال یونیتی لرنینگ⭕️
💢@UnityLearning💢
🔸 زمانی در کد ممکن است خطاهایی رخ می دهد، این خطا ها می تواند علل بسیار مختلفی داشته باشد (مثلا تقسیم بر صفر یا هر خطای دیگری که ممکن است در زمان Runtime بازی رخ میدهد) در هنگام اجرای بازی در Editor یونیتی این خطاها در پنجره Console نمایش داده میشود(با رنگ قرمز) .
▪️ در هنگام اجرای بازی در Editor در موقع رخداد این خطاها بازی متوقف نمی شود و فقط متن خطا در کنسول نمایش داده میشود، اما اگر این خطا در هنگام اجرای بازی نهایی (مثلا در اندروید یا Pc) رخ دهد، بازی به طور کامل بسته شده و از محیط بازی خارج میشود.
▫️این مورد از مواردی است که ممکن است در کدها اتفاق بیافتد و بازی ما را با چالش روبرو میکند و این بدترین حالت ممکن برای یک بازی میتواند باشد.
❓ حال چگونه می توان از این خارج شدن در زمان رخداد خطا جلوگیری کرد؟
🔹در اکثر زبان های برنامه نویسی از جمله #جاوا و #سی_شارپ دستوری به نام Try Catch وجود دارد که برای مدیریت خطاها به کار برده میشود. اگر در دستورات از Try Catch استفاده و در این دستورات خطای کامپایلری رخ دهد، برنامه یا بازی دیگر بسته نمیشود بلکه دستوراتی که بلوک Catch نوشته شده است اجرا میشود. (به جای نقطه ها .... باید دستورات مورد نظر نوشته شود)
try
{
........
}
catch(e: Exception)
{
.......
}
👈 اگر در دستوراتی که در قسمت try نوشته میشود، خطایی رخ دهد اجرای دستورات آن قسمت متوقف شده و دستورات بخش Catch اجرا میشود. واضح است که این دستورات باید دستورات مدیریت خطا باشد که در پارامتر e قرار میگیرد. در پست های بعدی این دستورات را مفصلا مورد بررسی قرار می دهیم. این مدیریت باید توسط پارامتر e و دستورات اعلام پیغام در کلاس Debug باشد که سعی بر این است به طور کامل توضیح داده شود.
〰〰〰〰〰〰〰〰〰
⭕️کانال یونیتی لرنینگ⭕️
💢@UnityLearning💢
⭕️ دسترسی به رنگ های بیشتر با کلاس Color32
📍در مورد کلاس Color قبلا در کانال توضیحاتی داده شده است (پارامتر های این کلاس عددی بوده و از 0 تا 1 مقدار می گیرد و تعداد رنگ قابل نمایش این کلاس 16 بیتی است (2 به توان 16 رنگ))
📌 کلاس Color32 پارامتر هایی بین 0 تا 255 میگیرد و تعداد رنگ 32 بیتی را پشتیبانی میکند.
🔸از نظر تعداد پارامتر این کلاس دقیقا معادل کلاس Color دارای چهار پارامتر برای رنگ قرمز، آبی و سبز است و پارامتر چهارم میزان آلفا یا تیرگی رنگ است.
🔸🔶 #مثال /👇
Color32(64, 128, 192, 255);
🔹 پست های مربوط به #کلاس های Color
⬅️ معرفی کلاس Color /👇
▶️ https://t.me/UnityLearning/683
⬅️ آموزش استفاده از کلاس برای تغییر رنگ آبجکت ها /👇
▶️ https://t.me/UnityLearning/1005
〰〰〰〰〰〰〰〰〰〰
⭕️کانال یونیتی لرنینگ⭕️
💢@UnityLearning💢
📍در مورد کلاس Color قبلا در کانال توضیحاتی داده شده است (پارامتر های این کلاس عددی بوده و از 0 تا 1 مقدار می گیرد و تعداد رنگ قابل نمایش این کلاس 16 بیتی است (2 به توان 16 رنگ))
📌 کلاس Color32 پارامتر هایی بین 0 تا 255 میگیرد و تعداد رنگ 32 بیتی را پشتیبانی میکند.
🔸از نظر تعداد پارامتر این کلاس دقیقا معادل کلاس Color دارای چهار پارامتر برای رنگ قرمز، آبی و سبز است و پارامتر چهارم میزان آلفا یا تیرگی رنگ است.
🔸🔶 #مثال /👇
Color32(64, 128, 192, 255);
🔹 پست های مربوط به #کلاس های Color
⬅️ معرفی کلاس Color /👇
▶️ https://t.me/UnityLearning/683
⬅️ آموزش استفاده از کلاس برای تغییر رنگ آبجکت ها /👇
▶️ https://t.me/UnityLearning/1005
〰〰〰〰〰〰〰〰〰〰
⭕️کانال یونیتی لرنینگ⭕️
💢@UnityLearning💢
⭕️ اسکریپت جدید برای بررسی اتصال مناسب برای دستگاه های موبایل
🔹در پست بعدی یک اسکریپت با قابلیت اعلام اتصال قرار می گیرد. یعنی این اسکریپت دو تابع کلی دارد که شما می توانید کدهایی که لازم است در زمان اتصال یا عدم اتصال به وای فای و #اینترنت اجرا شوند را وارد کنید.
☑️ خود اسکریپت اکنون تنها با #کلاس Debug این اتصال یا عدم اتصال را به بازی ساز اعلام می کند. (توابع در انتهای اسکریپت هستند و استفاده از آنها بسیار ساده است.)
🔘 این اسکریپت اتصال را با کلاس Application و متد internetReachability بررسی می کند که دستوری است جهت انجام اعمال Reach در محیط اینترنت برای یونیتی
ℹ️ دستورات جستجو یا به اصطلاح Reach در اینترنت برای علل مختلفی مورد استفاده قرار می گیرند. دستورات Ping و Tracert که در ویندوز از آنها برای بررسی اتصال استفاده می کنیم، از جمله این دستورات محسوب می شوند.
🔸🔶 اسکریپت مذکور نیز بررسی اتصال را با دستورات Ping روی آدرس pingAddress انجام می دهد. دستور Ping دستوریست که در پارامتر ورودی اش یک String به عنوان آدرس IP یا Domain Name (نام دامنه - URL) که باید به دنبال آن بگردد دریافت می کند.
✅ اسکریپت به زبان #سی_شارپ در پست بعدی برای دانلود قرار خواهد گرفت.
〰〰〰〰〰〰〰〰
⭕️کانال یونیتی لرنینگ⭕️
💢@UnityLearning💢
🔹در پست بعدی یک اسکریپت با قابلیت اعلام اتصال قرار می گیرد. یعنی این اسکریپت دو تابع کلی دارد که شما می توانید کدهایی که لازم است در زمان اتصال یا عدم اتصال به وای فای و #اینترنت اجرا شوند را وارد کنید.
☑️ خود اسکریپت اکنون تنها با #کلاس Debug این اتصال یا عدم اتصال را به بازی ساز اعلام می کند. (توابع در انتهای اسکریپت هستند و استفاده از آنها بسیار ساده است.)
🔘 این اسکریپت اتصال را با کلاس Application و متد internetReachability بررسی می کند که دستوری است جهت انجام اعمال Reach در محیط اینترنت برای یونیتی
ℹ️ دستورات جستجو یا به اصطلاح Reach در اینترنت برای علل مختلفی مورد استفاده قرار می گیرند. دستورات Ping و Tracert که در ویندوز از آنها برای بررسی اتصال استفاده می کنیم، از جمله این دستورات محسوب می شوند.
🔸🔶 اسکریپت مذکور نیز بررسی اتصال را با دستورات Ping روی آدرس pingAddress انجام می دهد. دستور Ping دستوریست که در پارامتر ورودی اش یک String به عنوان آدرس IP یا Domain Name (نام دامنه - URL) که باید به دنبال آن بگردد دریافت می کند.
✅ اسکریپت به زبان #سی_شارپ در پست بعدی برای دانلود قرار خواهد گرفت.
〰〰〰〰〰〰〰〰
⭕️کانال یونیتی لرنینگ⭕️
💢@UnityLearning💢
InternetChecker.cs
1.9 KB
اسکریپت آماده بررسی اتصال با دستور Ping
به زبان #سی_شارپ
به کانال یونیتی لرنینگ
بپیوندید
@UnityLearning
به زبان #سی_شارپ
به کانال یونیتی لرنینگ
بپیوندید
@UnityLearning
table1-1024x927.png
723 KB
آخرین مقایسه صورت گرفته روی شش موتور بازی سازی برتر جهان توسط سایت
gamesparks.com
یونیتی همچنان در صدر داشتن اکثر ویژگی ها قرار دارد.
به کانال یونیتی لرنینگ بپیوندید
@UnityLearnin
gamesparks.com
یونیتی همچنان در صدر داشتن اکثر ویژگی ها قرار دارد.
به کانال یونیتی لرنینگ بپیوندید
@UnityLearnin
⭕️ قابلیت های دیگر دستور Destroy
📄 همانطور که بارها در پست های قبل دستور Destroy را توضیح داده ایم، این دستور و تابع برای از بین بردن یک آبجکت در یونیتی به کــــار می رود. اما این دستور تنها برای حذف آبجکت ها به کار نمی رود، بلکه این یکی از ویژگی های آن است. دستور فوق برای حذف هر Asset در یونیتی استفاده می شود و Asset می تواند یک اسکریپت، #کامپوننت و هر چیزی که به یک آبجکت در بازی متصل شده است نیز باشد کافی است این Asset به یک نحوی برای اسکریپت تعریف شده باشد. چند حالت از این دستور در زیر بررسی شده است.
🔹حذف کامپوننت Rigidbody متصل شده به گیم آبجکت جاری (که کد به ان متصل می شود) /👇
Destroy (rigidbody);
🔸حذف یک کامپوننت خاص از یک گیم #آبجکت (Name نام کامپوننت است) /👇
Destroy(GetComponent<Name> ());
(مثال برای حالت قبل - حذف اسکریپت متصل شده به یک آبجکت به نام enemy) /👇
Destroy(enemy.GetComponent<EnemyAI> ());
🔸🔶 باید توجه داشت دستور Destroy ، آبجکت یا Asset را به طور کامل حذف می کند و دیگر مجددا قابل بازگشت و دسترسی مجدد در زمان اجرای بازی نیست، مگر به یک نحوی مجدداً با دستور Instantiate ایجاد شود. بنابراین اگر می خواهید موقتا یک #کامپوننت، اسکریپت یا هر چیزی را غیر فعال کنید و لازم بعداً دوباره فعال شود، از دستورات Active و enabled استفاده کنید.
〰〰〰〰〰〰〰〰
⭕️کانال یونیتی لرنینگ⭕️
💢@UnityLearning💢
📄 همانطور که بارها در پست های قبل دستور Destroy را توضیح داده ایم، این دستور و تابع برای از بین بردن یک آبجکت در یونیتی به کــــار می رود. اما این دستور تنها برای حذف آبجکت ها به کار نمی رود، بلکه این یکی از ویژگی های آن است. دستور فوق برای حذف هر Asset در یونیتی استفاده می شود و Asset می تواند یک اسکریپت، #کامپوننت و هر چیزی که به یک آبجکت در بازی متصل شده است نیز باشد کافی است این Asset به یک نحوی برای اسکریپت تعریف شده باشد. چند حالت از این دستور در زیر بررسی شده است.
🔹حذف کامپوننت Rigidbody متصل شده به گیم آبجکت جاری (که کد به ان متصل می شود) /👇
Destroy (rigidbody);
🔸حذف یک کامپوننت خاص از یک گیم #آبجکت (Name نام کامپوننت است) /👇
Destroy(GetComponent<Name> ());
(مثال برای حالت قبل - حذف اسکریپت متصل شده به یک آبجکت به نام enemy) /👇
Destroy(enemy.GetComponent<EnemyAI> ());
🔸🔶 باید توجه داشت دستور Destroy ، آبجکت یا Asset را به طور کامل حذف می کند و دیگر مجددا قابل بازگشت و دسترسی مجدد در زمان اجرای بازی نیست، مگر به یک نحوی مجدداً با دستور Instantiate ایجاد شود. بنابراین اگر می خواهید موقتا یک #کامپوننت، اسکریپت یا هر چیزی را غیر فعال کنید و لازم بعداً دوباره فعال شود، از دستورات Active و enabled استفاده کنید.
〰〰〰〰〰〰〰〰
⭕️کانال یونیتی لرنینگ⭕️
💢@UnityLearning💢
⭕️ اضافه کردن کالیدر به درخت های آماده یونیتی
🔹 بعضی از درخت های قدیمی در یونیتی کالیدر ندارند و زمانی که شما با دکمه اضافه کردن درخت در Terrain آنها را روی صفحه رسم می کنید، در زمان اجرای بازی کاراکتر و سایر اجسام از این درخت ها رد می شوند. البته تاکید می گردد این مسئله فقط در نسخه های قدیمی پکیج درخت دیده می شود و در نسخه های جدید رفع شده است.
🔸 به هر ترتیب برای اینکه بخواهید به درخت هایی که با کنترل Place Tree روی Terrain رسم می شوند کالیدر بدهید از این روش استفاده کنید.
🔘 ابتدا آبجکت درخت مورد نظر را در Asset Folder و پنجره Project پیدا کنید. سپس آن را به محیط Terrain اضافه کنـــید و به آن کالیدر و هر کامپوننت دیگری که می خواهید به آن بدهید و از آن یک Prefab بسازید. در نهایت این پریفاب را به عنوان درخت به Place Tree معرفی کنید.
〰〰〰〰〰〰〰〰
⭕️کانال یونیتی لرنینگ⭕️
💢@UnityLearning💢
🔹 بعضی از درخت های قدیمی در یونیتی کالیدر ندارند و زمانی که شما با دکمه اضافه کردن درخت در Terrain آنها را روی صفحه رسم می کنید، در زمان اجرای بازی کاراکتر و سایر اجسام از این درخت ها رد می شوند. البته تاکید می گردد این مسئله فقط در نسخه های قدیمی پکیج درخت دیده می شود و در نسخه های جدید رفع شده است.
🔸 به هر ترتیب برای اینکه بخواهید به درخت هایی که با کنترل Place Tree روی Terrain رسم می شوند کالیدر بدهید از این روش استفاده کنید.
🔘 ابتدا آبجکت درخت مورد نظر را در Asset Folder و پنجره Project پیدا کنید. سپس آن را به محیط Terrain اضافه کنـــید و به آن کالیدر و هر کامپوننت دیگری که می خواهید به آن بدهید و از آن یک Prefab بسازید. در نهایت این پریفاب را به عنوان درخت به Place Tree معرفی کنید.
〰〰〰〰〰〰〰〰
⭕️کانال یونیتی لرنینگ⭕️
💢@UnityLearning💢
⭕️ #دانلود پروژه کامل بازی Tanks برای آموزش ساخت بازی های شبکه ای
این بازی پیشنهاد یونیتی برای شروع ساخت بازی های چند نفری است که می توانید در پست بعدی پروژه کامل آن را دانلود کنید.
این بازی پیشنهاد یونیتی برای شروع ساخت بازی های چند نفری است که می توانید در پست بعدی پروژه کامل آن را دانلود کنید.
tanks.7z
671.8 KB
پروژه کامل بازی tanks
برای شروع از Scene به نام Title استفاده کنید.
کلیه Sceneها در پوشه ای به همین نام قرار دارند.
Assets > Scenes
@UnityLearning
برای شروع از Scene به نام Title استفاده کنید.
کلیه Sceneها در پوشه ای به همین نام قرار دارند.
Assets > Scenes
@UnityLearning
⭕️ رسم خط در کلاس Debug
▫️گاهی اوقات لازم است در زمان اجرای بازی و در زمان اجرای بازی در محیط Editor یونیتی یک خط برای مشاهده بازی ساز رسم شود تا بازی ساز توسط آن خط مواردی را تست کند و بر اساس آن تصمیم گیری کند. دقت کنید این خط تنها در زمان اجرای بازی (Play Mode) و فقط در زمانی که بازی را در محیط Editor اجرا کرده ایم، دیده میشود. رسم این خط در بعضی موارد که لازم است بازی ساز صحت بازی خود را تست کند، بسیار لازم است.
🔸دستور رسم خط در کلاس Debug به شکل زیر است /👇
Debug.DrawLine(StartPos,EndPos,Color);
👈 این دستور یک خط از نقطه شروع(از نوع Vector3) به نقطه پایان با رنگ داده شده رسم میکند. البته حالات دیگری از این تابع نیز وجود دارد. مثلا پارامتر چهارمی به نام Duration نیز برای تابع وجود دارد که زمان رسم خط را میتوان در آن وارد کرد مثلا اگر مقدار 3.5f در آن قرار گیرد، خط به مدت 3 و نیم ثانیه رسم شده و سپس حذف میشود.
🔹🔷 مثال: رسم خط از یک آبجکت (که کد را به آن متصل کرده ایم) به سمت آبجکت دیگری که برای اسکریپت معرفی شده است به رنگ قرمز . /👇
var Obj : Transform;
......
......
Debug.DrawLine(transform.position,Obj.position,Color.red);
〰〰〰〰〰〰〰〰
🔹🔷کانال یونیتی لرنینگ 🔷🔹
🔸🔶@UnityLearning🔶🔸
▫️گاهی اوقات لازم است در زمان اجرای بازی و در زمان اجرای بازی در محیط Editor یونیتی یک خط برای مشاهده بازی ساز رسم شود تا بازی ساز توسط آن خط مواردی را تست کند و بر اساس آن تصمیم گیری کند. دقت کنید این خط تنها در زمان اجرای بازی (Play Mode) و فقط در زمانی که بازی را در محیط Editor اجرا کرده ایم، دیده میشود. رسم این خط در بعضی موارد که لازم است بازی ساز صحت بازی خود را تست کند، بسیار لازم است.
🔸دستور رسم خط در کلاس Debug به شکل زیر است /👇
Debug.DrawLine(StartPos,EndPos,Color);
👈 این دستور یک خط از نقطه شروع(از نوع Vector3) به نقطه پایان با رنگ داده شده رسم میکند. البته حالات دیگری از این تابع نیز وجود دارد. مثلا پارامتر چهارمی به نام Duration نیز برای تابع وجود دارد که زمان رسم خط را میتوان در آن وارد کرد مثلا اگر مقدار 3.5f در آن قرار گیرد، خط به مدت 3 و نیم ثانیه رسم شده و سپس حذف میشود.
🔹🔷 مثال: رسم خط از یک آبجکت (که کد را به آن متصل کرده ایم) به سمت آبجکت دیگری که برای اسکریپت معرفی شده است به رنگ قرمز . /👇
var Obj : Transform;
......
......
Debug.DrawLine(transform.position,Obj.position,Color.red);
〰〰〰〰〰〰〰〰
🔹🔷کانال یونیتی لرنینگ 🔷🔹
🔸🔶@UnityLearning🔶🔸
⚫️ فرا رسیدن تاسوعا و عاشورای حسینی «سالروز شهادت حضرت امام حسین، آقا اباالفضل العباس و یاران با وفایشان» را به تمام محبین اهل بیت تسلیت عرض میکنیم.
▪️◾️◼️⬛️ ⬛️◼️◾️▪️
@UnityLearning
▪️◾️◼️⬛️ ⬛️◼️◾️▪️
@UnityLearning
Tooltip.png
49.5 KB
نمایش منوی Tooltip برای پارامتر های اسکریپت به عنوان توضیح بیشتر در مورد پارامتـــر
برای این کار می توانید از دستور Tooltip قبل از تعریف پارامتر (در ابتدای اسکریپت به عنوان پارامتر ورودی)
برای این کار می توانید از دستور Tooltip قبل از تعریف پارامتر (در ابتدای اسکریپت به عنوان پارامتر ورودی)
⭕ تعاریف Public و Private
🔹 متغیرها، کلاس ها و توابعی که تعریف می شوند می توانند از نوع Public یا Private باشند تا کنون از این دستورات زیاد استفاده کرده ایم اما توضیحات اندکی در مورد آنها بیان کردیم. بیشتر از این دستورات برای پارامترهایی که باید در Inspector نمایش داده شوند یا نشوند، استفاده کردیم اما کاربرد اصلی این دستورات کلی تر است.
🔸 پارامترها(متغیر، کلاس و تابع)یی که از نوع Public تعریف می شوند، در واقع عمومی اند یعنی از سایر بخش ها قابل دسترسی هستند. سایر بخش ها می توانند کلاس یا اسکریپت دیگری باشند. پارامــــترهای یک کلاس می تواند به پارامترهای Public کلاس دیگر دسترسی داشته باشند و اگر پارامترها Private باشند قابل دسترسی نیستند. (همانطور که بیان شد این دسترسی می تواند از کلاس یا اسکریپت دیگر باشد)
🔹🔷 به طور پیش فرض در #یونیتی متغیرهای سراسری که از نوع Public تعریف می شوند، به عنوان پارامتر ورودی آن اسکریپت در نظر گرفته می شوند و در پنجره Inspector قابل مقدار دهی هستند. در صورتی که می خواهیم یک متغیر از نوع Public باشد اما به عنوان پارامتر ورودی اسکرپیت نمایش داده نشود از دستور HideInInspector قبل از تعریف پارامتر استفاده می شود. اگر این عبارت قبل از تعریف متغیر سراسری Public قرار گیرد آن متغیر به عنوان پارامتر در Inspector نمایش داده نخواهد شد.
#سی_شارپ /👇
[HideInInspector]
public int p = 5;
#جاوا اسکریپت/👇
@HideInInspector
var p = 5;
(در هر دو دستور متغیر p به صورت سراسری public بوده ولی به عنوان پارامتر ورودی در یونیتی نمایش داده نخواهد شد)
⭕ کانال یونیتی لرنینگ⭕
💢 @UnityLearning💢
🔹 متغیرها، کلاس ها و توابعی که تعریف می شوند می توانند از نوع Public یا Private باشند تا کنون از این دستورات زیاد استفاده کرده ایم اما توضیحات اندکی در مورد آنها بیان کردیم. بیشتر از این دستورات برای پارامترهایی که باید در Inspector نمایش داده شوند یا نشوند، استفاده کردیم اما کاربرد اصلی این دستورات کلی تر است.
🔸 پارامترها(متغیر، کلاس و تابع)یی که از نوع Public تعریف می شوند، در واقع عمومی اند یعنی از سایر بخش ها قابل دسترسی هستند. سایر بخش ها می توانند کلاس یا اسکریپت دیگری باشند. پارامــــترهای یک کلاس می تواند به پارامترهای Public کلاس دیگر دسترسی داشته باشند و اگر پارامترها Private باشند قابل دسترسی نیستند. (همانطور که بیان شد این دسترسی می تواند از کلاس یا اسکریپت دیگر باشد)
🔹🔷 به طور پیش فرض در #یونیتی متغیرهای سراسری که از نوع Public تعریف می شوند، به عنوان پارامتر ورودی آن اسکریپت در نظر گرفته می شوند و در پنجره Inspector قابل مقدار دهی هستند. در صورتی که می خواهیم یک متغیر از نوع Public باشد اما به عنوان پارامتر ورودی اسکرپیت نمایش داده نشود از دستور HideInInspector قبل از تعریف پارامتر استفاده می شود. اگر این عبارت قبل از تعریف متغیر سراسری Public قرار گیرد آن متغیر به عنوان پارامتر در Inspector نمایش داده نخواهد شد.
#سی_شارپ /👇
[HideInInspector]
public int p = 5;
#جاوا اسکریپت/👇
@HideInInspector
var p = 5;
(در هر دو دستور متغیر p به صورت سراسری public بوده ولی به عنوان پارامتر ورودی در یونیتی نمایش داده نخواهد شد)
⭕ کانال یونیتی لرنینگ⭕
💢 @UnityLearning💢
⚫️ عاشورای حسینی ⚫️
سالروز شهادت امام حسین و یاران با وفایش در دشت کربلا را گرامی می داریم و همه یک صدا میگوییم
▪️◾️◼️ ⬛️یا حُسَیْن⬛️◼️◾️▪️
▪️◾️◼️⬛️یا عَبّاس⬛️◼️◾️▪️
▪️◾️◼️⬛️یا زِیْنَب⬛️◼️◾️▪️
🏴 السلام علی الحسین و علی علی بن الحسین و علی اولاد الحسین و علی اصحاب الحسین
از همه شما عزیزان، در عزاداریِ خالصانه تانْ برای سَرْوَر و سالارِ شَهیدان التماس دعا داریم.
به ما بپیوندید👇
@UnityLearning
سالروز شهادت امام حسین و یاران با وفایش در دشت کربلا را گرامی می داریم و همه یک صدا میگوییم
▪️◾️◼️ ⬛️یا حُسَیْن⬛️◼️◾️▪️
▪️◾️◼️⬛️یا عَبّاس⬛️◼️◾️▪️
▪️◾️◼️⬛️یا زِیْنَب⬛️◼️◾️▪️
🏴 السلام علی الحسین و علی علی بن الحسین و علی اولاد الحسین و علی اصحاب الحسین
از همه شما عزیزان، در عزاداریِ خالصانه تانْ برای سَرْوَر و سالارِ شَهیدان التماس دعا داریم.
به ما بپیوندید👇
@UnityLearning
⭕️ کلاس ها در یونیتی
🔸 همانطور که می دانید در برنامه نویسی کلاس به مجموعه ای (شامل اشیای خاص و ویژگی های آنها) گفته میشود که هر کدام می توانند رفتار خاصی از خود نمایش دهند. مثلا زمانی که یک شی از کلاس Integer تعریف میکنیم، این شی (متغیر) می تواند رفتار مربوط به اعداد صحیح را از خود نشان دهد و اعمال روی آنها نیز توسط آن انجام میشود (➕➖➗✖️)
🔹 برای سایر کلاس ها نیز به همین شکل است زمانی که یک شی از آنها تعریف میکنیم آن شی می تواند معرف و انجام دهنده اعمال آن شی باشد. اما گاهی این محدوده بزرگ تر از یک شی خاص مثل یک متغیر است. گاهی لازم است یک کلاس از کلاس دیگر ارث ببرد یعنی تمام ویژگی های کلاس قبل را داشته باشد و یک سری ویژگی هم خاص خود داشته باشد. معمولا ً در اینجا کلاس اتومبیل را مثال می زنند که می تواند شامل ویژگی هایی مثل چهار چرخ، شتاب، سرعت حرکت و... باشد و کلاس مرسدس که از کلاس اتومبیل ارث می برد، تمام ویژگی های آن را (یعنی چهار چرخ و ...) دارد اما لازم است یک سری ویژگی خاص خود داشته باشد که باید برای آن تعریف شود. (نحوه تعریف کلاس هایی که از کلاس دیگری ارث می برند، قبلا در کانال بیان شده است، جاوا و سی شارپ)
👈 تعریف کلاس در یونیتی بسیار کاربردی و مهم است، برخی برنامه نویسان حرفه ای دقیقا آنچه برای کلاس ارث برنده مثال زدیم را در بازی خود اجرا میکنند، یعنی دقیقا کلاسی تعریف میکنند برای اتومبیل شامل پارامتر ها و توابع حرکت و... ، و به راحتی برای ساخت بازی خود از آن برای استفاده روی ماشین های مختلف استفاده میکنند.
▫️ در یونیتی اسکریپت ها برای انجام کارهای خاص باید از کلاس های بزرگ تری ارث ببرند. مثلا اگر قرار است کلاس ما رفتار یک آبجکت را توصیف کند باید از کلاس MonoBehaviour ارث ببرد، در واقع این کلاس همه آنچه برای رفتار آبجکت ها لازم است را در خود تعریف کرده و با تعریف یک کلاس جدید از نوع آن به همه آنها دسترسی خواهیم داشت.
⚪️ یا کلاس NetworkManager که شرایط و پارامتر های لازم برای مدیریت شبکه را در یونیتی فراهم کرده است.
☑️ به طور مثال کلاس NetworkManager تابعی به نام OnServerConnect دارد که زمانی اجرا میشود که یک کلاینت به سرور جاری متصل شود. مشابه تابع Update از کلاس Mono Behavior که در هر فریم از زمان به صورت دایمی اجرا میشود.
✅ بنابراین در یونیتی کلاس های بزرگی وجود دارد که در آنها پارامتر هایی برای انجام رویداد های مربوط به بازی به صورت از پیش تعریف شده قرار دارند و می توان با تعریف یک کلاس جدید از آنها و ویژگی های تعریف شده در آنها ارث برد.
🔘 دو مثال از تعریف کلاس از نوع NetworkManager و تعریف تابع OnServerConnect به زبان #جاوا و #سی_شارپ در پست بعدی قرار خواهد گرفت. (برای آموزش نحوه تعریف کلاس)
〰〰〰〰〰〰〰〰〰
⭕️کانال یونیتی لرنینگ⭕️
💢@UnityLearning💢
🔸 همانطور که می دانید در برنامه نویسی کلاس به مجموعه ای (شامل اشیای خاص و ویژگی های آنها) گفته میشود که هر کدام می توانند رفتار خاصی از خود نمایش دهند. مثلا زمانی که یک شی از کلاس Integer تعریف میکنیم، این شی (متغیر) می تواند رفتار مربوط به اعداد صحیح را از خود نشان دهد و اعمال روی آنها نیز توسط آن انجام میشود (➕➖➗✖️)
🔹 برای سایر کلاس ها نیز به همین شکل است زمانی که یک شی از آنها تعریف میکنیم آن شی می تواند معرف و انجام دهنده اعمال آن شی باشد. اما گاهی این محدوده بزرگ تر از یک شی خاص مثل یک متغیر است. گاهی لازم است یک کلاس از کلاس دیگر ارث ببرد یعنی تمام ویژگی های کلاس قبل را داشته باشد و یک سری ویژگی هم خاص خود داشته باشد. معمولا ً در اینجا کلاس اتومبیل را مثال می زنند که می تواند شامل ویژگی هایی مثل چهار چرخ، شتاب، سرعت حرکت و... باشد و کلاس مرسدس که از کلاس اتومبیل ارث می برد، تمام ویژگی های آن را (یعنی چهار چرخ و ...) دارد اما لازم است یک سری ویژگی خاص خود داشته باشد که باید برای آن تعریف شود. (نحوه تعریف کلاس هایی که از کلاس دیگری ارث می برند، قبلا در کانال بیان شده است، جاوا و سی شارپ)
👈 تعریف کلاس در یونیتی بسیار کاربردی و مهم است، برخی برنامه نویسان حرفه ای دقیقا آنچه برای کلاس ارث برنده مثال زدیم را در بازی خود اجرا میکنند، یعنی دقیقا کلاسی تعریف میکنند برای اتومبیل شامل پارامتر ها و توابع حرکت و... ، و به راحتی برای ساخت بازی خود از آن برای استفاده روی ماشین های مختلف استفاده میکنند.
▫️ در یونیتی اسکریپت ها برای انجام کارهای خاص باید از کلاس های بزرگ تری ارث ببرند. مثلا اگر قرار است کلاس ما رفتار یک آبجکت را توصیف کند باید از کلاس MonoBehaviour ارث ببرد، در واقع این کلاس همه آنچه برای رفتار آبجکت ها لازم است را در خود تعریف کرده و با تعریف یک کلاس جدید از نوع آن به همه آنها دسترسی خواهیم داشت.
⚪️ یا کلاس NetworkManager که شرایط و پارامتر های لازم برای مدیریت شبکه را در یونیتی فراهم کرده است.
☑️ به طور مثال کلاس NetworkManager تابعی به نام OnServerConnect دارد که زمانی اجرا میشود که یک کلاینت به سرور جاری متصل شود. مشابه تابع Update از کلاس Mono Behavior که در هر فریم از زمان به صورت دایمی اجرا میشود.
✅ بنابراین در یونیتی کلاس های بزرگی وجود دارد که در آنها پارامتر هایی برای انجام رویداد های مربوط به بازی به صورت از پیش تعریف شده قرار دارند و می توان با تعریف یک کلاس جدید از آنها و ویژگی های تعریف شده در آنها ارث برد.
🔘 دو مثال از تعریف کلاس از نوع NetworkManager و تعریف تابع OnServerConnect به زبان #جاوا و #سی_شارپ در پست بعدی قرار خواهد گرفت. (برای آموزش نحوه تعریف کلاس)
〰〰〰〰〰〰〰〰〰
⭕️کانال یونیتی لرنینگ⭕️
💢@UnityLearning💢
NetworkManager_Class.txt
961 B
دو مثال برای آموزش ارث بری کلاس ها از کلاس NetworkManager و استفاده از تابع OnServerConnect
#سی_شارپ و #جاوا اسکریپت
@UnityLearning
#سی_شارپ و #جاوا اسکریپت
@UnityLearning