Instance
*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.
Instans adalah kelas dasar untuk semua kelas dalam hierarki kelas Roblox yang dapat menjadi bagian dari pohon DataModel. Tidak mungkin untuk secara langsung membuat objek Instans.
Instans memiliki fungsi khusus bernama Instance.new() yang digunakan untuk menciptakan objek melalui kode. Fungsi ini mengambil nama kelas sebagai parameter dan mengembalikan objek yang dibuat. Klas dan layanan abstrak tidak dapat dibuat dengan fungsi Instans.new.
Rangkuman
Properti
Menentukan apakah Instance dan anak cucunya dapat diklon menggunakan Instance:Clone() , dan dapat disimpan / dipublikasikan.
Set kemampuan yang diizinkan untuk digunakan untuk skrip di dalam wadah ini.
Identifikator unik yang tidak dari Instance .
Mendeterminasikan orang tua hierarkis dari Instance .
Properti yang dihapus yang dulu digunakan untuk melindungi objek CoreGui .
Mengubah instansi menjadi Container Sandbox.
Metode
Menerapkan label ke kejadian.
Fungsi ini menghancurkan semua anak instansi.
Buat salinan dari instans dan semua anggota bawahannya, mengabaikan instans yang bukan Archivable .
Tetapkan property Instance.Parent menjadi nol, menghubungkan property Instance.Parent, menghubungkan semua koneksi, dan memanggil Hancurkan di semua anak.
Mengembalikan leluhur pertama dari Instance cuyo Instance.Name sama dengan nama yang diberikan.
Mengembalikan leluhur pertama dari Instance cuyo Object.ClassName sama dengan nama kelas yang diberikan.
Mengembalikan leluhur pertama dari Instance untuk siapa Object:IsA() mengembalikan benar untuk nama kelas yang diberikan.
Mengembalikan anak pertama dari Instance yang ditemukan dengan nama yang diberikan.
Mengembalikan anak pertama dari Instance cuyo ClassName sama dengan nama kelas yang diberikan.
Mengembalikan anak pertama dari Instance untuk siapa Object:IsA() mengembalikan benar untuk nama kelas yang diberikan.
Mengembalikan nenek moyang pertama yang ditemukan dengan Instance.Name yang diberikan.
Mengembalikan Actor yang terkait dengan Instans, jika ada.
Mengembalikan nilai yang telah ditetapkan untuk nama属性 yang diberikan.
Mengembalikan acara yang diaktifkan saatribut yang diberikan berubah.
Mengembalikan definisi kejadianinstans.
Mengembalikan array yang berisi semua anak kejadian.
Mengembalikan string berko딩 ID debug yang digunakan secara internal oleh Roblox.
Mengembalikan array yang berisi semua cucu kejadian.
Mengembalikan string yang menggambarkan leluhur kejadian.
Mendapatkan array dari semua tag yang diterapkan ke kejadian.
Periksa apakah instans memiliki label yang diberikan.
Kembalinya benar jika Instance adalah leluhur dari anak cucu yang diberikan.
Kembalinya benar jika Instance adalah nenek moyang dari pemberi asal.
Menghapus label dari kejadian.
Tetapkan属性 dengan nama yang diberikan ke nilai yang diberikan.
Mengembalikan anak dari Instance dengan nama yang diberikan. Jika anak tidak ada, itu akan menghasilkan thread saat ini sampai itu terjadi.
Acara
Mengaktifkan ketika property Class.Instance.Parent dari objek atau salah satu nenek moyangnya diubah.
Mengaktifkan setiap saat setelan sifat diubah di Instance .
Berapi-api setelah objek diberi nama ke objek ini Instance .
Berapi-api setelah seorang anak dihapus dari Instance ini.
Berapi-api setelah seorang turunan ditambahkan ke Instance .
Mengakhiri segera setelah turunan dari Instance dihapus.
Mengakhiri segera sebelum (atau ditunda sampai setelah) instans dibangun melalui Instance:Destroy().
Properti
Archivable
Properti ini menentukan apakah instans harus di包含 ketika pengalaman diterbitkan atau disimpan, atau ketika Clone() dianggil pada salah satu leluhur kejadian. Menanggapi langsung di Clone() akan mengembalikan <
Mengkloning objek di Studio menggunakan opsi Duplikasi atau Salinan / Tempel / 2> Pegang2> untuk menghilangkan properti 5> Class.Instance.Archivable|Archivable5> sendiri dan menetapkan 8> Class.Instance.Archivable|Archivable8> ke 1>
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 instensi ini. Untuk kemampuan untuk berlaku, Instance.Sandboxed property harus diaktifkan.
Properti ini digunakan oleh fitur eksperimental. Lihat halaman Kemampuan Skrip untuk detail lebih lanjut.
Name
Identifikator unik yang tidak dari Instance .
Properti ini adalah identifikator yang menggambarkan objek. Nama bukanlah identifikator yang unik secara otomatis, namun; beberapa anak objek dapat berbagi nama yang sama. Nama digunakan untuk menyusun hierarki objek, bersama dengan memungkinkan script untuk mengakses objek tertentu. Nama instans tidak boleh melebihi 100 karakter dalam ukuran.
Nama sebuah objek sering digunakan untuk mengakses objek melalui hierarki data model menggunakan metode berikut:
local baseplate = workspace.Baseplatelocal baseplate = workspace["Baseplate"]local baseplate = workspace:FindFirstChild("BasePlate")
Untuk membuat objek dapat diakses menggunakan operator dot, nama objek harus mengikuti beberapa struktur. Nama objek harus dimulai dengan huruf bawah atau huruf. Sisa nama hanya dapat berisi huruf, angka, atau tanda bawah (tidak ada karakter khusus lainnya). Jika nama objek tidak mengikuti struktur ini, itu tidak akan dapat diakses menggunakan operator dot dan Lua tidak akan m
Jika lebih dari satu objek dengan nama yang sama adalah saudara laki-laki maka upaya untuk mengindeks objek dengan nama itu akan mengembalikan satu-satunya dari objek yang ditemukan mirip dengan Instance:FindFirstChild() , tetapi tidak selalu objek yang diinginkan. Jika objek spesifik perlu diakses melalui kode, disarankan untuk memberinya nama
Catatan, nama penuh yang menunjukkan hierarki kejadiandapat diperoleh menggunakan Instance:GetFullName() .
Parent
Propinsi menentukan orang tua hierarkis dari Instance . Terminologi berikut sering digunakan ketika berbicara tentang cara pengaturan ini diatur:
- Objek adalah anak ( set ke objek itu. ) saat Ibu/Bayanya di set ke objek itu.
- cucu dari Instance adalah anak-anak dari objek itu, plus anak-anak juga.
- leluhur dari sebuah Instance adalah semua objek yang diwarisi oleh Instansi.
Ini adalah dari property ini bahwa banyak anggota API lainnya mendapatkan nama mereka, seperti GetChildren dan FindFirstChild .
Fungsi Remove mengatur propperti ini menjadi nol. Menanggalkan Destroy akan menetapkan Parent dari entitas yang dihancurkan dan semua anaknya menjadi Instance , dan juga 1> menyetel Lock Parent1> . Kesalahan terjadi ketika men
Properti ini juga digunakan untuk mengelola apakah objek ada dalam permainan atau perlu dihapus. Asalkan objek orang tua dalam DataModel , disimpan dalam variabel, atau diacak oleh kepemilikan objek lain, maka objek tet
Objek baru yang dibuat menggunakan Instance.new() tidak akan memiliki orang tua, dan biasanya tidak akan terlihat atau berfungsi sampai satu ditetapkan. Pembuatan elemen paling dasar dari objek memiliki dua langkah: menciptakan objek, lalu aturorang tuanya.
-- Create a part and parent it to the workspacelocal part = Instance.new("Part")part.Parent = workspace-- Instance new can also take Parent as a second parameterInstance.new("NumberValue", workspace)
Ketika perubahan dibuat untuk beberapa proporsi saat sebuah instans di dalam DataModel, mesin mungkin perlu melakukan pekerjaan tambahan secara internal (untuk hal-hal seperti replikasi, render, dan tata letak GUI). Setiap kali mungkin, ganti proporsi kejadiansebelum Anda menetapkan Parent, daripada setelah, untuk menghindari melakukan pekerjaan itu secara berulang.
Replikasi Objek
Sebuah objek yang dibuat oleh server tidak akan disalin ke klien sampai itu dianggap sebagai orang tua ke beberapa objek yang dianggap. Saat menciptakan objek maka menetapkan banyak property, disarankan untuk tetap Parent terakhir . Ini menjamin objek itu replikat setelah satu, bukan replikat banyak perubahan property.
local part = Instance.new("Part") -- Hindari menggunakan parameter kedua di sinipart.Anchored = truepart.BrickColor = BrickColor.new("Really red")-- Potensial banyak perubahan properti lainnya dapat pergi ke sini di sini ...-- Selalu atur orang tua terakhir!part.Parent = workspace
Jika demikian, jika Anda menjadikan bagian Anda ke Model whose parent belum ditetapkan, maka menjadikan masing-masing bagian itu ke model tersebut tidak apa-apa karena model itu belum direplikasi.
RobloxLocked
Item ini digunakan untuk melindungi objek dalam CoreGui layanan dari perubahan oleh pengguna dengan cara yang tidak sah. Ini telah dihapuskan dan tidak melakukan apa-apa.
Sandboxed
Mengubah instansi menjadi Container Sandbox. Container Sandbox adalah fitur eksperimental yang membatasi tindakan yang dapat dilakukan oleh skrip di dalam Container tertentu.
Lihat halaman Kemampuan Skrip untuk detail lebih lanjut.
UniqueId
Metode
AddTag
Metode ini menerapkan label ke kejadian, tanpa efek jika label sudah diterapkan. Menambahkan label dengan sukses akan menyebarkan sinyal yang dibuat oleh CollectionService:GetInstanceAddedSignal() dengan tag yang diberikan.
Catat bahwa saat menandai kejadian, umumnya dikenal bahwa beberapa sumber daya digunakan untuk memberikan fungsionalitas tag, misalnya koneksi acara atau tabel. Untuk mencegah kehilangan memori, adalah ide yang baik untuk membersihkan in
Parameter
Memberikan nilai
ClearAllChildren
Fungsi ini menghancurkan semua anak instansi.
Sebagai Instance:Destroy() juga menyebut dirinya pada anak-anak objek yang digunakannya, fungsi ini akan menghancurkan semua cucu.
Alternatif untuk Bersihkan Semua Anak
Jika pengembang tidak ingin menghancurkan semua cucu, mereka harus menggunakan Instance:GetChildren() atau Instance:GetDescendants() untuk berlari melalui objek dan memilih apa yang akan dihancurkan. Misalnya, contoh kode berikut akan menghancurkan semua bagian dalam objek.
for _, instance in object:GetDescendants() doif instance:IsA("BasePart") theninstance:Destroy()endend
Memberikan nilai
Contoh Kode
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
Klon menciptakan salinan dari instans dan semua anaknya, mengabaikan semua instans yang bukan Archivable . Salinan instans utama dikembalikan o
Jika property referensi seperti ObjectValue.Value ditetapkan dalam kejadianklon, nilai property kopian bergantung pada nilai asli:
- Jika property referensi mengacu pada instansi yang telah juga klon, kopian akan mengacu pada kopian.
- Jika property referensi mengacu pada objek yang tidak klon, nilai yang sama dipertahankan dalam salinan.
Memberikan nilai
Contoh Kode
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
Tetapkan property Instance.Parent menjadi nol, menghubungkan property Instance.Parent, menghubungkan semua koneksi, dan memanggil Hancurkan di semua anak. Fungsi ini adalah cara yang benar untuk menyingkirkan objek yang tidak lagi diperlukan. Menyingkirkan objek yang tidak di
Tip: Setel setiap variabel yang mengacu pada objek (atau anak-anjungnya) ke nol setelah memanggil Hancurkan pada objek. Ini mencegah kode Anda mengakses apa pun untuk dilakukan 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 garis di atas dari bekerja:part = nil
Saat Instance telah dihancurkan oleh metode ini, ia tidak dapat dibagikan karena prop性 Instance.Parent terkunci. Untuk menghapus objek sementara, tetapkan Parent setel ke nol. Misalnya:
object.Parent = nilwait(2)object.Parent = workspace
Untuk menghancurkan objek setelah jumlah waktu tertentu, gunakan Debris:AddItem() .
Memberikan nilai
Contoh Kode
local part = script.Parent.Part
part:Destroy()
FindFirstAncestor
Mengembalikan leluhur pertama dari Instance cuyo Instance.Name sama dengan nama yang diberikan.
Fungsi ini bekerja ke atas, yang berarti dimulai pada kejadianlangsung Instance.Parent dan bekerja ke atas DataModel . Jika tidak ada leluhur yang cocok ditemukan, itu akan mengembalikan nol.
Potongan kode berikut akan menemukan leluhur pertama dari objek bernama 'Mobil'.
local car = object:FindFirstAncestor("Car")
Untuk varian dari fungsi ini yang menemukan leluhur dari kelas spesifik, silakan lihat Instance:FindFirstAncestorOfClass() dan Instance:FindFirstAncestorWhichIsA() .
Parameter
Class.Instance.Name untuk dicari.
Memberikan nilai
Class.Instance ditemukan.
FindFirstAncestorOfClass
Mengembalikan leluhur pertama dari Instance cuyo Object.ClassName sama dengan nama kelas yang diberikan.
Fungsi ini bekerja ke atas, yang berarti dimulai pada kejadianlangsung Instance.Parent dan bekerja ke atas DataModel . Jika tidak ada leluhur yang cocok ditemukan, itu akan mengembalikan nol.
Penggunaan umum fungsi ini adalah menemukan Model a BasePart 属于. Misalnya:
local model = part:FindFirstAncestorOfClass("Model")
Fungsi ini adalah varian dari Instance:FindFirstAncestor() yang memeriksa propinsi Object.ClassName bukan Instance.Name . 1> Class.Instance:FindFirstAncestorWhichIsA()1> juga ada, menggunakan metode 4> Class.Object:Is
Parameter
Class.Object.className untuk dicari.
Memberikan nilai
Class.Instance ditemukan.
FindFirstAncestorWhichIsA
Mengembalikan leluhur pertama dari Instance untuk siapa Object:IsA() mengembalikan benar untuk nama kelas yang diberikan.
Fungsi ini bekerja ke atas, yang berarti dimulai pada kejadianlangsung Instance.Parent dan bekerja ke atas DataModel . Jika tidak ada leluhur yang cocok ditemukan, itu akan mengembalikan nol.
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, contoh kode berikut akan mengembalikan leluhur BasePart pertama, terlepas dari apakah itu adalah WedgePart , MeshPart atau 1> Class.Part1> .
local part = object:FindFirstAncestorWhichIsA("BasePart")
Lihat juga, Instance:FindFirstAncestor() .
Parameter
Class.Object.className untuk dicari.
Memberikan nilai
Class.Instance ditemukan.
FindFirstChild
Mengembalikan anak pertama dari Instance dengan nama yang diberikan,
atau nil jika tidak ada anak seperti itu ada. Jika argument recursive yang opsional benar, fungsi ini mencari semua anak turun dari Instance .
Memeriksa Keberadaan Objek
FindFirstChild diperlukan jika Anda perlu memverifikasi apakah objek ada sebelum melanjutkan. Mencoba untuk mengindeks anak berdasarkan nama menggunakan operator dot menghasilkan kesalahan jika anak tidak ada.
-- Kesalahan baris berikut jika Bagian tidak ada di Workspace:workspace.Part.Transparency = 0.5
Gunakan FindFirstChild untuk memeriksa Part terlebih dahulu, lalu gunakan if-句 untuk mengeksekkan kode yang memerlukannya.
local part = workspace:FindFirstChild("Part")if part thenpart.Transparency = 0.5end
Menemukan Anak yang whose Name Matches aProperty
Terkadang Name dari objek adalah sama dengan yang dimiliki oleh kepemilikan propertinya Parent. Saat menggunakan operator dot, proporsi kepemilikan diberikan kepada anak-anak jika mereka berbagi nama.
Dalam contoh berikut, Folder bernama "Warna" ditambahkan ke Part, yang juga memiliki propinsi Part.Color. 2> Class.Part.Color2> mengacu pada 5> Datatype.Color35>, 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 pengantar ke property baru tidak menimbulkan risiko pada kode Anda.
Catatan Kinerja
FindFirstChild() mengambil sekitar 20% lebih lama dari menggunakan operator dot dan hampir 8 kali le
Parameter
Class.Instance.Name untuk dicari.
Apakah atau tidak pencarian harus dilakukan secara berulang.
Memberikan nilai
Class.Instance ditemukan.
Contoh Kode
local found = workspace:FindFirstChild("Brick")
if found then
found.Name = "Foo"
end
FindFirstChildOfClass
Mengembalikan anak pertama dari Instance cuyo ClassName sama dengan nama kelas yang diberikan.
Jika tidak ada anak yang cocok ditemukan, fungsi ini kembali nol.
Tidak seperti Instance:FindFirstChildWhichIsA() fungsi ini hanya mengembalikan objek yang kelasnya cocok dengan nama klas yang diberikan, mengabaikan warisan kelas.
Pengembang mencari anak berdasarkan nama harus menggunakan Instance:FindFirstChild() sebagai gantinya.
Parameter
Class.Object.className untuk dicari.
Memberikan nilai
Class.Instance ditemukan.
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
Mengembalikan anak pertama dari Instance untuk siapa Object:IsA() mengembalikan benar untuk nama kelas yang diberikan.
Jika tidak ada anak yang cocok ditemukan, fungsi ini kembali nol. Jika argumen recursive opsional benar, fungsi ini mencari semua anak turun 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, contoh kode berikut akan mengembalikan anak BasePart pertama, terlepas dari apakah itu adalah WedgePart , MeshPart atau 1> Class.Part1> .
local part = object:FindFirstChildWhichIsA("BasePart")
Pengembang mencari anak berdasarkan nama, harus menggunakan Instance:FindFirstChild() sebagai gantinya.
Parameter
Class.Object.className untuk dicari.
Apakah atau tidak pencarian harus dilakukan secara berulang.
Memberikan nilai
Class.Instance ditemukan.
FindFirstDescendant
Mengembalikan nenek moyang pertama yang ditemukan dengan Instance.Name yang diberikan.
Metode ini dinonaktifkan dan tidak dapat digunakan. Untuk menemukan cucu pertama dari kejadian, pertimbangkan menggunakan parameter recursive pada Instance:FindFirstChild() sebagai gantinya.
Parameter
The Instance.Name untuk dicari.
Memberikan nilai
Class.Instance ditemukan.
GetActor
Jika Instance adalah Actor , maka Class.Actor sendiri dianggap. Jika tidak, nenek moyang terdekatnya 1>Class.Actor1> dikembalikan. Jika tidak ada nenek moyang 4>Class.Actor4>, hasilnya adalah 7>nil7>.
Memberikan nilai
Class.Actor ditemukan.
GetAttribute
Metode ini mengembalikan nilai yang telah ditetapkan untuk nama属性 yang diberikan. Jika tidak ada属性 yang ditetapkan, nil dikembalikan.
Misalnya, snippet kode berikut menetapkan dan kemudian mendapatkan nilai atribut Posisi Awal instans:
local part = workspace.Partpart:SetAttribute("InitialPosition", part.Position)local initialPosition = instance:GetAttribute("InitialPosition")print(initialPosition)
Lihat Juga
- Instance:SetAttribute() yang menetapkan attribute dengan nama yang diberikan ke nilai yang diberikan.
- Instance:GetAttributes() yang mengembalikan definisi pasangan nilai kunci untuk setiap kejadianatribut instans.
Parameter
Nama属性 yang diambil.
Memberikan nilai
Nilai yang telah ditetapkan untuk nama属性 yang diberikan. Jika tidak ada属性 yang ditetapkan, nil dikembalikan.
GetAttributeChangedSignal
Fungsi ini mengembalikan acara yang bersikap persis seperti acara Changed , kecuali bahwa itu hanya berfungsi ketika属性 spesifik berubah; secara efektif itu mirip dengan GetPropertyChangedSignal() tetapi untuk属性.
Umumnya ide yang bagus untuk menggunakan metode ini alih-alih koneksi ke Changed dengan fungsi yang memeriksa nama属性. Panggilan berikutnya ke metode ini di objek yang sama dengan nama属性 yang sama menghasilkan acara yang sama.
Contoh kode berikut mengembalikan sinyal yang menyetel fungsi attributeChanged() ketika nilai attrasi Posisi Awal bagian berubah:
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 diaktifkan setiap kali属性 diubah di kejadian.
Parameter
Nama属性 yang ditentukan untuk dikembalikan sinyal perubahan.
Memberikan nilai
Acara yang diaktifkan ketikaribut yang diberikan berubah.
GetAttributes
Metode ini mengembalikan definisi pasangan nilai untuk setiap属性 di mana kunci adalah nama属性 dan nilai adalah nilai non-nil .
Misalnya, kode berikut menghasilkan属性 dan nilai instans:
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 mengembalikan nilai yang telah ditetapkan untuk nama属性 yang diberikan.
Memberikan nilai
Sebuah kamus string → pasangan variabel untuk setiap属性 di mana string adalah nama属性 dan variabel bukan nilai nol.
GetChildren
Mengembalikan tabel (yang diindeks secara numerik) berisi semua anak langsung kejadian, atau setiap Instance dengan Parent yang sama dengan objek. Arrays dapat diulang menggunakan numerik atau generik for-loop:
-- Contoh for-loop numeriklocal children = workspace:GetChildren()for i = 1, #children dolocal child = children[i]print(child.Name .. " is child number " .. i)end
-- Contoh for-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
Matrix yang berisi anak-anak kejadian.
Contoh Kode
local children = workspace:GetChildren()
for i = 1, #children do
print(i, children[i].Name)
end
GetDebugId
Mengembalikan string berko딩 ID debug yang digunakan secara internal oleh Roblox.
Catatan:
- Item ini dilindungi. Mencoba menggunakannya di Script atau LocalScript akan menyebabkan kesalahan
- Apa itu debug ID? ID debug adalah ID yang digunakan dalam proses debug. Ini memungkinkan seorang debugger untuk membaca setiap instruksi sebelum aplikasi memprosesnya. Semua objek di Roblox bertindak seperti proses dan setiap instruksi (atau 'kode') yang dapat diedit jika perlu
- Ini dapat berguna untuk plugin yang perlu menghasilkan objek serupa satu sama lain (seperti objek yang berbagi nama yang sama)
Parameter
Dasar panjangnya.
Memberikan nilai
stringID Debug.
Contoh Kode
print(workspace:GetDebugId()) --> 39FA_12
print(workspace:GetDebugId(10)) --> 39FA2FEF4D_12
print(workspace:GetDebugId(math.huge)) --> 12
GetDescendants
Metode objek ini mengembalikan matri yang berisi semua cucu 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 matriks yang berisi nama nenek moyang kejadian.
Contoh Kode
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
Mengembalikan string yang menggambarkan leluhur instans. String adalah kumpulan dari Name dari objek dan nenek moyangnya, dipisahkan oleh period. The DataModel ( game ) tidak dianggap. Misal
Ketika dipanggil pada Instance yang bukan turunan dari DataModel, fungsi ini menganggap semua leluhur hingga dan termasuk yang teratas tanpa Parent.
Fungsi ini berguna untuk logging dan debugging. Anda seharusnya tidak mencoba untuk menghitung string yang dikembalikan untuk operasi yang berguna; fungsi ini tidak menghasilkan periode (atau simbol lain) dalam nama objek. Dengan kata lain, meskipun outputnya sering tampaknya menjadi identifikator Lua yang valid, itu tidak dijamin.
Memberikan nilai
Contoh Kode
-- 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
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
GetTags
Metode ini mengembalikan array tag yang diterapkan ke kejadianyang diberikan, sebagai string. Anda dapat menambahkan tag di Studio di jendela Properti atau pada waktu pembuatan dengan AddTag() .
Metode ini berguna ketika Anda ingin melakukan sesuatu dengan beberapa label di instans sekaligus. Namun, tidak efisien untuk menggunakan metode ini untuk memeriksa keberadaan tag tunggal; sebaliknya, gunakan HasTag() untuk memeriksa tag khusus.
Memberikan nilai
HasTag
Metode ini mengembalikan true jika label yang disediakan telah ditambahkan ke objek. Anda dapat menambahkan tag di Studio di jendela Properti atau pada saat eksekusi dengan AddTag() .
Parameter
Memberikan nilai
IsAncestorOf
Kembalinya benar jika Instance adalah leluhur dari anak cucu yang diberikan.
Sebuah Instance dianggap sebagai leluhur objek jika objeknya Instance.Parent atau salah satu dari orang tuanya Instance.Parent ditetapkan ke 1> Class.Instance1> .
Lihat juga, Instance:IsDescendantOf() .
Parameter
Memberikan nilai
Contoh Kode
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
Kembalinya benar jika Instance adalah nenek moyang dari pemberi asal.
Class.Instance dianggap sebagai cendawan dari objek jika orang tua instans atau salah satu orang tua親設定 untuk objek.
Catatan, DataModel adalah turunan dari nol. Ini berarti IsDescendantOf tidak dapat digunakan dengan parameter nol 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
RemoveTag
Metode ini menghapus label dari kejadian. Ini tidak akan menghasilkan kesalahan jika objek tidak memiliki label. Menghapus label dengan sukses akan menghasilkan sinyal yang dibuat oleh CollectionService:GetInstanceRemovedSignal() dengan tag yang diberikan.
Catat bahwa ketika menandai kejadian, umumnya adalah beberapa sumber daya digunakan untuk memberikan fungsionalitas tag, misalnya koneksi acara atau tabel. Untuk mencegah kebocoran memori, adalah ide yang baik untuk membersihkan ini (putuskan, set ke nil , dll.) ketika tidak lagi diperlukan untuk tag.
Parameter
Memberikan nilai
SetAttribute
Metode ini menetapkan属性 dengan nama yang diberikan ke nilai yang diberikan. Jika nilai yang diberikan adalah nil ,属性 akan dihapus, karena nil diberikan secara default.
Misalnya, snippet kode berikut menetapkan kejadian Posisi Awal instans ke Vector3.new(0, 10, 0) :
local part = workspace.Partpart:SetAttribute("InitialPosition", Vector3.new(0, 10, 0))
Keterbatasan
Memerlukan persyaratan dan keterbatasan naming:
- Nama hanya boleh menggunakan karakter alfanumerik dan tanda bawah.
- Tidak ada ruang atau simbol unik yang diizinkan.
- String harus menjadi 100 karakter atau kurang.
- Nama tidak diperbolehkan dimulai dengan RBX kecuali jika panggilan itu adalah naskah inti Roblox (disebut untuk Roblox).
Saat mencoba untuk menetapkan属性 ke ketikyang tidak didukung, kesalahan akan dihasilkan.
Lihat juga:
- Instance:GetAttribute() yang mengembalikan nilai yang telah ditetapkan untuk nama属性 yang diberikan.
- Instance:GetAttributes() yang mengembalikan definisi pasangan nilai kunci untuk setiap kejadianatribut instans.
Parameter
Nama属性 yang diatur.
Nilai untuk menetapkan属性 yang ditentukan.
Memberikan nilai
WaitForChild
Mengembalikan anak dari Instance dengan nama yang diberikan. Jika anak tidak ada, itu akan menghasilkan thread saat ini sampai itu terjadi. Jika parameter timeOut ditentukan, metode ini akan berakhir setelah jumlah waktu tertentu dan kembalikan nil.
Penggunaan Utama
WaitForChild() sangat penting saat bekerja pada kode dijalankan oleh klien di LocalScript . Mesin Roblox tidak menjamin waktu atau urut
Catatan
- Fungsi ini tidak menghasilkan jika anak dengan nama yang diberikan ada ketika panggilan dibuat.
- Instance:FindFirstChild() adalah alternatif yang lebih efisien untuk WaitForChild() untuk objek yang diasumsikan ada.
- Jika panggilan metode ini melebihi 5 detik tanpa mengembalikan, dan tidak ada parameter timeOut yang ditentukan, peringatan akan dicetak ke keluaran bahwa thread mungkin menghasilkan secara permanen.
Parameter
Memberikan nilai
Class.Instance ditemukan.
Contoh Kode
local part = workspace:WaitForChild("Part")
print(part.Name .. " has been added to the Workspace")
Acara
AncestryChanged
Mengaktifkan ketika property Class.Instance.Parent dari objek atau salah satu nenek moyangnya diubah.
Acara ini termasuk dua parameter, anak dan orang tua . Anak mengacu pada 1> Class.Instance1> whose 4> Class.Instance.Parent4> yang sebenarnya telah diubah. 7> Orang tua7> mengacu pada 0> Class.Instance.Parent
Anda dapat menggunakan acara ini untuk melacak penghapusan instans di Studio, seperti penghapusan manual di Explorer atau melalui plugin. Jika Anda perlu mendeteksi ketika instans dihancurkan menggunakan Instance:Destroy(), gunakan acara Instance.Destroying sebagai gantinya.
Parameter
Class.Instance yang cu Instance.Parent telah diubah.
Class.Instance.Parent baru dari Instance cuyo Instance.Parent berubah.
Contoh Kode
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
Acara ini diaktifkan setiap kali属性 diubah di kejadian, termasuk ketika属性 diatur ke nil . Nama属性 yang diubah dikirim ke fungsi yang terhubung.
Misalnya, kode berikut menghubungkan fungsi attributeChanged() untuk diaktifkan setiap kali salah satu属性 bagian berubah:
local part = workspace.Part
local function attributeChanged(attributeName)
print(attributeName, "changed")
end
part.AttributeChanged:Connect(attributeChanged)
Lihat juga Instance:GetAttributeChangedSignal() yang mengembalikan acara yang diaktifkan ketika属性 tertentu berubah.
Parameter
Nama属性 yang telah diubah.
ChildAdded
Berapi-api setelah objek diberi nama ke objek ini Instance .
Catat, ketika menggunakan fungsi ini di klien untuk mendeteksi objek yang dibuat oleh server itu diperlukan untuk menggunakan Instance:WaitForChild() ketika mengindeks nendekarcia objek ini. Ini karena objek dan nendekarcia objek ini tidak dijamin untuk bereplikasi dari server ke klien secara bersamaan. Misalnya:
workspace.ChildAdded:Connect(function(child)
-- need to use WaitForChild as 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 turunan, gunakan Instance.DescendantAdded .
Lihat juga, Instance.ChildRemoved .
Parameter
Class.Instance yang telah ditambahkan.
Contoh Kode
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
Berapi-api setelah seorang anak dihapus dari Instance ini.
Dianggap bahwa ketika orang tua objek diubah dari ini Instance ke sesuatu yang lain selain ini Instance . Catat, acara ini juga akan mengecewakan ketika seorang anak dihancurkan (menggunakan Instance:Destroy() ) karena fungsi hancurkan menetapkan orang tua objek menjadi nol.
Fungsi ini hanya berfungsi untuk anak-anak langsung dari Instance . Untuk fungsi yang menangkap semua turunan, gunakan Instance.DescendantRemoving .
Lihat juga Instance.ChildAdded .
Parameter
Class.Instance yang telah dihapus.
Contoh Kode
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
Acara DescendantAdded diaktifkan setelah seorang descendant ditambahkan ke Instance .
Sebagai DescendantAdded api untuk setiap descendant, menjadi orang tua untuk objek ke Class.Instance akan menjalankan acara untuk objek ini dan semua anaknya secara individual.
Pengembang hanya peduli dengan anak-anak langsung dari Instance harus menggunakan Instance.ChildAdded instead.
Lihat juga Instance.DescendantRemoving .
Parameter
Class.Instance yang telah ditambahkan.
Contoh Kode
local function onDescendantAdded(descendant)
print(descendant)
end
workspace.DescendantAdded:Connect(onDescendantAdded)
local part = Instance.new("Part")
part.Parent = workspace
DescendantRemoving
Acara ini menyebabkan segera setelah kelas utama Instance perubahan sehingga instans cendawan tidak lagi menjadi seorang cendawan. 1> Class.Instance:Destroy()|Destroy()1> mengubah 4> Class.Instance.Parent|Parent
Karena acara ini menyebabkan sebelum kelahiran anak cucu, orang tua anak cucu tidak akan berubah pada saat acara ini menyebabkan. Jika anak cucu juga merupakan anak langsung dari orang tua, acara ini akan menyebar sebelum Instance.ChildRemoved.
Jika seorang turunan memiliki anak, acara ini menyetir dengan turunan pertama, diikuti oleh turunannya.
Peringatan
Acara ini menyebabkan dengan objek turunan yang dihapus. Mencoba untuk menetapkan Parent dari turunan ke sesuatu yang lain akan gagal. Di bawah ini adalah contoh yang menunjukkan ini:
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
Class.Instance yang dihapus.
Contoh Kode
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 pernah akan dihapus dari memori saat fungsi terhubung masih menggunakannya. Namun, jika fungsi itu menghasilkan pada titik mana pun, maka Instance dan cendawan akan menjadi orang tua untuk nil .
Jika property Workspace.SignalBehavior di set ke Enum.SignalBehavior.Immediate, acara ini segera diaktifkan sebelum Class.Instance atau salah satu leluhurnya dihancurkan dengan Instance.
Jika properti Workspace.SignalBehavior di set ke Enum.SignalBehavior.Deferred, acara ini diaktifkan pada titik resumption berikutnya, yang akan berada setelah Class.Instance atau salah satu leluhurnya dihancurkan dengan Instance.
Dengan Deferred perilaku, menghubungkan script ke acara Instance.Destroying sendiri adalah masalah, karena script akan dihancurkan sebelum panggilan kembali dapat di调用 (berarti itu tidak akan mengeksekusi).
Ketika menghapus Instance di Studio, seperti menghapus secara manual melalui Explorer atau melalui plugin, Class.Instance tidak dihancurkan. Sebaliknya, orang tua di tetapkan menjadi 1> nil1> yang dapat Anda pelacak dengan 4> Class.Instance.AncestryChanged
Contoh Kode
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()
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())