Unity: اصول، معماری و توسعه در C#

نویسنده: IT Sectr منتشر شده: 2026-05-02 زمان مطالعه: 9 دقیقه

Unity یک موتور بازی سازگار چند ساختمانی برای ساخت برنامه‌های 2D و 3D است که از ساخت برای پلتفرم‌های موبایل، رومیزی و کنسول پشتیبانی می‌کند. از آن هم برای توسعه بازی‌ها و هم برای برنامه‌های غیر بازی در معماری، خودروسازی و خرد فروش استفاده می‌شود. به گزارش Unity Technologies, 2025، بیش از 70% بازی‌های موبایل در صد برتر App Store در Unity ساخته شده‌اند. C# — زبان برنامه‌نویسی اصلی موتور است که در آن منطق بازی، کامپوننت‌ها و اسکریپت‌های ویرایشگر نوشته می‌شوند.

نکات کلیدی

  • Unity — موتور بازی سازگار چند ساختمانی با پشتیبانی 2D، 3D، AR و VR
  • C# — زبان اصلی برای نوشتن منطق بازی، کامپوننت‌ها و اسکریپت‌های ویرایشگر
  • معماری کامپوننتی — رفتار اشیاء از کامپوننت‌ها ساخته می‌شود (MonoBehaviour)
  • Asset Store — بازارچه با مدل‌های آماده، بافت‌ها، صداها و پلاگین‌ها
  • ساخت موبایل — بیلدهای iOS و Android با بهینه‌سازی برای معماری ARM

Unity چیست؟

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: سحنه‌ها، اشیاء و کامپوننت‌ها

معماری Unity بر چهار مفهوم بنیادین استوار است: سحنه‌ها، GameObjects، کامپوننت‌ها و پرفاب‌ها. درک این سلسله مراتب برای کار مؤثر با موتور ضروری است.

سحنه‌ها و GameObjects

سحنه (Scene) — کانتینری است که همه اشیاء سطح بازی یا وضعیت برنامه را در بر می‌گیرد. هر سحنه مجموعه‌ای از GameObjects، منابع نور، دوربین‌ها و منابع صوتی خود را دارد. انتقال بین سحنه‌ها از طریق SceneManager.LoadScene() انجام می‌شود.

GameObject بلوک ساختمانی اساسی Unity است. آن نمایش تصویری یا رفتار پیش فرضی ندارد — این یک گره خالی در سلسله مراتب سحنه است. همه رفتار و ظاهر از طریق کامپوننت‌ها اضافه می‌شوند. به عنوان مثال، برای نمایان شدن GameObject، MeshRenderer به آن اضافه می‌شود؛ برای تابعیت از فیزیک — Rigidbody.

کامپوننت‌های MonoBehaviour

MonoBehaviour — کلاس پایه برای تمام اسکریپت‌های سفارشی در Unity است. آن چرخه زندگی را فراهم می‌کند: Awake (هنگام بارگیری شیء فراخوانده می‌شود)، Start (قبل از قاب اول)، Update (هر قاب)، FixedUpdate (هر گام فیزیکی) و OnDestroy (هنگام نابودی).

هر کامپوننت می‌تواند با سایر کامپوننت‌های همان GameObject از طریق GetComponent<T>() ارتباط برقرار کند. این امکان ایجاد سیستم‌های ماژولی را فراهم می‌کند: به عنوان مثال، کامپوننت Health می‌تواند از کامپوننت Movement مستقل باشد، اما هر دو می‌توانند از طریق UnityEvent به رویدادها واکنش نشان دهند.

پرفاب‌ها

پرفاب (Prefab) — الگوی GameObject است که در پروژه به عنوان یک asset ذخیره می‌شود. تغییر پرفاب خودکار به همه نسخه‌های آن در سحنه‌ها اعمال می‌شود. این مکانیسم مرکزی استفاده مجدد در Unity است که ایتراسیون‌ها را سریع‌تر کرده و تعداد خطاها را کاهش می‌دهد.

پرفاب‌ها از تودریتونگی (Nested Prefabs) پشتیبانی می‌کنند: یک پرفاب می‌تواند شامل پرفاب‌های دیگری باشد و یک سلسله مراتب تشکیل دهد. به عنوان مثال، پرفاب خودرو می‌تواند شامل پرفاب‌های چرخ، موتور و بدنه باشد، هر کدام با کامپوننت‌ها و تنظیمات خود.

مصالی از کد C# در Unity

یک کامپوننت حرکت پایه شخصیت در C# را در نظر بگیرید. این اسکریپت شیء را نسبت به چرخش فعلیش به جلو می‌برد و ورودی کاربر را پردازش می‌کند.

csharp
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 است که برخوردها را بدون نیاز به نوشتن فیزیک تصادم مدیریت می‌کند.

مثال اسکریپت برای مدیریت برخورد و وارد کردن خسارت:

csharp
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

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 تضمین می‌کند که دکمه‌ها در پلنشت‌ها و گوشی‌های هوشمند از لبه صفحه خارج نشوند.

