[Unity] Menyimpan Variabel sebagai GameObject vs. sebagai Transform

deegeedow

Muhammad Fahmi Irfan

Posted on April 13, 2023

[Unity] Menyimpan Variabel sebagai GameObject vs. sebagai Transform

Cuplikan Tutorial dari Saluran Youtube Code Monkey

Dilema penentuan tipe data saat mendeklarasikan suatu variabel merupakan hal yang lumrah terjadi terutama bagi pemrogram-pemrogram awam seperti saya. Hal ini juga terjadi saat saya menonton tutorial pembuatan sistem shop sederhana pada Unity oleh Code Monkey.

Selama ini, saya selalu menyimpan game object dengan tipe GameObject. Pada tutorial tersebut, narasumber menggunakan Transform untuk menyimpan game object container dan template untuk shop item-nya, yang tertera pada cuplikan kode berikut.

public class UI_Shop : MonoBehaviour {
    private Transform container;
    private Transform shopItemTemplate;

    ...
}
Enter fullscreen mode Exit fullscreen mode

Saat berselancar di internet, rasanya seperti tidak ada perbedaan yang signifikan antara penggunaan Transform dan GameObject, namun setelah merenung beberapa saat, saya menemukan alasan di balik penggunaan Transform tersebut, dan mungkin dapat menyimpulkan kapan penggunaan Transform lebih baik dibandingkan harus menyimpan sebagai GameObject.

1. Lebih Sering Mengakses Anak dari Objek yang Disimpan

Untuk mengakses anak dari suatu game object, Unity telah menyediakan method Transform.Find, sedangkan method GameObject.Find sendiri digunakan untuk mencari game object tertentu di scene tersebut. Dengan begitu, penggunaan Transform lebih efisien dibandingkan GameObject pada kasus ini.

Hal ini menjelaskan pemilihan Transform pada variabel container pada cuplikan gambar di atas, di mana container digunakan untuk mengakses anaknya yang kemudian disimpan pada variabel shopItemTemplate.

2. Lebih Sering Mengakses atau Mengubah Aspek Transform pada Game Object

Pada kasus ini, jelas bahwa penggunaan Transform lebih menguntungkan daripada GameObject. Dengan menggunakan GameObject, ada cukup banyak waktu yang digunakan untuk memanggil GameObject.transform, ditambah kode yang tidak lebih rumit dibaca dibandingkan langsung mereferensikan variabel sebagai Transform.

3. Preferensi dan Konvensi

Sebenarnya, ada hal yang lebih penting dibandingkan keberjalanan kode yang sangat efisien dari segi waktu dan memori. Hal tersebut ialah maintainability. Untuk membuat kode yang mudah di-maintain, diperlukan sebuah konvensi/kesepakatan antar pemrogram. Hal ini dikarenakan setiap pemrogram memiliki preferensi yang berbeda-beda, sehingga harus ada satu ketentuan dalam sebuah projek agar kode yang dibuat mudah di-maintain. Hal ini yang (sepertinya) menjadi alasan utama penggunaan referensi GameObject atau Transform ketika menyimpan sebuah data game object.

Referensi

Simple Shop in Unity -- Code Monkey
Instantiate as GameObject vs Transform -- StackOverflow
Find Child GameObject -- StackOverFlow
Transform vs GameObject -- Unity Forum
Transform.Find
GameObject.Find

💖 💪 🙅 🚩
deegeedow
Muhammad Fahmi Irfan

Posted on April 13, 2023

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related