Belajar Unity untuk Pemula - Tutorial Unity Indonesia


Pembuatan game tidak hanya melibatkan pemrograman.

Agar dapat menghasilkan satu game saja, diperlukan setidaknya kemampuan dalam pemrograman, pembuatan sprite, pembuatan 3D model, pembuatan sound effect dan musik.

Unity adalah software untuk menggabungkan banyak konten menjadi sebuah game.

Unity memiliki banyak keunggulan dibandingkan game engine lainnya, yakni lisensinya yang memungkinkan game developer baru untuk mendapatkannya secara gratis.

Selain itu, dokumentasi dan dukungan komunitasnya sangat bagus.

Walaupun demikian, kita perlu suatu gambaran umum tentang dasar-dasar dalam Unity agar kita bisa menggunakannya dengan tepat.

Selain itu, kita juga perlu mempraktikkannya agar pemahaman kita semakin baik, sehingga kita bisa menggunakan Unity sesuai tujuan kita tanpa harus tanya sana-sini.

Tutorial ini membahas dasar-dasar unity yang menurut saya perlu dipahami untuk membuat sebuah game yang sederhana.

Berikut ini daftar lengkap panduan tersebut:
















Anda bisa men-download source code untuk artikel ini di sini:


Pengenalan

Ketertarikan manusia kepada pengembangan game relatif stabil.

Begitu pula ketertarikan manusia kepada game.

Saat ini, telah banyak game-game yang dirilis.

Pembuatannya semakin mudah karena software yang digunakan untuk pembuatan game semakin canggih.

Bahkan software pembuatan game yang biasa disebut sebagai game engine pun banyak yang bisa didapatkan secara gratis, walaupun tidak semuanya.

Mungkin game developer baru akan sedikit bingung untuk memilih game engine apa yang sebaiknya ia gunakan.

Hal itu memang relatif, tergantung game apa yang akan dibuat, pada OS apa game tersebut dijalankan, dan sebagainya.

Tapi menurut pendapat saya, game engine terbaik adalah yang paling mudah dipelajari.

Agar lebih mudah dipelajari, game engine tersebut harus baik dokumentasinya dan banyak tutorial penggunaannya.

Game engine Unity adalah salah satu game engine terbaik karena hal tersebut.

Apa Itu Unity?

Unity adalah sebuah software yang berjalan di PC untuk membuat game.

Membuat game pada OS yang berbeda-beda bisa dilakukan dengan software tersebut.

Walaupun tujuan utama game engine Unity adalah untuk membuat game, kita juga bisa membuat aplikasi non game dengan Unity, terutama aplikasi yang melibatkan simulasi dan grafika.

Misalnya, kita bisa saja membuat aplikasi anatomi 3D  yang berguna untuk mempelajari anatomi tubuh manusia.

Atau mungkin juga untuk meng-generate terrain, bangunan, dan jalan dalam bentuk model 3D.

Unity bisa dijalankan dengan cukup ringan dibandingkan game engine lain sekelasnya seperti Unreal Engine 4.

Game engine Unity juga menyertakan IDE bersama installernya, yakni MonoDevelop.

Dengan demikian, kita tidak harus menginstall IDE maupun script editor lain untuk membuat dan mengedit script Unity yang berbahasa pemrograman C# ini.

Mengapa Kita Menggunakan Unity untuk Membuat Game?

Unity merupakan game engine berbasis component-entity.

Artinya, setiap objek pada skenario game umumnya merupakan sebuah game object. Walaupun demikian, bisa juga ada objek di dalam game yang bukan game object, seperti gizmos.

Game object tersebut selanjutnya dipasangi satu atau lebih component tergantung bagaimana behavior dari game object tersebut yang kita inginkan.

Dengan demikian, jika kita ingin sebuah game object yang bisa dipindahkan dan bisa dilihat, kita tinggal menambahkan transform component dan renderer component, kira-kira begitu.

Sistem component-entity ini sangat membantu dalam pembuatan game, karena kita tidak perlu merancang satu object khusus untuk setiap entitas game.

Jika kita ingin menambahkan behavior baru pada sebuah game object, kita hanya tinggal memilih game object yang sudah ada dan menambahkan component ekstra untuk memberi behavior tambahan pada game object tersebut.

Selain itu, semua game object yang telah kita buat bisa "diawetkan" dalam bentuk prefab, yang merupakan versi asset dari game object.

