Start Unity
374 subscribers
7 photos
1 video
11 links
هیچ پروسه ای سخت نیست به شرطی که شروعش کنی..

🎮 #یونیتی
👨‍💻 #برنامه_نویسی
📚 #آموزش
🧩 #آزمون

گروه: @StartUnityGP

🫂 @AmirHDeveloper @HaminGames
Download Telegram
🎯 آشنایی با Platform-Specific Code توی یونیتی

خیلی وقتا توی توسعه‌ی بازی‌هات ممکنه بخوای برای هر پلتفرم یه رفتار خاص بنویسی. مثلا یه کدی فقط روی سرور اجرا شه، یا یه بخش فقط برای WebGL فعال باشه. اینجاست که Platform-Specific Code به دادمون می‌رسه!

یونیتی یه سری پیش‌پردازنده (Preprocessor Directive) داره که باهاشون می‌تونی دقیقا مشخص کنی کد برای چه پلتفرمی اجرا بشه.

🔧 مثال کاربردی:

void Start()
{
#if UNITY_SERVER
Debug.Log("این کد فقط در سرور اجرا می‌شود.");
StartServer();

#elif UNITY_WEBGL
Debug.Log("این کد فقط در WebGL اجرا می‌شود.");
ConnectToServer();

#elif UNITY_ANDROID
Debug.Log("این کد فقط در اندروید اجرا می‌شود.");

#else
Debug.Log("این کد در سایر پلتفرم‌ها اجرا می‌شود.");
#endif
}


🔨 حالت خاص - کدهای مخصوص ادیتور:

گاهی وقتا یه سری کد نوشتی که فقط توی محیط ادیتور لازمه، مثلا تول ساختی یا با آبجکت‌ها توی Scene ور می‌ری. این کدها اگه توی خروجی برن، نه‌تنها به درد نمی‌خورن، بلکه باعث خطای کامپایل یا خروجی نگرفتن هم می‌شن. برای جلوگیری از این مورد از #if UNITY_EDITOR استفاده کن:

#if UNITY_EDITOR
using UnityEngine;

public class EditorOnlyExample : MonoBehaviour
{
void OnGUI()
{
// فقط در محیط ادیتور اجرا میشه، توی خروجی نمی‌ره
if (GUILayout.Button("Test"))
{
Debug.Log("این فقط مخصوص ادیتوره");
}
}
}
#endif


اینجوری هم پروژه‌ت تمیز می‌مونه، هم مطمئن می‌شی هیچ کد ادیتوری وارد خروجی نهایی نمی‌شه.

---

💡 کاربردهای مهم:
- جدا کردن کدهای مربوط به سرور و کلاینت
- مدیریت ورودی‌ها برای موبایل یا پی‌سی
- استفاده از API خاص هر پلتفرم
- جلوگیری از ورود کدهای ادیتور به خروجی بازی
- بهینه‌سازی عملکرد برای هر پلتفرم


📌 لیست پرکاربردترین دستورهای Platform-Specific در یونیتی:

- UNITY_EDITOR
فقط موقعی که پروژه توی محیط ادیتور یونیتی اجرا می‌شه فعاله (نه تو خروجی نهایی).

- UNITY_ANDROID
مخصوص زمانی که بازی روی دستگاه‌های اندروید اجرا می‌شه.

- UNITY_IOS
مربوط به اجرای بازی روی آیفون یا آیپد (iOS).

- UNITY_WEBGL
وقتی بازی روی مرورگر (WebGL) اجرا می‌شه، این شرط فعاله.

- UNITY_STANDALONE_WIN
مخصوص خروجی‌های ویندوز (PC) هست؛ چه بازی رو مستقیم از فایل EXE اجرا کنی چه از ادیتور.

- UNITY_SERVER
زمانی فعاله که خروجی با گزینه‌ی Server Build گرفته شده باشه (مثلاً برای اجرای بازی سمت سرور).

- DEVELOPMENT_BUILD
فقط تو بیلدهای توسعه‌ای فعال می‌شه؛ موقعی که تیک Development Build رو توی تنظیمات خروجی بزنی (برای دیباگ و لاگ‌گیری بیشتر).

🧠 نکته مهم: این شرط‌ها فقط موقع کامپایل بررسی می‌شن. پس توی Update یا منطق‌های زمان اجرا ازشون استفاده نمی‌شه. برای اون موارد باید از Application.platform استفاده کنی.

---

#یونیتی #برنامه_نویسی
#PlatformSpecificCode #PreprocessorDirectives #CrossPlatform
👍8👾21