Buat ScriptableObjects di Unity

ScriptableObject di Unity adalah tipe kelas khusus yang memungkinkan pembuatan objek berbasis data yang dapat digunakan kembali. Ini biasanya digunakan untuk menyimpan dan mengelola data game, konfigurasi, dan pengaturan, tetapi juga dapat digunakan untuk berbagai tujuan, seperti mengelola pengaturan game, membuat sistem berbasis data, menentukan kemampuan karakter, menyimpan dialog atau informasi pencarian, dll. Ini memberikan cara yang fleksibel dan efisien untuk mengatur dan mengelola data dalam proyek Unity.

Keuntungan utama ScriptableObjects adalah mereka menyediakan cara untuk membuat wadah data yang dapat dengan mudah dibagikan dan digunakan kembali di beberapa contoh skrip. Mereka dapat dianggap sebagai "blueprints" untuk membuat instance tipe data tertentu. Dimungkinkan untuk membuat beberapa instance ScriptableObject dan mengubah datanya secara independen.

Buat Objek Scriptable

ScriptableObject dapat dibuat di editor Unity dan disimpan sebagai aset dalam proyek. Tidak seperti skrip MonoBehaviour, ScriptableObject tidak dilampirkan ke GameObject dalam adegan tetapi dapat direferensikan dan digunakan oleh skrip lain.

Untuk membuat ScriptableObject, ikuti langkah-langkah di bawah ini:

  • Di editor Unity, klik kanan di jendela Proyek dan navigasikan ke "Create -> C# ScriptableObject".
  • Berikan nama yang bermakna dan buka skrip di editor kode pilihan.

Mendefinisikan kelas ScriptableObject:

  • Dalam skrip, mewarisi dari kelas ScriptableObject.
  • Tentukan bidang atau properti publik untuk mewakili data yang akan disimpan di ScriptableObject.
using UnityEngine;

[CreateAssetMenu(fileName = "NewData", menuName = "MyGame/ScriptableObject")]
public class MyScriptableObject : ScriptableObject
{
    public string dataName;
    public int dataValue;
}

Pada contoh di atas, kita mendefinisikan kelas ScriptableObject dengan dua kolom publik: 'dataName (string)' dan 'dataValue (int)'.

Menyesuaikan ScriptableObject di Inspektur:

  • Gunakan atribut seperti '[SerializeField]' untuk mengekspos bidang tertentu ke Unity Inspektur untuk dimodifikasi sambil menjaga bidang tersebut tidak dapat diakses dari skrip yang akan menggunakan ScriptableObject tersebut.
using UnityEngine;

[CreateAssetMenu(fileName = "NewData", menuName = "MyGame/ScriptableObject")]
public class MyScriptableObject : ScriptableObject
{
    [SerializeField]
    private string dataName;

    [SerializeField]
    private int dataValue;
}

Membuat instance ScriptableObjects:

  • Di editor Unity, klik kanan di jendela Proyek dan pilih "Create" untuk membuat instance ScriptableObject.
  • Sesuaikan data instance yang dibuat di Inspektur.

Mengakses data ScriptableObject dari skrip lain:

  • Dalam skrip MonoBehaviour atau skrip lainnya, buat bidang publik atau serial dari tipe ScriptableObject dan tetapkan dalam tampilan Inspektur.
using UnityEngine;

public class MyBehaviour : MonoBehaviour
{
    public MyScriptableObject myData;
}
  • Data dari instance ScriptableObject kemudian dapat diakses melalui bidang yang ditetapkan.
using UnityEngine;

public class MyBehaviour : MonoBehaviour
{
    public MyScriptableObject myData;

    private void Start()
    {
        Debug.Log("Data Name: " + myData.dataName);
        Debug.Log("Data Value: " + myData.dataValue);
    }
}

Kesimpulan

ScriptableObjects adalah alat serbaguna untuk mengelola dan mengatur data dalam proyek game. Dengan membuat wadah data yang dapat digunakan kembali dan disesuaikan, ScriptableObjects menawarkan cara yang fleksibel dan efisien untuk menyimpan konfigurasi, pengaturan, dan informasi non-spesifik instance lainnya. Dengan kemampuan untuk membuat beberapa instance dari ScriptableObject dan memodifikasi datanya secara mandiri, membuat sistem berbasis data, mengelola pengaturan game, menentukan kemampuan karakter, menyimpan dialog atau informasi pencarian, dan banyak lagi menjadi mudah. Memanfaatkan ScriptableObjects meningkatkan kegunaan kembali, pemeliharaan, dan skalabilitas proyek Unity, yang pada akhirnya menyederhanakan proses pengembangan dan memberdayakan penciptaan game yang lebih kuat dan dinamis.

Artikel yang Disarankan
Membuat Objek Interaktif dalam Unity
Menerapkan Interaksi Kinetik dalam Kesatuan
Membuka Laci dan Lemari dengan Kunci Tertentu dalam Kesatuan
Sistem Pick and Drop Tanpa Inventaris dalam Unity
Menambahkan Entri Pemain ke Mobil di Unity
Menggunakan Pengontrol Animator Runtime di Unity
Membuat Game Puzzle di Unity