Nanti kita akan mempelajari lebih dalam tentang game object, component, dan prefab.

Bagaimana Cara Kerja Unity?

Sebagai game engine, Unity telah menyediakan banyak fitur yang sangat relevan dalam pembuatan game.

Dilihat dari ketinggian, Unity memiliki berberapa bagian yang paling utama.

Pertama adalah asset.

Dalam unity, semua file yang bisa dimasukkan ke dalam Unity editor adalah asset.

Asset ini bisa berupa berbagai jenis file, mulai dari 3D model, texture, sound, material, prefab, script, shader, animator, dan sebagainya.

Bahkan file pdf berisi panduan tertentu juga bisa disebut asset.

Gampangnya: file = asset.

Asset bisa masuk ke dalam sistem Unity dengan mekanisme import.

Jadi file 3D model dari blender, autodesk, dan sebagainya akan diimport sebelum bisa digunakan dalam game.

Untuk mengimport-nya pun sangat sederhana, yakni tinggal drag and drop.
Drag and Drop merupakan suatu pekerjaan yang biasa dalam unity. Jadi jangan pusing-pusing mencari menu untuk anu di mana, dan lain-lain.
Cobalah drag and drop dulu, baru bertanya.
Asset-asset tersebut ada yang bisa dimasukkan ke dalam scene dan menjadi bagian dari game.

Ada juga yang tidak bisa dimasukkan ke scene, seperti script. Tapi script bisa dipasang pada game object, dan game object adalah bagian dari scene.

Setelah semua scene telah dimasukkan game object-nya masing-masing, maka scene siap di-compile pada target OS atau platform yang dituju.

Setelah di-compile, keluarlah hasil file executable (misal:.exe) dan folder datanya.

Hasil tersebut siap dijalankan pada OS atau platform target yang dituju.

Keunggulan dan Kelemahan Unity

Walaupun sangat bagus menurut saya, Unity tetap memiliki kelebihan dan kekurangan.

Berikut ini adalah kelebihannya:
  • Gratis sampai game/aplikasi mencapai pendapatan tertentu.
  • Banyak tutorialnya
  • Lengkap dokumentasinya
  • Sangat intuitif
  • Rendah penggunaan memory pada PC dengan kualitas menengah
  • Menggunakan component-entity system
  • Target multi OS atau platform
  • Bisa untuk segala genre game
  • Package 3rd party yang berlimpah
Berikut ini adalah kekurangannya:
  • Sulit untuk membuat game yang moddable
  • Grafisnya masih kurang realistis dibandingkan Unreal Engine 4
  • Terrain editor kurang lengkap fiturnya

Bisakah Saya Membuat Game yang Seperti Anu, Ini, dan Itu dengan Unity?

Kalau masalah ini, saya bilang tergantung dari skill pengguna Unity.

Apakah pengguna hanya bisa menggunakan Unity saja, tapi tidak bisa menghasilkan assetnya sendiri?

Jika demikian maka saya jawab tidak bisa, kecuali kita mendapatkan asset yang sudah jadi dari tempat lain.

Apabila pengguna Unity juga memiliki skill lainnya untuk menghasilkan konten dari game-nya, maka Unity sudah lebih dari cukup.

Karena pembuatan game tidak hanya drag and drop atau pemrograman saja, melainkan pembuatan konten juga.

Pada umumnya, game-game besar, yang membutuhkan banyak konten berkualitas merupakan pekerjaan tim, bukan sendiri.

Lagipula, kita tidak bisa sesukanya menggunakan asset orang lain yang sudah jadi karena ada hak cipta.

Jadi, Apakah sebaiknya Saya Mempelajari Unity?

Tentu, kita harus mempelajarinya, karena kita bisa menguasai prinsip dasar pembuatan game dengan cara yang lebih mudah.

Waktu saya belum mengenal unity, saya mencoba kode AI dengan me-rebuild berulang ulang source code C++ dengan library yang cukup besar sehingga memakan waktu yang lama.

Setelah saya mengenal Unity, saya bisa mencoba kode-kode tersebut dengan lebih cepat.

Bahkan, saat ini saya menganggap Unity sebagai sebuah game karena begitu menariknya.

Mungkin bisa disebut "game untuk membuat game".

Penginstallan dan Program Pertama

Sebelum kita menjajal Unity untuk membuat game, kita harus meng-install-nya terlebih dahulu.

Menginstall Unity

Untuk meng-install Unity, download installer-nya dari https://store.unity.com/ , lalu pilih yang Personal (Free).

