Unity یک موتور بازی سازگار چند ساختمانی برای ساخت برنامههای 2D و 3D است که از ساخت برای پلتفرمهای موبایل، رومیزی و کنسول پشتیبانی میکند. از آن هم برای توسعه بازیها و هم برای برنامههای غیر بازی در معماری، خودروسازی و خرد فروش استفاده میشود. به گزارش Unity Technologies, 2025، بیش از 70% بازیهای موبایل در صد برتر App Store در Unity ساخته شدهاند. C# — زبان برنامهنویسی اصلی موتور است که در آن منطق بازی، کامپوننتها و اسکریپتهای ویرایشگر نوشته میشوند.
نکات کلیدی
Unity — محیط توسعه بازیها و برنامههای زمان واقعی است که توسط Unity Technologies در سال 2005 ساخته شد. این موتور از 27 پلتفرم از جمله iOS، Android، Windows، macOS، PlayStation، Xbox، Nintendo Switch و WebGL پشتیبانی میکند. بر اساس گزارش Unity Gaming Report (2024)، در سال 2023 ماهانه بیش از 3 میلیارد بازی موبایل در Unity اجرا شده است.
ویژگی اصلی Unity معماری کامپوننت محور است. هر شیء در سحنه یک کانتینر خالی (GameObject) است که کامپوننتهایی به آن اضافه میشوند که رفتارش را تعیین میکنند: رندرینگ، فیزیک، صدا، انیمیشن و منطق کاربر. این Unity را از موتورهای سلسله مراتبی مانند Unreal Engine متمایز میکند که در آنها رفتار از طریق وراثت کلاس تعیین میشود.
به گزارش Statista (2025)، Unity 48% از بازار موتورهای بازی برای بازیهای موبایل را دارد و از Unreal Engine (15%) و راهحلهای خودساخته (37%) پیشی است. این موتور توسط استودیوهای indie به خاطر سطح ورود پایین و توسط ناشران بزرگ به خاطر انعطافپذیری pipeline ساخت برای پلتفرمهای مختلف انتخاب میشود.
معماری Unity بر چهار مفهوم بنیادین استوار است: سحنهها، GameObjects، کامپوننتها و پرفابها. درک این سلسله مراتب برای کار مؤثر با موتور ضروری است.
سحنه (Scene) — کانتینری است که همه اشیاء سطح بازی یا وضعیت برنامه را در بر میگیرد. هر سحنه مجموعهای از GameObjects، منابع نور، دوربینها و منابع صوتی خود را دارد. انتقال بین سحنهها از طریق SceneManager.LoadScene() انجام میشود.
GameObject بلوک ساختمانی اساسی Unity است. آن نمایش تصویری یا رفتار پیش فرضی ندارد — این یک گره خالی در سلسله مراتب سحنه است. همه رفتار و ظاهر از طریق کامپوننتها اضافه میشوند. به عنوان مثال، برای نمایان شدن GameObject، MeshRenderer به آن اضافه میشود؛ برای تابعیت از فیزیک — Rigidbody.
MonoBehaviour — کلاس پایه برای تمام اسکریپتهای سفارشی در Unity است. آن چرخه زندگی را فراهم میکند: Awake (هنگام بارگیری شیء فراخوانده میشود)، Start (قبل از قاب اول)، Update (هر قاب)، FixedUpdate (هر گام فیزیکی) و OnDestroy (هنگام نابودی).
هر کامپوننت میتواند با سایر کامپوننتهای همان GameObject از طریق GetComponent<T>() ارتباط برقرار کند. این امکان ایجاد سیستمهای ماژولی را فراهم میکند: به عنوان مثال، کامپوننت Health میتواند از کامپوننت Movement مستقل باشد، اما هر دو میتوانند از طریق UnityEvent به رویدادها واکنش نشان دهند.
پرفاب (Prefab) — الگوی GameObject است که در پروژه به عنوان یک asset ذخیره میشود. تغییر پرفاب خودکار به همه نسخههای آن در سحنهها اعمال میشود. این مکانیسم مرکزی استفاده مجدد در Unity است که ایتراسیونها را سریعتر کرده و تعداد خطاها را کاهش میدهد.
پرفابها از تودریتونگی (Nested Prefabs) پشتیبانی میکنند: یک پرفاب میتواند شامل پرفابهای دیگری باشد و یک سلسله مراتب تشکیل دهد. به عنوان مثال، پرفاب خودرو میتواند شامل پرفابهای چرخ، موتور و بدنه باشد، هر کدام با کامپوننتها و تنظیمات خود.
یک کامپوننت حرکت پایه شخصیت در C# را در نظر بگیرید. این اسکریپت شیء را نسبت به چرخش فعلیش به جلو میبرد و ورودی کاربر را پردازش میکند.
using UnityEngine;
public class PlayerMovement : MonoBehaviour
{
public float speed = 5f;
void Update()
{
float move = Input.GetAxis("Vertical");
Vector3 direction = transform.forward * move;
CharacterController controller = GetComponent<CharacterController>();
controller.SimpleMove(direction * speed);
}
}
روش Update() هر قاب فراخوانده میشود. Input.GetAxis کنترل عمودی را میخواند، SimpleMove حرکت را با توجه به فیزیک اعمال میکند. CharacterController — یک کامپوننت داخلی Unity است که برخوردها را بدون نیاز به نوشتن فیزیک تصادم مدیریت میکند.
مثال اسکریپت برای مدیریت برخورد و وارد کردن خسارت:
using UnityEngine;
public class DamageHandler : MonoBehaviour
{
public int health = 100;
void OnCollisionEnter(Collision collision)
{
if (collision.gameObject.CompareTag("Enemy"))
{
health -= 10;
if (health <= 0)
{
Destroy(gameObject);
}
}
}
}
روش OnCollisionEnter توسط موتور فیزیک هنگام برخورد GameObject با شیئی دیگر فراخوانده میشود. مقایسه با برچسب (CompareTag) مشخص میکند برخورد با چه شیئی رخ داده است. این رویکرد امکان استفاده مجدد از کامپوننت DamageHandler را برای بازیکن، دشمنان و اشیاء تخریبپذیر بدون تغییر کد فراهم میکند.
Unity ابزارهای تخصصی برای بهینهسازی بازیها برای دستگاههای موبایل با منابع محدود ارائه میدهد. جهتهای کلیدی بهینهسازی شامل مدیریت حافظه، کاهش تعداد draw calls و سازگاری با وضوحهای مختلف صفحه نمایش است.
برای پلتفرمهای موبایل، Unity Asset Bundles را ارائه میدهد — سیستمی برای بستهبندی محتوا که منابع را بر اساس درخواست بارگیری میکند و اندازه اولیه برنامه را کاهش میدهد. این به ویژه برای بازیهایی با تعداد زیاد مرحله یا شخصیت مهم است که بارگیری همه استها به دلیل محدودیتهای فروشگاههای برنامه امکانپذیر نیست.
Profiler Unity امکان تحلیل استفاده از CPU، GPU و حافظه در دستگاه واقعی از طریق اتصال ADB (Android) یا USB (iOS) را فراهم میکند. بر اساس Unity Documentation (2025)، بهینهسازی تعداد draw calls به 100–300 در دستگاههای موبایل در دستگاههای طبقه متوسط 60 FPS پایدار را تامین میکند.
برای بازیهای موبایل، Unity از سیستم Input System استفاده میکند که کنترل لمسی، شیب سنج و ژیروسکوپ را زیر یک API واحد ابستراکت میکند. اتصالهای ویژتوال، کشیدنها و لمسها از طریق Input Action Assets بدون نیاز به نوشتن کد پردازش لمسه پیکربندی میشوند.
سیستم UI Unity (uGUI) از Canvas Scaler برای تطبیق خودکار رابط با نسبتهای مختلف صفحه پشتیبانی میکند. کامپوننت Canvas Scaler با حالت Scale With Screen Size تضمین میکند که دکمهها در پلنشتها و گوشیهای هوشمند از لبه صفحه خارج نشوند.
ساخت بازیهای موبایل در Unity از طریق پنجره Build Settings انجام میشود. برای Android به Android SDK و NDK نیاز است، Unity یک پروژه Gradle تولید میکند که به APK یا AAB تبدیل میشود. برای iOS به Xcode نیاز است — Unity یک پروژه Xcode با پوشش Objective-C/Swift تولید میکند که سپس توسط Apple کامپیل میشود.
IL2CPP — گزینه کامپیلاسیونی است که کد C# را به C++ و سپس به کد ARM دومن تبدیل میکند. بر اساس Unity Benchmark (2024)، IL2CPP عملکرد را در iOS و Android به میزان 15–25% در مقایسه با Mono افزایش میدهد، اما زمان ساخت و اندازه فایل بینری را افزایش میدهد.
Unity با Unreal Engine و Godot به عنوان اصلیترین جایگزینهای در بازار موتورهای بازی مقایسه میشود. انتخاب به نوع پروژه، مهارت تیم و پلتفرمهای هدف بستگی دارد.
| معیار | Unity | Unreal Engine 5 | Godot 4 |
|---|---|---|---|
| زبان | C# | C++ / Blueprints | GDScript / C# |
| گرافیک | Built-in / URP / HDRP | Nanite + Lumen | رندرر خود |
| بهینهسازی موبایل | عالی (70% بازی موبایل) | خوب (انتقال AAA) | خوب (موتور سبک) |
| سطح ورود | پایین | بالا | پایین |
| لایسانس | Personal / Pro / Enterprise | 5% حق امتیاز (تا $1میلیون) | MIT (رایگان) |
برای بازیهای موبایل، Unity به دلیل سیستم رندرینگ انعطافپذیر (URP — Universal Render Pipeline) که گرافیک را برای GPUهای موبایل با توان محاسباتی محدود بهینه میکند، استاندارد صنعت باقی میماند. URP خودکار تعداد گذرهای رندرینگ را کاهش داده و شیدرها را برای کاهش بار GPU ترکیب میکند.
Unreal Engine 5 کیفیت گرافیک بهتری (Nanite برای هندسه، Lumen برای روشنایی) ارائه میدهد، اما به سخت افزار قویتر و تجربه بیشتر تیم نیاز دارد. Godot با کد منبع باز و اندازه کوچک موتور جذاب است، اما assetهای آماده کمتر و بازار متخصصان کوچکتری دارد.
Unity در خارج از بازیسازی نیز به طور فعال در معماری، صنعت خودرو، خرد فروش و آموزش استفاده میشود. تصویرسازی زمان واقعی (RT3D) امکان ایجاد ارائههای 3D تعاملی، شبیهسازها و پیکربندیهای محصول را فراهم میکند.
در صنعت خودرو، Unity برای ساخت دوقلوهای دیجیتال خودروها و سیستمهای HMI (رابط انسان و ماشین) استفاده میشود. Mercedes-Benz و BMW از Unity برای پروتوتیپ پانلهای ابزار و سیستمهای چندرسانه پیش از ساخت پروتوتیپ فیزیکی استفاده میکنند.
در خرد فروش، Unity برای پیکربندیهای محصول استفاده میشود: IKEA (چیدمان مبل مجازی)، Nike (سفارشی سازی کفش) و Audi (پیکربندی خودرو) — همه این پروژهها بر پایه Unity ساخته شدهاند. کاربر میتواند در زمان واقعی رنگ، مواد و تجهیزات محصول را تغییر دهد و نتیجه را در 3D مشاهده کند.
برای پروژههای غیر بازی، Unity ابزارهای ویژهای ارائه میدهد: AR Foundation (برای ARKit و ARCore)، Pixyz Plugin (برای واردات مدلهای CAD) و Unity Reflect (برای همگامسازی با مدلهای BIM Revit). شرکت به طور فعال در حال توسعه حوزه Unity Industry است که خدمات ابری برای مشتریان شرکتی را شامل میشود.
سؤالات متداول
Unity به دلیل مستندات گسترده، دورههای رایگان Unity Learn و جامعه بزرگ، یکی از دسترسترین موتورهای بازی برای مبتدیان محسوب میشود. برای شروع، کافی است اصول C# را بدانید و اصول معماری کامپوننتی را درک کنید. اکثر مبتدیان اولین بازی خود را طی 2–3 ماه ایجاد میکنند.
بله، Unity یک pipeline کامل 2D دارد: Sprite Renderer، 2D Physics (Box2D)، Tilemap برای ساخت مرحله از کاشیها و 2D Animation برای انیمیشن اسکلتی سپرایتها. بسیاری از بازیهای معروف 2D از جمله Hollow Knight و Cuphead در Unity ساخته شدهاند. ابزارهای 2D بدون نیاز به نصب پلاگین در موتور جایگزین شدهاند.
Unity Personal با درآمد سالانه تا $200 هزار رایگان است. Unity Pro سالانه $2 040 برای هر توسعهدهنده هزینه دارد و شامل ابزارهای پیشرفته پروفایلینگ، ساخت ابری و پشتیبانی اولویت داری است. برای توسعه موبایل، فناوری Personal برای اکثر پروژههای indie کافی است.
Cocos2d — یک چارچوب 2D با پشتیبانی C++، Lua و JavaScript است که بر بازیهای ساده 2D متمرکز است. Unity یک موتور کامل 3D/2D با ویرایشگر، ابزارهای تصویری و پشتیبانی از 27 پلتفرم است. Cocos2d در آسیا برای بازیهای هایپرکاژوال محبوب است، Unity یک انتخاب جهانی برای هر ژانری است.
بله، Unity پشتیبانی داخلی AR و VR را از طریق AR Foundation (ARKit + ARCore)، XR Interaction Toolkit و OpenXR دارد. پروژههای VR مانند Half-Life: Alyx (نمایش فنی) و VRChat در Unity ساخته شدهاند. این موتور از همه هدستهای اصلی VR پشتیبانی میکند: Meta Quest، HTC Vive، Valve Index و PlayStation VR.
نتیجه
ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد
IT Sectr از سال 2017 برنامههای iOS و Android را برای استارتاپها و کسبوکارها ایجاد میکند. ما به شما مشاوره میدهیم و بهترین راهحل را پیشنهاد خواهیم کرد.
همچنین بخوانید