Unity Introduction
![George [GG]](https://github.com/georgewtg.png)
Unity Introduction
Unity adalah sebuah game engine yang digunakan untuk membuat game 2D, 3D, ataupun VR. Unity menyediakan banyak sekali fitur yang diperlukan untuk mengembangkan sebuah game, seperti physics engine, sprite renderer dan animation, tilemap system, cinemachine, lighting system, dan masih banyak lagi. Unity menggunakan C# sebagai bahasa pemrogramannya dan juga mendukung pengembangan game untuk semua platform utama, sehingga memudahkan pengembangan game untuk berbagai perangkat dan sistem operasi yang berbeda. Unity juga dapat dan telah banyak digunakan untuk mengembangkan aplikasi-aplikasi yang bukan game.
Note: Hampir semua object dapat diatur parameternya pada window Inspector dengan cara left click pada object tersebut.
GameObject
GameObject adalah Base Class untuk semua entity yang dibuat di dalam sebuah Scene pada Unity.
Cara membuat sebuah empty GameObject adalah pada window Hierarchy dengan
right click > GameObject > Create Empty:
Setiap GameObject dapat dilengkapi dengan komponen-komponen yang dapat ditambahkan sesuai kebutuhan, seperti Sprite Renderer, RigidBody2D, Animator, dan masih banyak lagi.
Cara menambahkan komponen pada GameObject adalah pada window Inspector dengan
Add Component > search Component > click Component:
Untuk penjelasan lebih detail tentang GameObject, dapat dilihat pada GameObject Manual.
Berikut adalah beberapa komponen GameObject yang paling sering digunakan:
Transform
Transform adalah komponen utama yang dimiliki semua GameObject yang berfungsi untuk menentukan:
- position : koordinat dari GameObject
- rotation : derajat perputaran GameObject secara counter clockwise terhadap setiap sumbu
- scale : skala perkalian dari ukuran GameObject
Untuk penjelasan lebih detail tentang Transform, dapat dilihat pada Transform Manual.
SpriteRenderer

SpriteRenderer adalah komponen GameObject yang berfungsi untuk menghandle dan menampilkan sprite atau gambar pada suatu GameObject.
Terdapat 2 cara untuk memasukkan gambar ke dalam SpriteRenderer, antara lain:
- dengan drag and drop
- melalui sprite selector
Untuk penjelasan lebih detail tentang SpriteRenderer, dapat dilihat pada SpriteRenderer Manual.
RigidBody2D

RigidBody2D adalah komponen GameObject yang menambahkan sistem physics sehingga GameObject tersebut dapat dipengaruhi oleh sistem physics seperti gravitasi, gaya gesek, dan gaya-gaya lainnya. Untuk GameObject yang bergerak atau dinamis, komponen RigidBody2D seringkali digunakan berdampingan dengan sebuah collider sehingga GameObject tersebut dapat berinteraksi dengan GameObject lain yang mempunyai collider.
Untuk penjelasan lebih detail tentang RigidBody2D, dapat dilihat pada RigidBody2D Manual.
Animator

Animator adalah komponen GameObject yang berfungsi untuk menghandle dan menampilkan animasi pada suatu GameObject. Mirip seperti Sprite Renderer, animasi dapat dimasukkan ke Animator melalui Animator Controller. Seperti memasukkan Sprite ke Sprite Renderer, Animator Controller harus dimasukkan ke dalam Animator agar animasi dapat ditampilkan.
Animator Controller adalah sebuah controller yang mengatur alur dari satu animasi ke animasi lainnya.
Cara membuat sebuah animator controller adalah pada window Project dengan
right click > Create > Animator Controller:
Animator Controller ditampilkan pada sebuah window yang berbeda, yaitu window Animator yang dapat dibuka dengan melakukan double-click pada sebuah animator controller pada window Project. Di dalam window Animator, untuk mengatur alur dari animasi diperlukan state-state yang berbeda untuk setiap kondisi.
Berikut adalah beberapa cara untuk memasukkan animasi ke dalam animator controller:
- membuat empty state pada window Animator dengan right click > Create State > Empty kemudian memasukkan animasi ke dalam state tersebut
- drag and drop animasi ke dalam window Animator
Transition adalah tools yang mengatur kondisi dan proses berubahnya animasi dari satu animasi ke animasi yang lain.
Cara membuat Transition antar animasi pada window Animator adalah dengan
right click pada animasi asal > Make Transition > left click pada animasi tujuan:
Parameter pada window Animator adalah variabel yang digunakan untuk menentukan kapan Transition dari satu animasi ke animasi yang lain akan dijalankan.
Cara menambahkan Parameter pada window Animator adalah dengan
left click tombol + pada tab parameter > pilih tipe parameter yang diinginkan > berikan nama parameter:
Untuk penjelasan lebih detail tentang Animator, dapat dilihat pada Animator Manual.
Untuk penjelasan lebih detail tentang Animator Controller, dapat dilihat pada Animator Controller Manual.
Assets
Assets adalah resources yang digunakan dalam pengembangan suatu game untuk membuat konten yang akan dimainkan pada game tersebut. Assets biasanya dikelompokkan sesuai dengan jenis dan kegunaannya dan dipisah dalam folder yang berbeda agar project lebih terstruktur.
Berikut adalah beberapa jenis Assets yang sering digunakan dalam Unity:
Scenes
Scenes adalah container pada Unity yang menyimpan semua konten dari sebuah game. Salah satu implementasi scene yang paling umum adalah penggunaan dua scene yang berbeda untuk dua area yang berbeda, dipisah dengan sebuah loading screen untuk mengurangi penggunaan memori.
Pembuatan Scene dilakukan pada window Project dengan
right click > Create > Scene:
Untuk penjelasan lebih detail tentang Scenes, dapat dilihat pada Scenes Manual.
Sprites
Sprites adalah gambar 2D yang digunakan untuk memvisualisasikan suatu GameObject. Sprite dapat diassign ke sebuah GameObject dengan menggunakan SpriteRenderer.
Pembuatan Sprite template dilakukan pada window Project dengan
right click > Create > 2D > Sprites > bentuk yang diinginkan:
sedangkan sprite custom dibuat dengan menggunakan software seperti Aseprite, GIMP, atau menggunakan gambar apa pun.
Untuk penjelasan lebih detail tentang Sprites, dapat dilihat pada Sprites Manual.
Scripts
Scripts adalah kode yang digunakan untuk mengatur perilaku dari suatu GameObject. Pada Unity, Scripts yang digunakan umumnya ditulis dalam bahasa pemrograman C#.
Pembuatan Script dilakukan pada window Project dengan
right click > Create > C# Script:
Beberapa referensi atau dokumentasi script Unity yang paling sering digunakan, antara lain:
- Unity Scripting API for GameObject
- Unity Scripting API for Transform
- Unity Scripting API for SpriteRenderer
- Unity Scripting API for RigidBody2D
- Unity Scripting API for Animator
Untuk penjelasan lebih detail tentang Scripts, dapat dilihat pada Scripts Manual dan Unity Scripting API.
Prefabs
Prefabs adalah Asset pada Unity yang menyimpan sebuah GameObject dengan semua komponen, nilai-nilai yang disimpan pada komponen tersebut, serta semua child GameObject yang ada di dalamnya. Prefabs bekerja seperti template dan memungkinkan sebuah template GameObject untuk digunakan berkali-kali.
Pembuatan Prefab dilakukan dengan mendrag sebuah GameObject dari window Hierarchy ke window Project:
Untuk penjelasan lebih detail tentang Prefabs, dapat dilihat pada Prefabs Manual.
Animations
Animations adalah animasi yang digunakan untuk memberi pergerakan pada sebuah GameObject. Dengan bantuan Animator dan Animator Controller, beberapa animasi yang berbeda dapat digabung untuk menghidupkan sebuah GameObject.
Pembuatan Animation Clip pada Unity dilakukan pada window Project dengan
memilih lebih dari satu sprite secara berurutan > right click > Create > Animation:
Untuk penjelasan lebih detail tentang Animations, dapat dilihat pada Animations Manual.
Unity C# Basics
MonoBehaviour
MonoBehaviour adalah base class dari semua GameObject dan digunakan dalam semua script.
Di dalam MonoBehaviour, terdapat beberapa event function yang akan dijalankan secara berurutan mengikuti alur berikut:
- Awake : dijalankan saat GameObject pertama kali diinstansiasi
- Start : dijalankan saat Script pertama kali diaktifkan
- FixedUpdate : dijalankan 50 kali setiap detik secara default dan dapat diubah melalui Edit > Project Settings > Time > Fixed Timestep
- Update : dijalankan setiap frame tergantung pada fps dari setiap mesin
- LateUpdate : dijalankan setiap frame seperti Update, namun dijalankan setelah FixedUpdate (jika ada) dan Update dijalankan
Untuk penjelasan lebih detail tentang MonoBehaviour, dapat dilihat pada Unity Scripting API for Monobehaviour dan untuk urutan jalannya event function dapat dilihat pada Order of Execution for Event Functions.
Basic Informations
Berikut adalah beberapa informasi tambahan untuk pemrograman pada Unity:
- tipe data dalam Unity bersifat private jika tidak dispesifikasikan
- SerializeField digunakan untuk menampilkan variabel private pada window Inspector
[SerializeField] int secretCode = 123;
- HideInInspector digunakan untuk menyembunyikan variabel public pada window Inspector
[HideInInspector] public string myName = "Jeff";
- informasi component dan script lain sebaiknya diambil sebelum melakukan update
RigidBody2D rb;
SomeRandomScript someRandomScript;
void Start() {
rb = GetComponent<RigidBody2D>(); // mengambil informasi component
someRandomScript = GetComponent<SomeRandomScript>(); // mengambil informasi script lain
} - FixedUpdate digunakan untuk melakukan hal yang berhubungan dengan physics engine
void FixedUpdate() {
someRandomScript.handleMovement(); // mengatur pergerakan object menggunakan physics engine seperti RigidBody2D
} - LateUpdate digunakan untuk mengatur animasi atau kamera
void LateUpdate() {
someRandomScript.handleFollowCamera(); // mengatur pergerakan kamera agar mengikuti suatu object
animator.SetInteger("Level", handleLevel()); // mengatur parameter Level pada animator untuk melakukan Transition ke animasi lain
} - Update digunakan untuk melakukan hal-hal lainnya yang tidak dilakukan pada FixedUpdate dan LateUpdate