Walaupun free, fitur versi ini adalah lengkap, dalam artian fitur game engine-nya.

Setelah installer di-download, sekarang jalankan installer tersebut dengan cara men-double-click file executable yang telah di-download tadi.

Nanti sebuah dialog akan muncul, klik next sampai muncul kotak yang dicentang.

Agar tidak menyesal, centang semua kotak, dan klik next sampai proses peng-install-an dimulai.


Saat ini installer akan men-download file-file yang dibutuhkan.

Akan sedikit lama memang, tergantung kecepatan download-nya.

Tunggu hingga selesai.

Membuat Program Pertama "Hello World" dengan Unity

Setelah terinstall, buka Unity, kemudian buat project baru.

Beri nama project-nya dan tentukan lokasi folder project-nya.

Pastikan lokasi folder project masih kosong.

Pilih 3D pada bagian kanan, dan jangan enable Unity analytics.


Setelah pembuatan project selesai, kita bisa mulai melakukan sesuatu dengan Unity.

Layout User Interface Unity

Pada saat pertama kali, kita akan melihat ada beberapa window dari layout Unity yang bisa di-drag.

Misalnya window "Scene", "Game", "Hierarchy", "Project", "Console", "Inspector", "Lighting", dan lain-lain.

Susunlah layout seperti di gambar ini.


Jika kita tidak menemukan bagian yang ada, buka menu "Window". Di situ tinggal pilih yang belum tampil.

Setelah tampil, kembali susun layout seperti gambar tadi.

Setelah tersusun, save layout dengan mengklik dropdown "Layout" di bagian kanan atas tampilah Unity dan mengklik "Save".

Nanti ada kotak berisi tektbox dan tombol. Isi nama layout-nya di sana (misal: "BEST"), kemudian tekan tombol-nya.

Setelah melakukan itu, kita bisa berganti-ganti layout sesuka hati dan bisa mengembalikannya ke layout "Best" dengan cara mengklik "BEST" pada dropdown tadi.

Membuat Folder Project

Pada tampilan editor Unity, kita bisa melihat ada window yang bernama "Project".

Di bawahnya ada kotak kosong.

Di situlah struktur folder asset dari project kita berada.


Jadi semua file yang akan dimasukkan ke dalam game ada di situ semua.

Di situ kita juga bisa membuat folder agar struktur file asset kita lebih baik.

Sekarang buatlah folder baru bernama "ProgramPertama" di kotak itu.

Caranya bisa Klik Kanan | Create | Folder

Jika kita salah memberi nama, kita bisa menggantinya dengan cara klik kiri pada folder tadi dua kali dengan jeda agak lama antar klik.

Lalu rename setelah nama folder disorot dengan warna biru.

Membuat Scene

Game tidak akan bisa dicoba tanpa scene.

Untuk membuat scene klik kanan pada folder "ProgramPertama" | Create | Scene

Beri nama scene tersebut dengan nama "Main".

Selanjutnya, double-click scene "Main" agar terbuka.

Menambahkan Cube

Sekarang, tambahkan sebuah primitive bernama Cube agar ia tampil pada game.

Caranya dengan klik kanan pada bagian  "Hierarchy" (pada layout "BEST" ada di atas bagian assets) | 3D Object | Cube


Sebuah cube akan diletakkan di dalam scene.

Mungkin kita tidak menemukan ini pada scene window "Scene".

Untuk menemukannya, double-click "Cube" pada "Hierarchy". Nanti, window "Scene" akan mendekati game object "Cube" tersebut.

Menambahkan 3D Text

Dengan cara yang sama seperti "Cube", tambahkan sebuah 3D Text.

Bisa didapat dengan klik kanan pada "Hierarchy" | 3D Object | 3D Text.

Setelah itu akan muncul sebuah text bertuliskan "Hello World".


Susun agar "Cube" dan "Hello World" keduanya terlihat.

Menempatkan camera window "Game" Sesuai dengan Window "Scene"

Agar apa yang kita lihat pada window "Scene" sama dengan apa yang kita lihat pada game setelah jadi, kita harus menyamakan posisi dan rotasi dari camera-nya game, dengan camera-nya scene (yang umumnya disebut "Editor Camera").

Caranya dengan menyeleksi game object "Camera" pada window "Hierarchy", kemudian pergi ke menu utama (yang di atas) | Game Object | Align With View.