ساخت برای iOS و Android

ساخت بازی‌های موبایل در 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 با سایر موتورها

Unity با Unreal Engine و Godot به عنوان اصلی‌ترین جایگزین‌های در بازار موتورهای بازی مقایسه می‌شود. انتخاب به نوع پروژه، مهارت تیم و پلتفرم‌های هدف بستگی دارد.

معیارUnityUnreal Engine 5Godot 4
زبانC#C++ / BlueprintsGDScript / C#
گرافیکBuilt-in / URP / HDRPNanite + Lumenرندرر خود
بهینه‌سازی موبایلعالی (70% بازی موبایل)خوب (انتقال AAA)خوب (موتور سبک)
سطح ورودپایینبالاپایین
لایسانسPersonal / Pro / Enterprise5% حق امتیاز (تا $1میلیون)MIT (رایگان)

برای بازی‌های موبایل، Unity به دلیل سیستم رندرینگ انعطاف‌پذیر (URP — Universal Render Pipeline) که گرافیک را برای GPUهای موبایل با توان محاسباتی محدود بهینه می‌کند، استاندارد صنعت باقی می‌ماند. URP خودکار تعداد گذرهای رندرینگ را کاهش داده و شیدرها را برای کاهش بار GPU ترکیب می‌کند.

Unreal Engine 5 کیفیت گرافیک بهتری (Nanite برای هندسه، Lumen برای روشنایی) ارائه می‌دهد، اما به سخت افزار قوی‌تر و تجربه بیشتر تیم نیاز دارد. Godot با کد منبع باز و اندازه کوچک موتور جذاب است، اما assetهای آماده کمتر و بازار متخصصان کوچک‌تری دارد.

Unity برای برنامه‌های غیر بازی

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 به دلیل مستندات گسترده، دوره‌های رایگان Unity Learn و جامعه بزرگ، یکی از دسترس‌ترین موتورهای بازی برای مبتدیان محسوب می‌شود. برای شروع، کافی است اصول C# را بدانید و اصول معماری کامپوننتی را درک کنید. اکثر مبتدیان اولین بازی خود را طی 2–3 ماه ایجاد می‌کنند.

آیا می‌توان بازی‌های 2D در Unity ساخت؟

بله، Unity یک pipeline کامل 2D دارد: Sprite Renderer، 2D Physics (Box2D)، Tilemap برای ساخت مرحله از کاشی‌ها و 2D Animation برای انیمیشن اسکلتی سپرایت‌ها. بسیاری از بازی‌های معروف 2D از جمله Hollow Knight و Cuphead در Unity ساخته شده‌اند. ابزارهای 2D بدون نیاز به نصب پلاگین در موتور جایگزین شده‌اند.

Unity برای توسعه موبایل چقدر هزینه دارد؟

Unity Personal با درآمد سالانه تا $200 هزار رایگان است. Unity Pro سالانه $2 040 برای هر توسعه‌دهنده هزینه دارد و شامل ابزارهای پیشرفته پروفایلینگ، ساخت ابری و پشتیبانی اولویت داری است. برای توسعه موبایل، فناوری Personal برای اکثر پروژه‌های indie کافی است.

Unity چه تفاوتی با موتور بازی Cocos2d دارد؟

Cocos2d — یک چارچوب 2D با پشتیبانی C++، Lua و JavaScript است که بر بازی‌های ساده 2D متمرکز است. Unity یک موتور کامل 3D/2D با ویرایشگر، ابزارهای تصویری و پشتیبانی از 27 پلتفرم است. Cocos2d در آسیا برای بازی‌های هایپرکاژوال محبوب است، Unity یک انتخاب جهانی برای هر ژانری است.

آیا Unity از AR و VR پشتیبانی می‌کند؟

بله، 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.

نتیجه

  • Unity — موتور کراس پلتفرم برای بازی‌های 2D/3D و برنامه‌های زمان واقعی در C#
  • معماری بر سحنه‌ها، GameObjects، کامپوننت‌های MonoBehaviour و پرفاب‌ها استوار دارد
  • C# — تنها زبان برای منطق بازی، کامپوننت‌ها و افزونه‌های ویرایشگر
  • بهینه‌سازی موبایل — IL2CPP، Asset Bundles، URP و Profiler برای iOS و Android
  • مقایسه — Unity پیشرو در بازار موبایل (48%)، Unreal در AAA، Godot در indie
  • کاربرد غیر بازی — معماری، خودروسازی، خرد فروش و ارائه‌های 3D تعاملی
  • سطح ورود — پایین، با دوره‌های رایگان Unity Learn و جامعه بزرگ

ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد

IT Sectr از سال 2017 برنامه‌های iOS و Android را برای استارتاپ‌ها و کسب‌وکارها ایجاد می‌کند. ما به شما مشاوره می‌دهیم و بهترین راه‌حل را پیشنهاد خواهیم کرد.

بحث درباره پروژه

همچنین بخوانید