Dalam kesempatan kali ini kita akan membahas seberapa pentingkah penggunaan UID di Construct 2/3.
Pertama-tama kita cari tahu dulu apa itu UID? Menurut situs resminya, UID atau Unique ID merupakan sebuah kode unik yg membedakan setiap objek yang ada di construct. UID ini berupa nomor yg dimulai dari 0 dan akan terus bertambah 1 seiring objek baru ditambahkan.
Permasalahan
UID ini sering digunakan karena ke-praktisannnya. Kita ambil contoh jika kita mau membuat sebuah form login, paling sedikit yang kita butuhkan adalah 2 buah textbox, yaitu untuk username dan password. Untuk efisiensi, kita hanya menambahkan 1 buah Textbox ke project lalu meng-copy paste nya menjadi 2. Bedakan keduanya dengan isi placeholder yang berbeda.
Untuk mengambil kedua nilai diatas terdapat berbagai macam cara, salah satunya yaitu menggunakan UID yang kita bahas diatas. Cukup lihat UID dari kedua textbox diatas dan kita pakai kondisi Pick by Unique ID maka kita akan mendapatkan nilai yang kita inginkan secara akurat.
Cara diatas sangat bisa dilakukan karena sistem akan memilih terlebih dahulu textbox dengan UID yang sesuai lalu melakukan action disebelah kanan nya.
Namun, taukah kamu kalau ternyata Unique ID ini dapat tiba-tiba berubah tanpa sepengetahuan kita?
Hal tersebut terbukti ketika saya sedang mengerjakan salah satu proyek yang terbilang cukup besar. Jumlah objek yang ada lebih dari 200 dan UID yang terbuat sekitar 2000+ (karena memang terdiri dari banyak level). Saat itu saya sedang melakukan testing seperti biasa dan ntah mengapa beberapa button yang semula berfungsi mendadak tidak berfungsi.
Setelah cek sana sini tidak ada logika yang salah, sampai akhirnya saya cek kondisi saat menekan button nya, disana ada kondisi Pick by Unique ID dengan value sekian, dan ketika saya cek objek tersebut pada layout ternyata button yang dimaksud tidak memiliki Unique ID tersebut!
Saya pun segera merubah kondisinya menjadi Unique ID yang ada pada button, namun setelah dipikir-pikir dan takut akan terjadi hal yang sama saya pun mengubah logika kondisi nya.
Solusi
Sebenarnya ada banyak cara untuk mengakali permasalahan diatas, salah satu nya yang paling mudah (dan jangan ditiru) adalah membuat objek yang sama berulang-ulang, misalnya seperti gambar dibawah ini :
Sebenarnya kalau untuk textbox tidak terlalu masalah, yang jadi masalah adalah jika objek nya berupa sprite, jika sprite yang sama/sifatnya hampir sama di copy-paste dengan tujuan diatas itu baru masalah.
Solusi lain yang lebih baik adalah dengan menambahkan instance variable. Misalkan kita tambahkan instance variable bernama tipe dan mengisi value yang berbeda di setiap textbox.
Cara diatas relatif lebih aman jika dibandingkan dengan 2 cara sebelumnya.
Kesimpulan
Penggunakan kondisi Pick by Unique ID sebenarnya sah sah saja namun harap perhatikan berbagai risiko yang akan datang. Jika memang dikira akan aman-aman saja sih tidak apa-apa, namun jika khawatir hal yang saya alami juga terjadi pada kalian, lebih baik ubah kondisi Pick by Unique ID sesuai solusi diatas.
NB : Sampai saat ini saya belum menemukan penyebab mengapa UID yang ada pada project saya berubah, jika nanti saya menemukan penyebabnya atau jika kalian tahu penyebabnya silahkan komentar di post ini dan akan saya update.