Sekarang tampilan window "Game" akan sama dengan window "Scene".

Menjalankan Program Pertama Kita

Sekarang, kita save scene yang telah kita buat tadi dan kita telah siap mencobanya sebagai game.

Untuk menguji program ini, tekan tombol "Play" yang ada di bagian atas window utama.


Program ini akan berjalan sebagai game dan tampilan yang kita lihat nantinya adalah tampilan yang ada di dalam game.

Untuk menghentikannya, tekan tombol play sekali lagi.

Jika ingin mem-pause-nya, tekan tombol sebelah kanan tombol "Play".

Game Object, Component, dan Prefab

Ketika sedang bekerja dengan Unity, kita akan selalu berurusan dengan Game Object, Component, dan Prefab.

Ketiga hal ini sangat penting untuk dipahami dan merupakan sesuatu yang sangat mendasar.

Sekilas tentang Game Object dan Component

Karakter jagoan yang dimainkan, Mobil balap yang dikemudikan, Pesawat terbang yang baru mendarat dalam sebuah game yang dibuat oleh Unity adalah Game Object.

Akan tetapi, untuk menjadi sesuatu seperti itu tidaklah cukup hanya dengan mengandalkan Game Object.

Game Object tidak bisa berbuat banyak hanya dengan dirinya sendiri.

Component-lah yang paling berperan dalam menentukan bagaimana perilaku sebuah Game Object.

Agar sebuah geometri 3D bisa ditampilkan dalam game, diperlukan component yang bernama "Mesh Renderer" dan "Mesh Filter".

Agar sebuah kotak bisa jatuh, diperlukan component bernama "Rigidbody".

Agar kotak yang jatuh tersebut bisa menumbuk lantai, diperlukan component bernama "Collider" yang memiliki bentuk berbeda-beda.

Dan ada satu component yang tidak bisa dilepaskan dari sebuah Game Object.

Component itu adalah component "Transform".

Component "Transform" menentukan posisi, orientasi, dan skala dari sebuah Game Object.

Membuat dan Meng-Extend Game Object

Untuk membuat game object kosong, pergi ke Menu | Create Empty.

Di menu juga terlihat ada beberapa game object pre-made seperti Cube, Sphere, Particle System, dan lain-lain.

Kita bisa memilih sesuai kebutuhan kita.

Selain itu, kita juga bisa meng-extend game object sehingga method yang ditambahkan bisa diakses dari script.

Berikut ini contohnya:

public static class GameObjectExtension
{
     public static void GantiWarna(this GameObject go, Color warna)
  {
  Renderer renderer = go.renderer;
  if(renderer == null)
  {
   //tambahkan renderer
   go.AddComponent();
  }
        //manipulasi warna di sini
  go.GetComponent().material.color = warna;
     }
}

Sekarang, kita bisa mengubah warna game object dengan cara ini:

gameObject.GantiWarna(Color.White);

Menambahkan Component

Untuk Menambahkan Component, kita bisa memilih satu atau lebih game object di hierarchy, kemudian menuju inspector-nya.

Selanjutnya, tekan tombol "Add Component" dan pilih component yang diinginkan.

Untuk me-remove component, klik icon "Gear" di kanan, kemudian pilih "Remove Component".



Semua component dapat di-remove, kecuali component "Transform".

Prefab

Seringkali kita membutuhkan banyak game object yang serupa.

Misalnya, NPC yang memiliki kelas yang sama.

Apabila setiap kali kita membuat NPC tersebut, kita harus mengulangi proses yang sama, maka hal tersebut akan sangat merepotkan.

Oleh karena itu, Unity menyediakan fitur prefab.

Artinya, game object yang sudah kita bangun bisa di-save struktur dan fungsinya ke dalam sebuah asset yang bernama prefab.

Dengan cara itu, apabila kita membutuhkan lagi NPC yang serupa, kita tinggal men-drag prefab itu ke dalam Hierarchy atau Scene.

Untuk membuat prefab, kita harus memiliki game object yang telah jadi di dalam Scene.

Selanjutnya drag parent root dari game object tersebut ke dalam folder asset yang ada di window "Project" dan prefab pun dibuat.

Apabila kita ingin mengubah property pada prefab, kita bisa menyorot prefab dalam asset folder, kemudian mengubahnya.


Atau bisa juga dengan menyorot game object yang diwakili prefab tersebut, kemudian mengubahnya, dan selanjutnya mengklik tombol apply di bagian atas inspector.

