Sebuah function atau method digunakan untuk menjalankan sub module dari sebuah algoritma yang sedang dibuat. Pada pembuatan game, penggunaan function/method akan sangat membantu untuk pengelompokan karena pada game engine unity, setiap script akan berperan sebagai komponen dari sebuah GameObject.

Adapun contoh pembuatan sebuah function Fade sebagai berikut:

Pada contoh function diatas, fungsi fade digunakan untuk mengubah tingkat alpha / transparansi dari sebuah material, dimana fungsi tersebut akan melakukan perulangan dari tingkat alpha 0 menjadi 1. Dalam pembuatan game, sebuah fungsi akan berjalan dalam jeda waktu 1 frame. Artinya fungsi fade tersebut akan selesai dijalankan dalam waktu 1 frame. Hal ini tentunya tidak akan terlihat efek dari function tersebut. Jika kita ingin menginginkan adanya gradasi dari tingkat transparansi, maka cara yang bisa dilakukan adalah menggunakan Coroutine.

Coroutine merupakan pengganti dari sebuah function, dimana kegunaan dan cara penggunaannya akan mirip seperti function. Namun coroutine memiliki perbedaan dengan function, dimana isi dari coroutine dapat berjalan dengan selang waktu lebih dari 1 frame.

Contoh penggunaan coroutine untuk melakukan fade adalah sebagai berikut:

Coroutine memiliki tipe fungsi IEnumerator, serta harus mengembalikan value menggunakan keyword yield. Jenis yield yang bisa digunakan:

  1. Break: fungsi Coroutine akan langsung selesai. Break ini sama dengan fungsi return pada function
  2. Return null: Fungsi coroutine akan melakukan delay sebanyak 1 frame. Artinya fungsi coroutine ini akan berhenti berjalan selama 1 frame, kemudian akan melanjutkan statement selanjutnya. Selain null, pada bagian return dapat diisi dengan beberapa function seperti:
  • new WaitForSeconds(float) -> melakukan delay sebanyak waktu yang ditentukan pada parameter
  • new WaitForEndOfFrame() -> melakukan delay sampai akhir dari sebuah frame. Biasanya digunakan untuk melakukan pemrosesan sebuah game atau code pada akhir dari sebuah frame.
  • new WaitForFixedUpdate () -> melakukan delay sampai waktu berjalannya fungsi FixedUpdate. Fungsi FixedUpdate akan berjalan seiring dengan waktu pengecekan pada Physics di Unity.

Untuk menjalankan coroutine dapat menggunakan fungsi StartCoroutine(). Contoh code untuk menjalankan fungsi fade jika user menekan tombol ‘f’ pada keyboard :

Fungsi coroutine diatas dapat dikembangkan dengan mengganti pergantian setiap perulangan yang semula adalah 0.1f menjadi Time.deltaTime, dimana Time.deltaTime akan menghasilkan waktu yang dihabiskan untuk melakukan proses dalam 1 frame. Adapun update dari penggunaan coroutine Fade sebagai berikut:

Fungsi diatas akan menghasilkan proses fading dari transparansi 0 menjadi transparansi 1 dalam waktu 1 detik.

Dokumentasi lengkap penggunakan Coroutine dapat mengakses situs dokumentasi resmi dari unity: https://docs.unity3d.com/ScriptReference/Coroutine.html