Study
Luau

Attribute & Tag (CollectionService Dasar)

Penjelasan

Attribute adalah cara menyimpan data kustom langsung pada sebuah Instance tanpa perlu membuat objek anak tambahan, diakses dengan `:SetAttribute(nama, nilai)` dan `:GetAttribute(nama)`. Ini praktis untuk data sederhana seperti level musuh atau harga item yang menempel pada objek tertentu. `CollectionService` memungkinkan pengelompokan banyak Instance dengan "tag" tanpa harus menaruh semuanya dalam satu folder — cocok untuk kasus seperti menandai semua Part yang termasuk "Berbahaya" walau tersebar di berbagai tempat dalam hierarki, lalu mengambil semuanya sekaligus dengan `CollectionService:GetTagged("NamaTag")`.

Contoh Konsep

local CollectionService = game:GetService("CollectionService")

local musuh = workspace:FindFirstChild("Musuh1")
musuh:SetAttribute("Level", 5)
musuh:SetAttribute("NamaMusuh", "Goblin")

print(musuh:GetAttribute("Level"))

-- Menandai objek dengan tag
CollectionService:AddTag(musuh, "Berbahaya")

-- Mengambil semua objek dengan tag tertentu
local semuaBerbahaya = CollectionService:GetTagged("Berbahaya")
for _, objek in ipairs(semuaBerbahaya) do
    print(objek.Name)
end

Praktikum

Beri attribute "HP" bernilai 100 pada sebuah Part bernama Musuh, tandai dengan tag "MusuhAktif" via CollectionService, lalu ambil dan cetak semua objek bertag tersebut.

Editor Latihan

Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.

Tips

Gunakan attribute untuk data sederhana bertipe primitif (angka, string, boolean); untuk struktur data kompleks (tabel bersarang), tetap lebih baik disimpan di ModuleScript atau server-side biasa.