Asset

Asset secara sederhana bisa dianggap sebagai segala file yang bisa dimasukkan ke dalam project Unity.

Script yang dipasang di game object memiliki wujud file-nya.

Begitu pula material, texture, dan lain sebagainya.

Ada asset yang bisa dibuat dengan Unity Editor seperti Animator Controller, Audio Mixer atau Render Texture.

Ada juga yang dibuat dengan tool lain.

File 3D model misalnya, dibuat dengan tool lain, Blender misalnya.

Asset dapat dimasukkan dari luar project ke dalam project Unity.

Aktivitas tersebut disebut impor.

Asset juga dapat dikeluarkan dari dalam project ke luar project Unity.

Aktivitas tersebut disebut ekspor.

Unity juga mengenal istilah package.

Package adalah suatu paket dari kumpulan file yang dikemas.

Format dari file package Unity adalah .unitypackage.

Aktivitas impor bisa bersumber dari file package dan non package.

Artinya, kita bisa mengimport file seperti wav, ogg, fbx ke dalam project Unity dan bisa juga mengimport file .unitypackage berisi file-file tadi ke dalam project Unity.

Begitu juga ekspor, bisa menghasilkan package maupun non package.

Artinya, kita bisa mengekspor kumpulan file seperti wav, ogg, fbx yang dikemas dalam bentuk .unitypackage maupun bentuk aslinya.

Mengimpor Asset Mentah

Asset mentah berarti file yang masih berwujud aslinya, seperti wav, ogg, fbx, png, jpg, dan lain-lain.

Asset mentah semacam ini bisa diimpor dengan cara melakukan drag dari Windows Explorer kemudian drop ke dalam Project Window di Unity.

Atau bisa juga dengan cara klik kanan di Project Window Unity | Import New Asset seperti gambar di bawah ini:



Import Setting

Beberapa jenis asset, seperti file texture, memiliki import setting.

Setelah asset semacam ini diimpor, maka kita bisa memilih apakah asset tersebut akan diimpor sebagai 2D Sprite, Normal Map, Lightmap dan lain-lain.

Untuk mengetahui import setting lainnya, silakan coba beberapa jenis file untuk diimpor, kemudian sorot asset tersebut di project folder, kemudian lihat di Inspector.

Mengimpor Asset Package dari Komputer Lokal

Asset package, yang formatnya .unitypackage bisa diimpor dari komputer lokal.

Caranya dengan melakukan drag dari Windows Explorer kemudian drop ke dalam Project Window di Unity.

Cara lainnya adalah dengan klik kanan di Project Window Unity | Import Package | Custom Package seperti gambar di bawah ini:


Mengimpor Standard Asset

Standard asset pada hakikatnya adalah asset package yang berformat .unitypackage.

Hanya saja, package tersebut dibuat oleh Unity dan disimpan dalam folder khusus dalam direktori peng-install-an Unity.

Anda boleh cek di <UnityInstallDir>/Editor/Standard Assets seperti gambar di bawah ini:


Bisa kita lihat bahwa di sana yang ada adalah file .unitypackage

Mengimpor Asset dari Asset Store

Kita juga bisa mengimpor asset yang didapatkan dari Asset Store.

Jika kita telah sign in, kita tinggal buka Asset Store Window di Unity.

Setelah itu, pilih asset yang diinginkan dan tekan tombol download seperti gambar di bawah ini:


Mengekspor Asset Mentah

Kita bisa mengeluarkan asset dari dalam project Unity ke luar.

Caranya adalah dengan drag dari Project Window di Unity dan drop ke Window Explorer di folder yang kita inginkan.

Dengan cara ini, file yang diekspor akan hilang dari project Unity.

Kita juga bisa memindahkannya dari satu project Unity ke project Unity yang lain dengan cara drag dari Project Window A dan drop ke Project Window B.

Kali ini, asset sumbernya tidak akan hilang karena metodenya adalah copy, bukan move.

Mengekspor Asset Package

Kita bisa mengeluarkan asset dari project Unity dalam bentuk .unitypackage tanpa menghapus sumbernya.

Hal ini berguna untuk melakukan backup project.

Caranya adalah dengan menyorot folder atau file yang akan di-backup dalam Project Window, klik kanan | Export Package seperti gambar di bawah ini:


Asset Bundle

Asset bundle adalah sebuah archive yang mengandung file-file asset.

