Instance
*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.
Instance adalah kelas dasar untuk semua kelas dalam hierarki kelas Roblox yang dapat menjadi bagian dari pohon DataModel.
Tidak mungkin untuk langsung membuat objek akar Instance , tetapi konstruktor khusus Instance.new() membuat objek melalui kode, mengambil nama kelas sebagai parameter dan mengembalikan objek yang dibuat.
Rangkuman
Properti
Menentukan apakah Instance dan keturunannya dapat diklon menggunakan Instance:Clone() , dan dapat disimpan/dipublikasikan.
Set kemampuan yang diizinkan untuk digunakan untuk skrip di dalam kontainer ini.
Pengenal tidak unik dari Instance.
Menentukan orangtua hierarkis dari Instance .
Properti deprecated yang digunakan untuk melindungi objek CoreGui .
Mengubah instansi menjadi wadah berpasir.
Pengenal unik untuk kejadian.
Metode
Menerapkan tag ke kejadian.
Fungsi ini menghancurkan semua anak instansi.
Buat salinan instansi dan semua keturunannya, mengabaikan instansi yang tidak Archivable .
Atur properti Instance.Parent ke nil , mengunci properti Instance.Parent , memutus semua koneksi, dan memanggil Destroy() pada semua anak.
Kembalikan nenek moyang pertama dari Instance yang Instance.Name sama dengan nama yang diberikan.
Kembalikan nenek moyang pertama dari Instance yang Object.ClassName sama dengan kelas yang diberikan.
Kembalikan nenek moyang pertama dari Instance untuk siapa Object:IsA() kembali benar untuk kelas yang diberikan.
Kembalikan anak pertama dari Instance yang ditemukan dengan nama yang diberikan.
Kembalikan anak pertama dari Instance yang ClassName sama dengan nama kelas yang diberikan.
Kembalikan anak pertama dari Instance untuk siapa Object:IsA() kembali benar untuk kelas yang diberikan.
Kembalikan keturunan pertama yang ditemukan dengan Instance.Name yang diberikan.
Kembalikan Actor yang terkait dengan Instansi, jika ada.
Kembalikan nilai yang telah ditugaskan ke nama atribut yang diberikan.
Kembalikan acara yang terbakar saat atribut yang diberikan berubah.
Kembalikan kamus atribut kejadian.
Kembalikan array yang berisi semua anak kejadian.
Kembalikan string terkode dari ID debug yang digunakan secara internal oleh Roblox.
Kembalikan array yang berisi semua keturunan kejadian.
Kembalikan string yang menjelaskan leluhur kejadian.
Mendapatkan array dari semua tag yang diterapkan ke kejadian.
Periksa apakah instansi memiliki tag yang diberikan.
Kembalikan benar jika Instance adalah leluhur dari keturunan yang diberikan.
Kembalikan true jika Instance adalah keturunan dari leluhur yang diberikan.
Kembalikan true jika nilai yang disimpan dalam properti yang ditentukan tidak default.
Menghapus tag dari kejadian.
Atur atribut dengan nama yang diberikan ke nilai yang diberikan.
Kembalikan anak dari Instance dengan nama yang diberikan. Jika anak tidak ada, itu akan menghasilkan thread saat ini sampai itu terjadi.
Acara
Memicu ketika properti Instance.Parent dari objek atau salah satu leluhurnya diubah.
Memicu kebakaran setiap kali atribut diubah pada Instance.
Api setelah objek diberikan kepada orangtua ini Instance .
Api setelah anak dihapus dari ini Instance .
Api setelah keturunan ditambahkan ke Instance .
Api segera sebelum keturunan dari Instance dihapuskan.
Api segera sebelum (atau ditunda sampai setelah) instansi dihancurkan melalui Instance:Destroy() .
Properti
Archivable
Properti ini menentukan apakah instansi harus dimasukkan saat pengalaman dipublikasikan atau disimpan, atau saat Clone() dipanggil pada salah satu leluhur kejadian.Memanggil langsung pada instans akan mengembalikan jika instans itu tidak .
Menyalin objek di Studio menggunakan opsi Duplikasi atau Salin / Tempelkan akan mengabaikan properti sendiri Archivable dan mengatur Archivable untuk true untuk salinan.
local part = Instance.new("Part")print(part:Clone()) --> Partpart.Archivable = falseprint(part:Clone()) --> nil
Capabilities
Set kemampuan yang diizinkan untuk digunakan untuk skrip di dalam kejadianini.Untuk kemampuan berlaku, Instance.Sandboxed properti harus diaktifkan.
Properti ini digunakan oleh fitur eksperimental. Lihat kemampuan skrip untuk rincian lebih lanjut.
Name
Pengenal tidak unik dari Instance.Nama digunakan untuk menjaga hierarki objek tertata, serta memungkinkan skrip mengakses objek tertentu.Nama instance tidak boleh melebihi 100 karakter dalam ukuran.
Nama objek sering digunakan untuk mengakses objek melalui hierarki model data menggunakan metode berikut:
local Workspace = game:GetService("Workspace")local baseplate = Workspace.Baseplatelocal baseplate = Workspace["Baseplate"]local baseplate = Workspace:FindFirstChild("BasePlate")
Untuk membuat objek dapat diakses menggunakan operator dot ( . ), namanya harus dimulai dengan underscore atau huruf, dan sisa namanya hanya dapat berisi huruf, angka, atau underscore (tidak ada karakter khusus lainnya).Jika nama objek tidak mengikuti syntax ini, itu tidak akan dapat diakses menggunakan operator dot dan Luau tidak akan menafsirkan namanya sebagai identifikasi.
Jika lebih dari satu objek dengan nama yang sama adalah saudara, setiap upaya untuk mengindeks objek dengan nama itu hanya akan mengembalikan salah satu objek, mirip dengan Instance:FindFirstChild() , tetapi tidak selalu objek yang diinginkan.Jika objek spesifik perlu diakses melalui kode, disarankan untuk memberinya nama unik atau jaminan bahwa tidak ada saudara laki-lakinya yang berbagi nama yang sama.
Lihat juga Instance:GetFullName() untuk mendapatkan nama lengkap termasuk hierarki objek.
Parent
Properti Parent menentukan orangtua hierarkis dari Instance .Terminologi berikut umumnya digunakan saat berbicara tentang bagaimana properti ini diatur:
Sebuah objek adalah anak dari, atau adalah diwarisi ke , objek lain ketika diatur ke objek itu.
Keturunan dari sebuah adalah anak-anak dari objek itu, ditambah keturunan anak-anak juga.
Leluhur dari sebuah adalah semua objek yang instansi adalah turunannya.
Ini berasal dari properti Parent yang banyak anggota API lainnya mendapatkan nama mereka, seperti GetChildren() dan FindFirstChild().Properti ini juga digunakan untuk mengelola apakah objek ada di pengalaman atau perlu dihapus.Selama orangtua objek ada di dalam DataModel, disimpan dalam variabel, atau di referensikan oleh properti objek lain, objek tetap ada di pengalaman; jika tidak, objek akan dihapus secara otomatis.
Memanggil akan mengatur dari dan semua keturunannya menjadi , dan juga mengunci properti .Kesalahan terjadi saat menetapkan Parent dari objek yang hancur.
Objek baru yang dibuat menggunakan Instance.new() tidak akan memiliki orangtua, dan biasanya tidak akan terlihat atau berfungsi sampai satu atur.
Replikasi Objek
Sebuah objek yang dibuat oleh server tidak akan direplikasi ke klien sampai diberikan kepada beberapa objek yang direplikasi.Saat membuat objek dan mengatur banyak properti, disarankan untuk mengatur properti Parent terakhir .Ini memastikan objek direplikasi sekali, bukan mereplikasi banyak perubahan properti.
local Workspace = game:GetService("Workspace")-- Tetapkan orangtua kejadianbaru terakhir (disarankan)local part = Instance.new("Part")part.Position = Vector3.new(0, 10, 0)part.Parent = Workspace
Namun, jika membagi bagian ke Model orangtua yang belum ditetapkan, membagi setiap bagian ke model itu diterima karena model tidak akan direplikasi.
RobloxLocked
Properti ini digunakan untuk melindungi objek di layanan CoreGui dari diubah oleh pengguna dengan cara yang tidak berwenang.Ini telah dihapus dan tidak melakukan apa pun.
Sandboxed
Mengubah instansi menjadi kontainer sandbox , fitur eksperimental yang membatasi tindakan yang dapat dilakukan oleh skrip di dalam kontainer tertentu. Lihat kemampuan skrip untuk detail lebih lanjut.
Metode
AddTag
Metode ini menerapkan tag ke kejadian, tanpa efek jika tag sudah diterapkan.Berhasil menambahkan tag akan menyala sinyal yang dibuat oleh CollectionService:GetInstanceAddedSignal() dengan tag yang diberikan.
Peringatan
Tag instansi yang ditambahkan sisi klien akan dihapus jika server kemudian menambahkan atau menghapus tag pada instansi itu karena server menyalin semua tag bersama-sama dan menghapus tag sebelumnya.
Saat menandai kejadian, umumnya beberapa sumber daya digunakan untuk memberikan tag fungsionalnya, misalnya koneksi acara atau tabel.Untuk mencegah kebocoran memori, ide bagus adalah membersihkan ini (putus koneksi, atur ke nil , dll.) ketika tidak lagi dibutuhkan untuk tag.Lakukan ini saat menelepon Instance:RemoveTag() , menelepon Instance:Destroy() , atau dalam fungsi yang terhubung ke sinyal yang dikembalikan oleh CollectionService:GetInstanceRemovedSignal() .
Parameter
Memberikan nilai
ClearAllChildren
Fungsi ini menghancurkan semua anak dan keturunan kejadian.
Jika Anda tidak ingin menghancurkan semua anak-anak dan keturunan, gunakan Instance:GetChildren() atau Instance:GetDescendants() untuk melingkar melalui anak-anak / keturunan itu dan pilih apa yang harus dihancurkan.Sebagai contoh, sampel kode berikut akan menghancurkan semua BaseParts turun dari sebuah Model :
local Workspace = game:GetService("Workspace")local model = Workspace:FindFirstChild("TestModel")for _, descendant in model:GetDescendants() doif descendant:IsA("BasePart") thendescendant:Destroy()endend
Memberikan nilai
Contoh Kode
This example creates a Part and adds a few sparkle objects to the part. Then it calls Part:ClearAllChildren() to remove all of the children.
local part = Instance.new("Part")
-- add some sparkles
for _ = 1, 3 do
local sparkles = Instance.new("Sparkles")
sparkles.Parent = part
end
print("Part has", #part:GetChildren(), "children")
--> Part has 3 children
part:ClearAllChildren()
print("Part has", #part:GetChildren(), "children")
--> Part has 0 children
Clone
Clone() membuat salinan instansi dan semua keturunannnya, mengabaikan semua instansi yang tidak Archivable .Salinan instansi akar dikembalikan oleh metode ini dan Parent nya diatur ke nil .Perhatikan bahwa jika instance itu sendiri memiliki Archivable diatur ke false , fungsi ini akan kembali nil .
Jika properti referensi seperti ObjectValue.Value ditetapkan di kejadianyang diklon, nilai properti salinan tergantung pada nilai asli:
- Jika properti referensi merujuk pada instansi yang telah juga diklon, salinan akan merujuk pada salinan.
- Jika properti referensi merujuk ke objek yang tidak tidak diklon, nilai yang sama dipertahankan dalam salinan.
Memberikan nilai
Contoh Kode
Demonstrates cloning a model using Instance:Clone().
local Workspace = game:GetService("Workspace")
-- Get a reference to an existing object
local model = script.Parent.Model
-- Create a clone of the model
local clone = model:Clone()
-- Move the clone so it's not overlapping the original model
clone:PivotTo(model.PrimaryPart.CFrame - (Vector3.xAxis * 10))
-- Add the clone to the Workspace
clone.Parent = Workspace
Destroy
Atur properti Instance.Parent ke nil , mengunci properti Instance.Parent , memutus semua koneksi, dan memanggil Destroy() pada semua anak.Fungsi ini adalah cara yang benar untuk menyingkirkan objek yang tidak lagi diperlukan.
Menyingkirkan objek yang tidak diperlukan penting, karena objek dan koneksi yang tidak perlu di tempat menggunakan memori yang dapat menyebabkan masalah kinerja serius seiring waktu.
Sebagai praktik terbaik setelah memanggil Destroy() pada objek, atur variabel apa pun yang merujuk pada objek (atau keturunannnya) ke nil .Ini mencegah kode Anda mengakses apa pun yang berhubungan dengan objek.
local part = Instance.new("Part")part.Name = "Hello, world"part:Destroy()-- Jangan lakukan ini:print(part.Name) --> "Halo, dunia"-- Lakukan ini untuk mencegah baris di atas tidak berfungsi:part = nil
Setelah Instance dihancurkan dengan metode ini, tidak dapat digunakan kembali karena properti Instance.Parent terkunci.Untuk sementara menghapus objek alih-alih menghancurkannya, atur Parent ke nil.Sebagai contoh:
local Workspace = game:GetService("Workspace")object.Parent = niltask.wait(2)object.Parent = Workspace
Untuk menghancurkan objek setelah jumlah waktu tertentu, gunakan Debris:AddItem() .
Memberikan nilai
Contoh Kode
Demonstrates destroying a Part using the Instance:Destroy() function.
This function is the correct way to dispose of objects that are no longer required.
local part = script.Parent.Part
part:Destroy()
FindFirstAncestor
Kembalikan nenek moyang pertama dari Instance yang Instance.Name sama dengan nama yang diberikan.
Fungsi ini bekerja ke atas, artinya dimulai pada langsung instansi Instance.Parent dan bekerja menuju DataModel .Jika tidak ada leluhur yang cocok ditemukan, ia kembalikan nil .
Potongan kode berikut akan menemukan nenek moyang pertama dari objek bernama Car .
local car = object:FindFirstAncestor("Car")
Untuk varian fungsi ini yang menemukan leluhur kelas tertentu, silakan lihat Instance:FindFirstAncestorOfClass() dan Instance:FindFirstAncestorWhichIsA() .
Parameter
The Instance.Name untuk dicari.
Memberikan nilai
FindFirstAncestorOfClass
Kembalikan nenek moyang pertama dari Instance yang Object.ClassName sama dengan kelas yang diberikan.
Fungsi ini bekerja ke atas, artinya dimulai pada langsung instansi Instance.Parent dan bekerja menuju DataModel .Jika tidak ada leluhur yang cocok ditemukan, ia kembalikan nil .
Penggunaan umum dari fungsi ini adalah menemukan Model milik BasePart . Misalnya:
local model = part:FindFirstAncestorOfClass("Model")
Fungsi ini adalah variasi dari Instance:FindFirstAncestor() yang memeriksa properti Object.ClassName bukan Instance.Name.Instance:FindFirstAncestorWhichIsA() juga ada, menggunakan metode Object:IsA() untuk menghormati warisan kelas.
Parameter
The Object.ClassName untuk dicari.
Memberikan nilai
FindFirstAncestorWhichIsA
Kembalikan nenek moyang pertama dari Instance untuk siapa Object:IsA() kembali benar untuk kelas yang diberikan.
Fungsi ini bekerja ke atas, artinya dimulai pada langsung instansi Instance.Parent dan bekerja menuju DataModel .Jika tidak ada leluhur yang cocok ditemukan, ia kembalikan nil .
Tidak seperti Instance:FindFirstAncestorOfClass() , fungsi ini menggunakan Object:IsA() yang menghormati warisan kelas. Misalnya:
print(part:IsA("Part")) --> trueprint(part:IsA("BasePart")) --> trueprint(part:IsA("Instance")) --> true
Oleh karena itu, sampel kode berikut akan mengembalikan nenek moyang pertama BasePart , terlepas dari apakah itu adalah WedgePart , MeshPart atau Part .
local part = object:FindFirstAncestorWhichIsA("BasePart")
Lihat juga Instance:FindFirstAncestor() .
Parameter
The Object.ClassName untuk dicari.
Memberikan nilai
FindFirstChild
Kembalikan anak pertama dari Instance dengan nama yang diberikan, atau nil jika tidak ada anak seperti itu.Jika argumen opsional recursive opsional adalah true , fungsi ini mencari semua keturunan daripada hanya anak-anak langsung dari Instance .
Memeriksa Keberadaan Objek
FindFirstChild() diperlukan jika Anda perlu memverifikasi objek ada sebelum melanjutkan.Mencoba mengindeks anak dengan nama menggunakan operator dot memunculkan kesalahan jika anak tidak ada.
local Workspace = game:GetService("Workspace")-- Kesalahan baris berikut jika bagian tidak ada di ruang kerjaWorkspace.Part.Transparency = 0.5
Gunakan FindFirstChild() untuk memeriksa pertama untuk Part , kemudian gunakan pernyataan if untuk menjalankan kode yang membutuhkannya.
local Workspace = game:GetService("Workspace")local part = Workspace:FindFirstChild("Part")if part thenpart.Transparency = 0.5end
Menemukan Anak yang Nama Nya Sesuai dengan Properti
Terkadang Name dari objek adalah sama dengan properti dari objeknya Parent .Saat menggunakan operator dot, properti memiliki prioritas lebih tinggi atas anak-anak jika mereka berbagi nama.
Dalam contoh berikut, Folder yang disebut "Warna" ditambahkan ke Part , yang juga memiliki properti Part.Color. Part.Color merujuk pada Color3 , bukan Folder.
local part = Instance.new("Part")local folder = Instance.new("Folder")folder.Name = "Color"folder.Parent = partlocal c = part.Color --> Warna 3local c2 = part:FindFirstChild("Color") --> The Folder
Manfaat menggunakan FindFirstChild() dengan cara ini adalah bahwa pengenalan properti baru tidak memberikan risiko pada kode Anda.
Catatan Kinerja
FindFirstChild() membutuhkan waktu sekitar 20% lebih lama dari menggunakan operator dot dan hampir 8 kali lebih lama dari sekadar menyimpan referensi ke objek.Oleh karena itu, Anda harus menghindari memanggilnya dalam kode bergantung pada kinerja seperti di loop ketat atau fungsi yang terhubung ke RunService.Heartbeat dan RunService.PreRender .Sebagai gantinya, simpan hasil dalam variabel, atau pertimbangkan untuk menggunakan ChildAdded atau WaitForChild() untuk mendeteksi kapan anak dari nama tertentu menjadi tersedia.
Parameter
The Instance.Name yang harus dicari.
Apakah pencarian harus dilakukan secara berulang atau tidak.
Memberikan nilai
Contoh Kode
The below would look in Workspace for an object name "Brick". If found, it will change the name of the object to "Foo".
local found = workspace:FindFirstChild("Brick")
if found then
found.Name = "Foo"
end
FindFirstChildOfClass
Kembalikan anak pertama dari Instance yang ClassName sama dengan yang diberikan className .Tidak seperti Instance:FindFirstChildWhichIsA() , fungsi ini hanya mengembalikan objek yang kelasnya cocok dengan className , mengabaikan warisan kelas.Jika anak yang cocok tidak ditemukan, fungsi ini akan mengembalikan nil .
Parameter
The Object.ClassName untuk dicari.
Memberikan nilai
Contoh Kode
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid
while not humanoid do
humanoid = character:FindFirstChildOfClass("Humanoid")
if not humanoid then
character.ChildAdded:Wait()
end
end
FindFirstChildWhichIsA
Kembalikan anak pertama dari Instance untuk siapa Object:IsA() kembali benar untuk kelas yang diberikan.
Jika tidak ada anak yang cocok ditemukan, fungsi ini返回 nil .Jika argumen recursif opsional benar, fungsi ini mencari semua keturunan daripada hanya anak-anak langsung dari Instance .
Tidak seperti Instance:FindFirstChildOfClass() , fungsi ini menggunakan Object:IsA() yang menghormati warisan kelas. Misalnya:
print(part:IsA("Part")) --> benarprint(part:IsA("BasePart")) --> benarprint(part:IsA("Instance")) --> true
Oleh karena itu, sampel kode berikut akan mengembalikan anak pertama BasePart , terlepas dari apakah itu adalah WedgePart , MeshPart atau Part .
local part = object:FindFirstChildWhichIsA("BasePart")
Pengembang yang mencari anak dengan nama, harus menggunakan Instance:FindFirstChild() sebagai gantinya.
Parameter
The Object.ClassName yang harus dicari.
Apakah pencarian harus dilakukan secara berulang atau tidak.
Memberikan nilai
FindFirstDescendant
Kembalikan keturunan pertama yang ditemukan dengan Instance.Name yang diberikan.
Metode ini dinonaktifkan dan tidak dapat digunakan.Untuk menemukan keturunan pertama dari kejadian, pertimbangkan menggunakan parameter recursive pada Instance:FindFirstChild() sebagai gantinya.
Parameter
The Instance.Name untuk dicari.
Memberikan nilai
GetActor
Jika Instance adalah Actor , maka Actor sendiri dikembalikan.Jika tidak, leluhur terdekatnya Actor dikembalikan.Jika tidak ada leluhur adalah Actor , hasilnya adalah nil .
Memberikan nilai
GetAttribute
Metode ini mengembalikan nilai yang telah ditugaskan ke nama atribut yang diberikan. Jika tidak ada atribut yang ditugaskan, nil dikembalikan.
Sebagai contoh, potongan kode berikut menetapkan dan kemudian mendapatkan nilai atribut kejadianInitialPosition:
local Workspace = game:GetService("Workspace")local part = Workspace.Partpart:SetAttribute("InitialPosition", part.Position)local initialPosition = instance:GetAttribute("InitialPosition")print(initialPosition)
Lihat Juga
- Instance:SetAttribute() yang mengatur atribut dengan nama yang diberikan ke nilai yang diberikan.
- Instance:GetAttributes() yang men返ikan kamus pasangan kunci-nilai untuk setiap atribut kejadian.
Parameter
Nama atribut yang diambil.
Memberikan nilai
Nilai yang telah ditugaskan ke nama atribut yang diberikan. Jika tidak ada atribut yang ditugaskan, nil dikembalikan.
GetAttributeChangedSignal
Fungsi ini mengembalikan peristiwa yang berperilaku persis seperti peristiwa Changed , kecuali bahwa itu hanya menembak ketika atribut tertentu berubah; secara efektif itu mirip dengan GetPropertyChangedSignal() tetapi untuk atribut.
Secara umum, ide yang baik adalah menggunakan metode ini alih-alih koneksi ke Changed dengan fungsi yang memeriksa nama atribut.Panggilan berikutnya ke metode ini pada objek yang sama dengan nama atribut yang sama mengembalikan peristiwa yang sama.
Contoh kode berikut mengembalikan sinyal yang memicu fungsi attributeChanged() ketika atribut bagian InitialPosition berubah:
local Workspace = game:GetService("Workspace")
local part = Workspace.Part
part:SetAttribute("InitialPosition", part.Position)
local function attributeChanged()
print("Attribute changed")
end
part:GetAttributeChangedSignal("InitialPosition"):Connect(attributeChanged)
Lihat juga Instance.AttributeChanged yang menembak setiap kali ada atribut yang diubah pada kejadian.
Parameter
Nama atribut yang ditentukan untuk mana sinyal perubahan dikembalikan.
Memberikan nilai
Sebuah peristiwa yang menembak ketika atribut yang diberikan berubah.
GetAttributes
Metode ini mengembalikan kamus pasangan kunci-nilai untuk setiap atribut di mana kunci adalah nama atribut dan nilainya adalah nilai non-nil .
Sebagai contoh, potongan kode berikut menampilkan atribut dan nilai kejadian:
local Workspace = game:GetService("Workspace")local part = Workspace.Partpart:SetAttribute("InitialPosition", part.Position)part:SetAttribute("CanUse", true)for name, value in part:GetAttributes() doprint(name .. " = " .. value)end
Lihat juga Instance:GetAttribute() yang men返ikan nilai yang telah ditugaskan ke nama atribut yang diberikan.
Memberikan nilai
Kamus pasangan string → varian untuk setiap atribut di mana string adalah nama atribut dan varian adalah nilai non-nol.
GetChildren
Kembalikan array (tabel berindeks numerik) yang berisi semua anak langsung kejadian, atau setiap Instance yang Parent sama dengan objek.배열 dapat diulang saat menggunakan loop for numerik atau umum:
local Workspace = game:GetService("Workspace")-- Contoh lop loop numeriklocal children = Workspace:GetChildren()for i = 1, #children dolocal child = children[i]print(child.Name .. " is child number " .. i)end
local Workspace = game:GetService("Workspace")-- Contoh lop loop umumlocal children = Workspace:GetChildren()for i, child in children doprint(child.Name .. " is child number " .. i)end
Anak-anak diurutkan berdasarkan urutan di mana properti Parent mereka ditetapkan ke objek.
Lihat juga fungsi GetDescendants.
Memberikan nilai
Sebuah array yang berisi anak-anak kejadian.
Contoh Kode
The below would print the name of all objects currently in Workspace when ran.
local children = workspace:GetChildren()
for i = 1, #children do
print(i, children[i].Name)
end
GetDebugId
Kembalikan string terkode dari ID debug yang digunakan secara internal oleh Roblox. Perhatikan bahwa:
- Item ini dilindungi. Mencoba menggunakannya di Script atau LocalScript akan menyebabkan kesalahan.
- ID debug adalah ID yang digunakan dalam proses debugging.Ini memungkinkan debugger untuk membaca setiap instruksi sebelum aplikasi memprosesnya.Semua objek di Roblox bertindak seperti proses dan setiap instruksi jalankan (atau 'kode') yang dapat di debug jika diperlukan.
- Ini bisa membantu untuk plugin yang perlu membedakan objek serupa dari satu sama lain (seperti objek yang berbagi nama yang sama).
Parameter
Lingkup panjang.
Memberikan nilai
String ID string.
Contoh Kode
print(workspace:GetDebugId()) --> 39FA_12
print(workspace:GetDebugId(10)) --> 39FA2FEF4D_12
print(workspace:GetDebugId(math.huge)) --> 12
GetDescendants
Metode objek ini mem返回 array yang berisi semua keturunan dari objek itu.Tidak seperti Instance:GetChildren() , yang hanya mengembalikan anak-anak langsung dari objek, metode ini menemukan setiap anak dari objek, setiap anak dari anak-anak itu, dan seterusnya.
Memberikan nilai
Sebuah array yang berisi keturunan kejadian.
Contoh Kode
GetDescendants is often used to do something to all the descendants that are a particular type of object. The code in this example uses GetDescendants and Instance:IsA() to find all of the parts in the workspace and turns them green.
local descendants = workspace:GetDescendants()
-- Loop through all of the descendants of the Workspace. If a
-- BasePart is found, the code changes that parts color to green
for _, descendant in pairs(descendants) do
if descendant:IsA("BasePart") then
descendant.BrickColor = BrickColor.Green()
end
end
GetFullName
Kembalikan string yang menjelaskan leluhur kejadian.String adalah koncatenasi dari Name objek dan leluhurnya, dipisahkan oleh periode.The DataModel ( game ) tidak dipertimbangkan.Sebagai contoh, Part di Workspace mungkin kembali Workspace.Part .
Ketika dipanggil pada Instance yang bukan keturunan dari DataModel , fungsi ini mempertimbangkan semua nenek moyang hingga dan termasuk yang paling atas tanpa Parent .
Fungsi ini berguna untuk pencatatan dan debugging.Anda tidak boleh mencoba memecahkan string yang dikembalikan untuk operasi yang berguna; fungsi ini tidak melarikan periode (atau simbol lain) dalam nama objek.Dengan kata lain, meskipun outputnya sering tampak menjadi identifikasi Luau yang valid, tidak dijamin.
Memberikan nilai
Contoh Kode
This code sample demonstrates the behavior of Instance:GetFullName(). It shows how the function behaves when called on an object not in the DataModel hierarchy, and it also shows how the return value does not escape special characters.
-- Create a simple hierarchy
local model = Instance.new("Model")
local part = Instance.new("Part")
part.Parent = model
local fire = Instance.new("Fire")
fire.Parent = part
print(fire:GetFullName()) --> Model.Part.Fire
model.Parent = workspace
print(fire:GetFullName()) --> Workspace.Model.Part.Fire
part.Name = "Hello, world"
print(fire:GetFullName()) --> Workspace.Model.Hello, world.Fire
This code sample re-implements the Instance:GetFullName() function in Lua.
local function getFullName(object)
local result = object.Name
object = object.Parent
while object and object ~= game do
-- Prepend parent name
result = object.Name .. "." .. result
-- Go up the hierarchy
object = object.Parent
end
return result
end
print(getFullName(workspace.Camera)) --> Workspace.Camera
GetStyledPropertyChangedSignal
Parameter
Memberikan nilai
GetTags
Metode ini mengembalikan array tag yang diterapkan pada instans yang diberikan, sebagai string.Anda dapat menambahkan tag di Studio di jendela Properti atau saat menjalankan dengan AddTag() .
Metode ini berguna ketika Anda ingin melakukan sesuatu dengan beberapa tag pada instan sekaligus.Namun, tidak efisien menggunakan metode ini untuk memeriksa keberadaan tag tunggal; sebagai gantinya, gunakan HasTag() untuk memeriksa tag khusus.
Memberikan nilai
HasTag
Metode ini mengembalikan true jika tag yang disediakan telah ditambahkan ke objek.Anda dapat menambahkan tag baik di Studio di jendela Properti atau saat menjalankan dengan AddTag().
Parameter
Memberikan nilai
IsAncestorOf
Kembalikan benar jika Instance adalah leluhur dari keturunan yang diberikan.
Sebuah Instance dianggap sebagai leluhur dari objek jika objeknya Instance.Parent atau salah satu dari orangtuanya Instance.Parent diatur ke Instance.
Lihat juga, Instance:IsDescendantOf() .
Parameter
Memberikan nilai
Contoh Kode
Demonstrates determining if one instance is the ancestor of another using Instance:IsAncestorOf()
Workspace and SpawnLocation are ancestors of the SpawnLocation's decal. Workspace is an ancestor of SpawnLocation.
SpawnLocation and its decal are descendants of Workspace, not ancenstors. Decal is a descendant to SpawnLocation, not an ancestor.
local Workspace = game:GetService("Workspace")
local spawnLocation = Workspace.SpawnLocation
local decal = spawnLocation.Decal
-- These statements are true
print(Workspace:IsAncestorOf(spawnLocation))
print(Workspace:IsAncestorOf(decal))
print(spawnLocation:IsAncestorOf(decal))
-- These statements are false
print(spawnLocation:IsAncestorOf(Workspace))
print(decal:IsAncestorOf(Workspace))
print(decal:IsAncestorOf(spawnLocation))
IsDescendantOf
Kembalikan true jika Instance adalah keturunan dari leluhur yang diberikan.
Perhatikan bahwa IsDescendantOf() tidak dapat digunakan dengan parameter nil untuk memeriksa apakah objek telah dihapus.
Lihat juga Instance:IsAncestorOf() .
Parameter
Memberikan nilai
Contoh Kode
local part = Instance.new("Part")
print(part:IsDescendantOf(game))
--> false
part.Parent = workspace
print(part:IsDescendantOf(game))
--> true
part.Parent = game
print(part:IsDescendantOf(game))
--> true
IsPropertyModified
Kembalikan true jika nilai yang disimpan dalam properti yang ditentukan tidak default.Sebagai contoh, jika mengekspor properti Rotation dari sebuah TextLabel menunjukkan 0 , maka memanggil IsPropertyModified("Rotation") pada label akan mengembalikan false karena 0 adalah nilai default untuk TextLabel.Rotation .
Parameter
Memberikan nilai
Boolean menunjukkan apakah properti dimodifikasi.
RemoveTag
Metode ini menghapus tag dari kejadian.Ini tidak akan menyebabkan kesalahan jika objek tidak memiliki tag.Berhasil menghapus tag akan menyala sinyal yang dibuat oleh CollectionService:GetInstanceRemovedSignal() dengan tag yang diberikan.
Perhatikan bahwa ketika menandai kejadian, umumnya beberapa sumber daya digunakan untuk memberikan tag fungsionalitasnya, misalnya koneksi acara atau tabel.Untuk mencegah kebocoran memori, ide bagus adalah membersihkan ini (putus koneksi, atur ke nil , dll.) ketika tidak lagi dibutuhkan untuk tag.
Parameter
Memberikan nilai
ResetPropertyToDefault
Mengatur ulang properti ke nilai defaultnya.Sebagai contoh, memanggil ResetPropertyToDefault("Rotation") pada TextLabel adalah sama dengan mengatur Rotation ke 0 (nilai default properti).
Parameter
Memberikan nilai
SetAttribute
Metode ini menetapkan atribut dengan nama yang diberikan ke nilai yang diberikan.Jika nilai yang diberikan adalah nil , atribut akan dihapus, karena nil dikembalikan secara default.
Sebagai contoh, potongan kode berikut menetapkan atribut kejadianInitialPosition ke Vector3.new(0, 10, 0) :
local Workspace = game:GetService("Workspace")local part = Workspace.Partpart:SetAttribute("InitialPosition", Vector3.new(0, 10, 0))
Keterbatasan
Persyaratan dan batasan penamaan:
- Nama hanya boleh menggunakan karakter alfanumerik dan dasbor.
- Tidak ada ruang atau simbol unik yang diizinkan.
- String harus 100 karakter atau kurang.
- Nama tidak diperbolehkan untuk dimulai dengan RBX kecuali panggilan adalah skrip inti Roblox (ditahan untuk Roblox).
Saat mencoba untuk mengatur atribut ke ketikyang tidak didukung, kesalahan akan terjadi.
Lihat Juga
- Instance:GetAttribute() yang men返ikan nilai yang telah ditugaskan ke nama atribut yang diberikan.
- Instance:GetAttributes() yang men返ikan kamus pasangan kunci-nilai untuk setiap atribut kejadian.
Parameter
Nama attribute yang atur.
Nilai untuk mengatur atribut yang ditentukan ke.
Memberikan nilai
WaitForChild
Kembalikan anak dari Instance dengan nama yang diberikan.Jika anak tidak ada, itu akan menghasilkan thread saat ini sampai melakukannya.Jika parameter timeOut diberikan, metode ini akan kedaluwarsa setelah jumlah detik yang ditentukan dan kembali nil .
Penggunaan Utama
WaitForChild() sangat penting saat bekerja pada kode yang dijalankan oleh klien di dalam LocalScript .Mesin Roblox tidak menjamin waktu atau urutan di mana objek direplikasi dari server ke klien.Selain itu, jika pengalaman memiliki Workspace.StreamingEnabled diatur ke benar, BaseParts yang jauh dari karakter pemain mungkin tidak diputar ke klien, yang berpotensi menyebabkan kesalahan skrip saat mengindeks objek yang belum ada di klien.
Catatan
- Fungsi ini tidak menghasilkan jika anak dengan nama yang diberikan ada saat panggilan dilakukan.
- Instance:FindFirstChild() adalah alternatif yang lebih efisien untuk WaitForChild() untuk objek yang dianggap ada.
- Jika panggilan ke metode ini melebihi 5 detik tanpa kembali, dan tidak ada parameter timeOut yang telah ditentukan, peringatan akan dicetak ke output yang dapat dihasilkan thread tanpa batas waktu.
Parameter
The Instance.Name untuk dicari.
Paraмет waktu keluar opsional.
Memberikan nilai
Contoh Kode
The following code waits for an instance named "Part" to be added to Workspace.
local part = workspace:WaitForChild("Part")
print(part.Name .. " has been added to the Workspace")
Acara
AncestryChanged
Memicu ketika properti Instance.Parent dari objek atau salah satu leluhurnya diubah.
Acara ini mencakup dua parameter: merujuk pada yang sebenarnya telah diubah, sementara merujuk pada baru kejadianini.
Anda dapat menggunakan acara ini untuk melacak penghapusan instansi di Studio, seperti penghapusan manual di Explorer atau melalui plugin.Jika Anda perlu mendeteksi kapan instansi dihancurkan menggunakan Instance:Destroy() , gunakan acara Instance.Destroying sebagai gantinya.
Parameter
The Instance yang Instance.Parent telah diubah.
The new Instance.Parent dari Instance yang Instance.Parent telah diubah.
Contoh Kode
Demonstrates detecting changes to an instance's ancestry by connecting to the Instance.AncestryChanged event.
The ChangingPart's Parent is set to different values overtime. The parent of the part is the part's ancestor, so the Instance.AncestryChanged event will fire whenever it changes.
local Workspace = game:GetService("Workspace")
local redPart = script.Parent.RedPart
local bluePart = script.Parent.BluePart
local changingPart = script.Parent.ChangingPart
-- Change the color of changingPart based on it's Parent
local function onAncestryChanged(part: Part, parent: Instance)
if parent == redPart then
changingPart.Color = Color3.new(1, 0, 0)
elseif parent == bluePart then
changingPart.Color = Color3.new(0, 0, 1)
else
changingPart.Color = Color3.new(1, 1, 1)
end
print(`{part.Name} is now parented to {parent.Name}`)
end
changingPart.AncestryChanged:Connect(onAncestryChanged)
-- Set changingPart's Parent property to different instances over time
while true do
task.wait(2)
changingPart.Parent = redPart
task.wait(2)
changingPart.Parent = bluePart
task.wait(2)
changingPart.Parent = Workspace
end
AttributeChanged
Peristiwa ini terjadi setiap kali ada atribut yang diubah pada kejadian, termasuk saat atribut diatur ke nil .Nama atribut yang diubah dikirim ke fungsi terhubung.
Sebagai contoh, potongan kode berikut menghubungkan fungsi attributeChanged() ke api setiap kali salah satu atribut bagian berubah:
local Workspace = game:GetService("Workspace")
local part = Workspace.Part
local function attributeChanged(attributeName)
print(attributeName, "changed")
end
part.AttributeChanged:Connect(attributeChanged)
Lihat juga Instance:GetAttributeChangedSignal() yang men返ikan peristiwa yang menyala saat atribut tertentu berubah.
Parameter
Nama atribut yang telah diubah.
ChildAdded
Api setelah objek diberikan kepada orangtua ini Instance .
Catatan, saat menggunakan fungsi ini pada klien untuk mendeteksi objek yang dibuat oleh server, diperlukan untuk menggunakan Instance:WaitForChild() saat mengindeks keturunan objek ini.Ini karena objek dan keturunannnya tidak dijamin untuk mereplikasi dari server ke klien secara bersamaan.Sebagai contoh:
local Workspace = game:GetService("Workspace")
Workspace.ChildAdded:Connect(function(child)
-- Use WaitForChild() since descendants may not have replicated yet
local head = child:WaitForChild("Head")
end)
Catatan, fungsi ini hanya berfungsi untuk anak-anak langsung dari Instance . Untuk fungsi yang menangkap semua keturunan, gunakan Instance.DescendantAdded .
Lihat juga Instance.ChildRemoved .
Parameter
Contoh Kode
This snippet prints the names of objects as they are added to the Workspace:
local function onChildAdded(instance)
print(instance.Name .. " added to the workspace")
end
workspace.ChildAdded:Connect(onChildAdded)
local part = Instance.new("Part")
part.Parent = workspace --> Part added to the Workspace
ChildRemoved
Api setelah anak dihapus dari ini Instance .
Dihapus merujuk pada ketika orangtua objek diubah dari ini Instance ke sesuatu yang berbeda dari ini Instance .Catatan, acara ini juga akan terjadi saat anak dihancurkan (menggunakan Instance:Destroy() ) karena fungsi hancur menetapkan orangtua objek menjadi nil .
Fungsi ini hanya berfungsi untuk anak-anak langsung dari Instance . Untuk fungsi yang menangkap semua keturunan, gunakan Instance.DescendantRemoving .
Lihat juga Instance.ChildAdded .
Parameter
Contoh Kode
This snippet prints the names of objects as they are removed from the Workspace:
local function onChildRemoved(instance)
print(instance.Name .. " removed from the workspace")
end
workspace.ChildRemoved:Connect(onChildRemoved)
local part = Instance.new("Part")
part.Parent = workspace
task.wait(2)
part:Destroy()
DescendantAdded
Peristiwa ini terjadi setelah keturunan ditambahkan ke Instance.
Saat menembak untuk setiap keturunan, membesarkan objek ke Instance akan menembakkan peristiwa untuk objek ini dan semua keturunannnya secara individual.
Jika Anda hanya peduli dengan anak-anak langsung dari , gunakan sebagai gantinya.
Lihat juga Instance.DescendantRemoving .
Parameter
Contoh Kode
This following example will print the name of any object that is added to the Workspace:
local function onDescendantAdded(descendant)
print(descendant)
end
workspace.DescendantAdded:Connect(onDescendantAdded)
local part = Instance.new("Part")
part.Parent = workspace
DescendantRemoving
Peristiwa ini menembak segera sebelum orangtua Instance mengubah sehingga instansi turunan tidak lagi menjadi turunan.Destroy() mengubah Parent instansi menjadi nil , sehingga memanggil metode itu pada turunan dari orangtua akan menyebabkan peristiwa ini terjadi.
Karena acara ini menembak sebelum penghapusan keturunan, orangtua keturunan tidak akan berubah saat penembakan acara ini.Jika keturunan juga merupakan anak langsung dari orang tua , acara ini akan terbakar sebelum Instance.ChildRemoved.
Jika seorang keturunan memiliki anak, acara ini terbakar dengan keturunan terlebih dahulu, diikuti oleh anak-anaknya.
Peringatan
Peristiwa ini terjadi dengan objek keturunan yang dihapus.Mencoba untuk mengatur Parent anak turun ke sesuatu yang lain akan gagal.Di bawah ini adalah contoh yang menunjukkan ini:
local Workspace = game:GetService("Workspace")
Workspace.DescendantRemoving:Connect(function(descendant)
-- Do not manipulate the parent of the descendant in this function!
-- This event fires BECAUSE the parent was manipulated, and the change hasn't happened yet
-- Therefore, it is problematic to change the parent like this:
descendant.Parent = game
end)
local part = Instance.new("Part")
part.Parent = Workspace
part.Parent = nil
Lihat juga DescendantAdded .
Parameter
Contoh Kode
The following example prints the name of any descendant as it is being removed from the Workspace:
workspace.DescendantRemoving:Connect(function(descendant)
print(descendant.Name .. " is currently parented to " .. tostring(descendant.Parent))
end)
local part = Instance.new("Part")
part.Parent = workspace
part.Parent = nil
--> Part is currently parented to Workspace
print(part.Parent)
--> nil
Destroying
The Instance tidak akan pernah dihapus dari memori saat fungsi terhubung masih menggunakannya.Namun, jika fungsi menghasilkan di titik mana pun, Instance dan keturunannnya akan diberikan kepada nil .
Jika properti Workspace.SignalBehavior diatur ke Enum.SignalBehavior.Immediate , acara ini terbakar segera sebelum Instance atau salah satu leluhurnya hancur dengan Instance:Destroy() .
Jika properti Workspace.SignalBehavior diatur ke Enum.SignalBehavior.Deferred , acara ini akan terjadi di titik penyambungan berikutnya, yang akan terjadi setelah Instance atau salah satu leluhurnya hancur dengan Instance:Destroy() .
Dengan perilaku Deferred , menghubungkan skrip ke acara sendiri Instance.Destroying adalah bermasalah, karena skrip akan dihapus sebelum panggilan balasan dapat dilakukan (berarti tidak akan dieksekusi).
Saat menghapus Instance di Studio, seperti menghapus secara manual melalui Explorer atau melalui plugin, Instance tidak hancur.Sebagai gantinya, orangtua diatur ke nil yang dapat Anda pelacak dengan Instance.AncestryChanged .
Contoh Kode
This sample demonstrates how, when using Immediate signal behavior, an Instance being destroyed remains in place until the connected function yields.
local part = Instance.new("Part", workspace)
local function onPartDestroying()
print("Before yielding:", part:GetFullName(), #part:GetChildren())
task.wait()
print("After yielding:", part:GetFullName(), #part:GetChildren())
end
part.Destroying:Connect(onPartDestroying)
part:Destroy()
This sample demonstrates how, when using Deferred signal behavior, an Instance is destroyed before the signal fires.
local part = Instance.new("Part", workspace)
local function onPartDestroying()
print("In signal:", part:GetFullName(), #part:GetChildren())
end
part.Destroying:Connect(onPartDestroying)
print("Before destroying:", part:GetFullName(), #part:GetChildren())
part:Destroy()
print("After destroying:", part:GetFullName(), #part:GetChildren())