Unity: основе, архитектура и развој на C#-у

Аутор: IT Sectr Објављено: 2026-05-02 Време читања: 9 мин

Unity — је вишеплатформски гејминг мотор за креирање 2D и 3D апликација са подршком за компилацију на мобилне платформе, десктоп и конзоле. Користи се како за развој игара, тако и за неиграчке апликације у архитектури, аутомобилској индустрији и малопродаји. Према подацима Unity Technologies, 2025, на Unity-ју је створено више од 70% мобилних игара у топ 1000 App Store-а. 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. години на Unity-ју је покренуто више од 3 милијарде мобилних игара месечно.

Главна карактеристика Unity-ја је компонентно-оријентисана архитектура. Сваки објекат на сцени представља празан контејнер (GameObject) коме се додају компоненте које одређују његово понашање: рендеровање, физика, звук, анимација и корисничка логика. Ово разликује Unity од хијерархијских мотора попут Unreal Engine-а, где се понашање одређује наслеђивањем класа.

Према Statista (2025), Unity заузима 48% тржишта гејминг мотора за мобилне игре, испред Unreal Engine-а (15%) и сопствених решења (37%). Мотор бирају инди студији због ниског прага уласка и велики издавачи због флексибилности пајплајна компилације за различите платформе.

Архитектура 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-а сачуван у пројекту као асет. Промена префаба се аутоматски примењује на све његове инстанце на сценама. Ово је централни механизам поновне употребе у 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 — систем паковања садржаја који учитава ресурсе по потреби, смањујући почетну величину апликације. Ово је посебно важно за игре са великим бројем нивоа или ликова, где учитавање свих асетова одједном није могуће због ограничења продавница апликација.

Unity Profiler омогућава анализу коришћења CPU-а, GPU-а и меморије на правом уређају преко ADB (Android) или USB (iOS) везе. Према Unity Documentation (2025), оптимизација броја draw calls-ова на 100–300 на мобилним уређајима даје стабилних 60 FPS на уређајима средњег сегмента.

Додирни унос и UI

За мобилне игре, 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 повећава перформансе за 15–25% на iOS-у и Android-у у поређењу са Mono-ом, али повећава време компилације и величину бинарног фајла.

Поређење Unity-а са другим моторима

Unity се пореди са Unreal Engine-ом и Godot-ом као главним алтернативама на тржишту гејминг мотора. Избор зависи од типа пројекта, квалификација тима и циљних платформи.

КритеријумUnityUnreal Engine 5Godot 4
ЈезикC#C++ / BlueprintsGDScript / C#
ГрафикаBuilt-in / URP / HDRPNanite + LumenСопствени рендерер
Мобилна оптимизацијаОдлична (70% мобилних игара)Добра (AAA пренос)Добра (лаки мотор)
Праг уласкаНизакВисокНизак
ЛиценцаPersonal / Pro / Enterprise5% тантијема (до $1M)MIT (бесплатно)

За мобилне игре, Unity остаје стандард индустрије захваљујући флексибилном систему рендеровања (URP — Universal Render Pipeline) који оптимизује графику за мобилне GPU-ове са ограниченом рачунарском снагом. URP аутоматски смањује број пролаза рендеровања и обједињује шејдере за смањење оптерећења GPU-а.

Unreal Engine 5 пружа бољи квалитет графике (Nanite за геометрију, Lumen за осветљење), али захтева снажнији хардвер и више искуства тима. Godot привлачи отвореним кодом и малом величином мотора, али има мање готових асета и мање тржиште специјалиста.

Unity за неиграчке апликације

Unity се активно користи ван гејмдева — у архитектури, аутомобилској индустрији, малопродаји и образовању. Визуелизација у реалном времену (RT3D) омогућава креирање интерактивних 3D презентација, симулатора и конфигуратора производа.

У аутомобилској индустрији, Unity се користи за креирање дигиталних близанаца аутомобила и HMI (Human-Machine Interface) система. 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 има потпуни 2D пајплајн: Sprite Renderer, 2D Physics (Box2D), Tilemap за креирање нивоа од плочица и 2D Animation за скелетну анимацију спрајтова. Многе популарне 2D игре, укључујући Hollow Knight и Cuphead, створене су на Unity-ју. 2D алати су уграђени у мотор без потребе за инсталацијом плагинова.

Колико кошта Unity за мобилни развој?

Unity Personal је бесплатан при годишњем приходу до $200 хиљада. Unity Pro кошта $2 040 годишње по програмеру и укључује напредне алате за профилисање, облачну компилацију и приоритетну подршку. За мобилни развој, функционалност Personal-а је довољна за већину инди пројеката.

По чему се 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. На Unity-ју су створени VR пројекти попут Half-Life: Alyx (техничка демонстрација) и VRChat. Мотор подржава све главне 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 — у инди
  • Неиграчка примена — архитектура, аутомобилска индустрија, малопродаја и интерактивне 3D презентације
  • Праг уласка — низак, са бесплатним курсевима Unity Learn и огромном заједницом

Развићемо мобилну апликацију под кључ

IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.

Разговарајте о пројекту

Прочитајте такође