Berbeda dengan Asset Package yang berformat .unitypackage, Asset Bundle dapat dibuka saat runtime.

Jadi apabila kita memiliki Texture, 3D Model, Audio, dan lain-lain dalam Asset Bundle, kita dapat memuat file-file tersebut dan menggunakannya dalam game saat game berjalan.

Asset Bundle dapat disimpan pada sebuah server, sehingga game yang kita jalankan bisa men-download-nya saat runtime tanpa harus disertakan bersama executable di sisi client.



Asset Bundle juga dapat disimpan di komputer lokal bersama executable dari game kita tanpa membutuhkan sebuah server.

Dengan demikian, kita bisa membuat sebuah game yang asset-nya bisa ditambahi atau dikurangi seperti pada game-game yang bersifat moddable.

Membuat Asset Bundle di Unity

Secara umum, asset bundle dibuat melalui langkah-langkah ini:
  • Menyeleksi asset-asset yang akan dimasukkan ke dalam Asset Bundle archive.
  • Mem-build asset-asset tersebut sehingga dihasilkan sebuah Asset Bundle archive.
  • Membuat client untuk Asset Bundle yang mengonsumsi Asset Bundle archive tadi.
  • Memuat asset-asset dari Asset Bundle sesuai kebutuhan game.
  • Memperlakukan asset-asset yang sudah dimuat tadi sebagai objek Unity pada umumnya seperti Texture, Prefab, dan lain-lain.

Menyeleksi dan Mem-Build Asset untuk Asset Bundle

Pertama-tama, buatlah sebuah project Unity dengan nama apapun.

Kemudian, buat folder baru bernama "HasilBuild" pada root dari folder project tersebut.

Untuk menyeleksi Asset yang akan dimasukkan dalam asset bundle, sorot asset yang diinginkan, kemudian lihat bagian bawah dari Inspector Window.

Di bagian tersebut ada sebuah drop up, tekan itu kemudian pilih New.

Lihat gambar di bawah ini:


Beri nama "myasbun.asb".

Kemudian ulangi langkah tersebut sampai semua asset yang diinginkan terseleksi.

Untuk langkah kedua dan seterusnya, kita tidak perlu memberi nama baru, cukup pilih nama yang pertama kali dibuat.

Selanjutnya, kita akan mem-build asset-asset tadi menjadi sebuah Asset Bundle.

Untuk melakukannya, kita memerlukan sebuah Editor Script.

Buat script C# baru dengan nama "AssetBundleBuild", kemudian isi dengan kode-kode ini:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;

public class AssetBundleBuild : Editor
{
 //MenuItem berfungsi untuk mendaftarkan perintah di bawah ini ke menu di Unity Editor
 //nanti perintah "Build AssetBundles" akan muncul pada menu Assets | Build AssetBundles
    [MenuItem("Assets/Build AssetBundles")]
    static public void BuildAssetBundle()
    {
  //ini adalah perintah untuk membuat Asset Bundle
        BuildPipeline.BuildAssetBundles("HasilBuild",
            BuildAssetBundleOptions.CollectDependencies | BuildAssetBundleOptions.CompleteAssets,
            BuildTarget.StandaloneWindows);
    }
}

Buatlah folder bernama "Editor" kemudian masukkan script tadi pada folder tersebut.

Selanjutnya, buka menu Assets | Build AssetBundles kemudian klik "Build AssetBundles".

Nanti hasil build dari Asset Bundle akan muncul pada folder "HasilBuild" yang ada pada root folder dari project ini.

Sekarang, langkah pertama selesai dan Asset Bundle siap dikonsumsi oleh project client.

Memuat Asset dari Asset Bundle pada Sebuah Client

Sekarang, buatlah sebuah project Unity lainnya dengan nama "AssetBundleTester".

Kemudian, buat sebuah scene baru bernama "TesterScene".

Dalam scene tersebut, buat sebuah Plane dengan cara membuka menu | GameObject | 3D Object | Plane seperti gambar di bawah ini:


Selanjutnya, buat sebuah material bernama "Plane" dengan klik kanan pada Project Window | Create | Material seperti gambar di bawah ini:



Pilih shader legacy diffuse pada material itu, kemudian pasang material tersebut pada GameObject yang bernama "Plane" tadi.

