Menampilkan Menu di Game Lewat Tombol Keyboard [using Unity 3d Engine]

Ide awal: Ketika game tengah berjalan, saya ingin pengguna dapat menampilkan menu utama dengan cara menekan tombol tertentu di keyboard, misalnya tombol Esc.

Solusi awal:
Dengan beberapa alasan :

  1. Saya ingin menggunakan tampilan menu yang ringan untuk di-load oleh komputer, jadi saya menggunakan fasilitas menu yang disediakan oleh class Javascript dalam unity (GUI.Button)
  2. GUI.Button hanya bisa digunakan melalui fungsi OnGUI
  3. Saya pengguna Unity yang belum berpengalaman

Dengan alasan-alasan diatas  maka awalnya saya memikirkan penggunaan dua buah kamera. Dimana kamera utama berfungsi sebagai character controller sedangkan kamera kedua baru aktif jika pengguna menekan salah satu tombol di keyboard. Nah, menu akan diletakkan di kamera dua ini.
Tetapi setelah beberapa kali mencoba dan hasilnya tidak seperti yang saya harapkan, akhirnya saya mencari ide lain.

Solusi akhir:
Akhirnya saya tidak menggunakan dua kamera untuk menampilkan menu. Hanya memanfaatkan nilai suatu variabel integer yang nilainya akan berubah ketika pengguna menekan salah satu tombol keyboard.

var i:int;

function Start()
{
    i=1;
  }

Ketika fungsi Start berjalan, nilai i adalah 1. Kemudian di fungsi Update, nilai i akan diubah ketika pengguna menekan tombol keyboard, disini saya menggunakan tombol Space (spasi).
 function Update(){

if(Input.GetKeyDown(“space”))
{
   i=2;
}

else if(Input.GetKeyDown(“b”))
{
    i=1;
}

}

Ketika nilai berubah maka fungsi untuk menampilkan menu akan dipanggil.

function OnGUI()
{
    if (i==2)
   {
       displayMyGUI();
    }
}

Tampilan menu dijabarkan di dalam fungsi displayMyGUI() dimana kodenya tidak ditampilkan disini. Selanjutnya kenakan script ini sebagai component dari suatu game object kosong di dalam scene. It’s working fine but script ini masih terlihat agak bertele-tele, masih dapat diperbaiki lagi….Atau mungkin ada ide lain?

Thanks to stufi1983 atas idenya.

Leave a comment

Your email address will not be published. Required fields are marked *