🎯 آشنایی با Platform-Specific Code توی یونیتی
خیلی وقتا توی توسعهی بازیهات ممکنه بخوای برای هر پلتفرم یه رفتار خاص بنویسی. مثلا یه کدی فقط روی سرور اجرا شه، یا یه بخش فقط برای WebGL فعال باشه. اینجاست که Platform-Specific Code به دادمون میرسه!
یونیتی یه سری پیشپردازنده (Preprocessor Directive) داره که باهاشون میتونی دقیقا مشخص کنی کد برای چه پلتفرمی اجرا بشه.
🔧 مثال کاربردی:
🔨 حالت خاص - کدهای مخصوص ادیتور:
گاهی وقتا یه سری کد نوشتی که فقط توی محیط ادیتور لازمه، مثلا تول ساختی یا با آبجکتها توی Scene ور میری. این کدها اگه توی خروجی برن، نهتنها به درد نمیخورن، بلکه باعث خطای کامپایل یا خروجی نگرفتن هم میشن. برای جلوگیری از این مورد از
✅ اینجوری هم پروژهت تمیز میمونه، هم مطمئن میشی هیچ کد ادیتوری وارد خروجی نهایی نمیشه.
---
💡 کاربردهای مهم:
- جدا کردن کدهای مربوط به سرور و کلاینت
- مدیریت ورودیها برای موبایل یا پیسی
- استفاده از API خاص هر پلتفرم
- جلوگیری از ورود کدهای ادیتور به خروجی بازی
- بهینهسازی عملکرد برای هر پلتفرم
📌 لیست پرکاربردترین دستورهای Platform-Specific در یونیتی:
-
فقط موقعی که پروژه توی محیط ادیتور یونیتی اجرا میشه فعاله (نه تو خروجی نهایی).
-
مخصوص زمانی که بازی روی دستگاههای اندروید اجرا میشه.
-
مربوط به اجرای بازی روی آیفون یا آیپد (iOS).
-
وقتی بازی روی مرورگر (WebGL) اجرا میشه، این شرط فعاله.
-
مخصوص خروجیهای ویندوز (PC) هست؛ چه بازی رو مستقیم از فایل EXE اجرا کنی چه از ادیتور.
-
زمانی فعاله که خروجی با گزینهی Server Build گرفته شده باشه (مثلاً برای اجرای بازی سمت سرور).
-
فقط تو بیلدهای توسعهای فعال میشه؛ موقعی که تیک Development Build رو توی تنظیمات خروجی بزنی (برای دیباگ و لاگگیری بیشتر).
🧠 نکته مهم: این شرطها فقط موقع کامپایل بررسی میشن. پس توی
---
#یونیتی #برنامه_نویسی
#PlatformSpecificCode #PreprocessorDirectives #CrossPlatform
خیلی وقتا توی توسعهی بازیهات ممکنه بخوای برای هر پلتفرم یه رفتار خاص بنویسی. مثلا یه کدی فقط روی سرور اجرا شه، یا یه بخش فقط برای 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👾2⚡1