Selanjutnya, buatlah sebuah script C# bernama "LoadAssetBundle" dan isi dengan kode berikut ini:

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class LoadAssetBundle : MonoBehaviour
{
    private WWW www;
    public Material mat;

    void Start()
    {
        Caching.ClearCache();

        //URL untuk komputer lokal, jika dari server ganti: "http://alamat/path"
  //bagian ini HARUS DISESUAIKAN dengan lokasi Asset Bundle Anda
        string URL = "file:///D:/Projects/Unity/Belajar%20Unity%20untuk%20Pemula/AssetBundle/AssetBundle/HasilBuild/myasbun.asb";

        StartCoroutine(Load(URL, 1));
    }

    private IEnumerator Load(string url, int version)
    {
        while (!Caching.ready)
            yield return null;

        www = WWW.LoadFromCacheOrDownload(url, version);
        yield return www;

        Debug.Log("Termuat dengan sukses");

        if (www.error != null)
            throw new Exception("Ada WWW error: " + www.error);

        AssetBundle assetBundle = www.assetBundle;

        //ganti texturenya
        mat.SetTexture("_MainTex", assetBundle.LoadAsset<texture>("ciyy-512x512.png"));

        assetBundle.Unload(false);
    }
}

Selanjutnya, pasang script tersebut ke Game Object bernama "Plane".

Jalankan project ini, dan hasilnya, texture akan terpasang pada Plane di Game Window.

C# Script

Agar game objek dapat bertingkah sesuai dengan keinginan kita, diperlukan suatu cara untuk memprogram game objek tersebut.

Salah satu cara untuk memprogram game objek adalah dengan menggunakan c# script.

C# script adalah sebuah file teks yang diisi dengan instruksi dengan bahasa pemrograman c#.

Di sini kita tidak akan membahas secara detail tentang pemrograman dengan bahasa pemrograman c#.

Jadi, di sini tidak akan dibahas tentang class, enum, loop, if-else, dan variable.

Untuk itu, Anda disarankan untuk mepelajari sendiri detail dari pemrograman c# pada sumber lain.

Yang dibahas disini adalah beberapa hal penting tentang interaksi antara script c# dengan Unity.

Cara Membuat Script C#

Kita bisa membuat script c# dengan beberapa cara.

Cara pertama adalah dengan menggunakan Unity editor.

Pada window "Project", klik kanan | Create | C# Script.


Tergantung di folder mana kita membuatnya, script bernama "NewBehaviourScript" akan muncul di folder tersebut.

Jangan tekan apapun sebelum Anda me-rename-nya, karena setelah di-rename, akan dibuat sub-class dari Monobehaviour yang bernama sama dengan nama script-nya.


Cara kedua adalah dengan membuatnya melalui Windows Explorer.

Buka folder asset dari project Anda dengan Windows Explorer.

Selanjutnya, klik kanan | New | Text Document.


File baru akan dibuat.

Selanjutnya rename file tersebut dengan <nama_class.cs>

Kemudian tulis sendiri script Monobehaviour-nya di file tersebut.

Jadi apabila kita ingin membuat class bernama "Bola" yang merupakan Monobehaviour, rename file yang baru dibuat di Windows Explorer dengan Bola.cs.

Kemudian, isi file tersebut dengan script ini:

using System.Collections;
using System.Collections.Generic;
using UnityEngine; //Jika Monobehaviour, ini WAJIB ada.

public class Bola : MonoBehaviour
{

 // Use this for initialization
 void Start ()
    {
  
 }
 
 // Update is called once per frame
 void Update ()
    {
  
 }
}

Jika kita perhatikan, ada perbedaan nama file script di Windows Explorer dengan Unity.

Di Windows Explorer, ada ekstensi .cs di belakangnya, sedangkan di Unity tidak.

Hal ini normal, karena Unity menyembunyikan ekstensi dari file-file asset-nya.

Secara default, Windows Explorer juga menyembunykan ekstensi dari file, tapi itu bisa diubah di Folder Options.



Cara Meng-Edit Script C#

Kita bisa meng-edit script yang telah dibuat tadi dengan beberapa cara.

Cara pertama adalah dengan menggunakan Monodevelop.

Cara ini tidak memerlukan peng-install-an IDE tambahan.

Jadi, sudah disediakan secara default.

Caranya dengan memastikan terlebih dahulu bahwa script editor yang dipakai adalah Monodevelop.

Untuk memastikannya, buka menu | Edit | Preferences | External Tools.

Pastikan bahwa external script editor yang dipilih adalah Monodevelop.


Cara kedua adalah dengan menggunakan Visual Studio Community Edition.

Cara ini memerlukan peng-install-an IDE Visual Studio Community 2017 yang bisa didapatkan di:

https://www.visualstudio.com/downloads/

Install IDE tersebut, kemudian pastikan Anda memilih "Game Development with Unity".

Biasanya, setelah Visual Studio terinstall, maka external-script-editor akan memilih Visual Studio secara otomatis, tapi ada baiknya Anda pastikan terlebih dahulu dengan menuju menu | Edit | Preferences | External Tools.

Cara ketiga adalah dengan menggunakan text editor apapun.

Ya... Apapun.

Pada dasarnya, script C# adalah sebuah file text.

Unity-lah yang memandangnya secara berbeda.

Jadi, apabila kita melakukan perubahan pada script C# dengan text editor apapun, maka Unity akan memprosesnya saat kita kembali memfokuskan Window kita ke Unity Editor.

Input

Karakter pemain yang berjalan ke kiri, kanan, depan, belakang, dan sebagainya pada umumnya dikendalikan oleh input.

Game yang dibuat dengan Unity bisa dikendalikan dengan berbagai perangkat input seperti keyboard, mouse, joystick, dan sebagainya.

Agar game objek dapat merespon keyboard, mouse, joystick, dan perangkat input lainnya di Unity, diperlukan class Input.

Berikut ini adalah contoh kode untuk menjalankan game objek sepanjang sumbu forward dengan input keyboard maupun joystick:

using UnityEngine;
using System.Collections;

public class Orang : MonoBehaviour {

    void Update() {
  Vector3 axis = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
        transform.Translate(axis * Time.deltaTime);
    }
}

Kenapa sama untuk keyboard dan joystick?

Karena kedua perangkat input tersebut sama sama berasal dari konfigurasi di menu Edit | Project Settings | Input.

Seperti yang bisa dilihat pada gambar ini:

<unity-project-settings-input.png>

Walaupun konfigurasi keduanya berbeda, method yang digunakan sama-sama Input.GetAxis.

Sekarang, bagaimana dengan Input.GetKeyDown?

using UnityEngine;
using System.Collections;

public class Kucing : MonoBehaviour 
{
    void Update() 
 {
  if(Input.GetKeyDown("space"))
  {
   Debug.Log("meong");
  }
    }
}

Kali ini, input harus berasal dari nama input yang sudah ditentukan.

Parameter yang diisi pada method Input.GetKeyDown harus sah seperti:

  • Normal keys: “a”, “b”, “c” …
  • Number keys: “1”, “2”, “3”, …
  • Arrow keys: “up”, “down”, “left”, “right”
  • Keypad keys: “[1]”, “[2]”, “[3]”, “[+]”, “[equals]”
  • Modifier keys: “right shift”, “left shift”, “right ctrl”, “left ctrl”, “right alt”, “left alt”, “right cmd”, “left cmd”
  • Mouse Buttons: “mouse 0”, “mouse 1”, “mouse 2”, …
  • Joystick Buttons (from any joystick): “joystick button 0”, “joystick button 1”, “joystick button 2”, …
  • Joystick Buttons (from a specific joystick): “joystick 1 button 0”, “joystick 1 button 1”, “joystick 2 button 0”, …
  • Special keys: “backspace”, “tab”, “return”, “escape”, “space”, “delete”, “enter”, “insert”, “home”, “end”, “page up”, “page down”
  • Function keys: “f1”, “f2”, “f3”, …


Jadi kita tidak bisa mendeteksi joystick dan keyboard bersamaan dengan cara yang sama.

Hal yang sama berlaku juga untuk Input.GetKey. Bedanya, yang ini mendeteksi tombol sedang ditahan.

Pada platform mobile, input bisa dideteksi dengan Input.GetTouch:

using UnityEngine;
using System.Collections;

public class TouchDetector : MonoBehaviour
{
    void Update()
    {
        if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Began)
        {
            Debug.Log("touch terjadi").
        }
    }
}

Sedangkan pada virtual joystick, walaupun prosesnya sama dengan tadi, tapi ada tambahan elemen UI yang berperan.

Jadi, kita bisa memandangn virtual joystick sebagai salah satu bentuk UI.

Sehingga, kita tidak perlu memikirkan class Input ketika membuat virtual joystick.

Untuk mempelajari cara membuat virtual joystick sederhana, Anda bisa cek kursus yang saya tawarkan ini.

This Is The Oldest Page