Instance

Tampilkan yang Tidak Digunakan Lagi

*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.

Tidak Dapat Dibuat
Tidak Dapat Dijelajahi

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

  • Baca Paralel

    Menentukan apakah Instance dan keturunannya dapat diklon menggunakan Instance:Clone() , dan dapat disimpan/dipublikasikan.

  • Capabilities:SecurityCapabilities
    Baca Paralel

    Set kemampuan yang diizinkan untuk digunakan untuk skrip di dalam kontainer ini.

  • Baca Paralel

    Pengenal tidak unik dari Instance.

  • Tidak Direplikasi
    Baca Paralel

    Menentukan orangtua hierarkis dari Instance .

  • Tersembunyi
    Keamanan Plugin
    Baca Paralel
    Tidak digunakan lagi

    Properti deprecated yang digunakan untuk melindungi objek CoreGui .

  • Tidak Direplikasi
    Baca Paralel

    Mengubah instansi menjadi wadah berpasir.

  • UniqueId:UniqueId
    Tidak Direplikasi
    Tidak Dapat Ditulis Skripnya
    Keamanan Roblox
    Baca Paralel

    Pengenal unik untuk kejadian.

Metode

Acara

Properti

Archivable

Baca Paralel

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()) --> Part
part.Archivable = false
print(part:Clone()) --> nil

Capabilities

SecurityCapabilities
Baca Paralel

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

Baca Paralel

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.Baseplate
local 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

Tidak Direplikasi
Baca Paralel

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

Tersembunyi
Keamanan Plugin
Baca Paralel

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

Tidak Direplikasi
Baca Paralel

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.

UniqueId

UniqueId
Tidak Direplikasi
Tidak Dapat Ditulis Skripnya
Keamanan Roblox
Baca Paralel

Pengenal unik untuk kejadian, berbeda dari Instance.Name yang tidak harus unik.

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

tag: string
Nilai Default: ""

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() do
if descendant:IsA("BasePart") then
descendant:Destroy()
end
end

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.

Instance:ClearAllChildren

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() 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().

Cloning an Instance

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 = nil
task.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.

Instance:Destroy()

local part = script.Parent.Part
part:Destroy()

FindFirstAncestor

Tulis Paralel

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

name: string

The Instance.Name untuk dicari.

Nilai Default: ""

Memberikan nilai

The Instance ditemukan.

FindFirstAncestorOfClass

Tulis Paralel

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

className: string

The Object.ClassName untuk dicari.

Nilai Default: ""

Memberikan nilai

The Instance ditemukan.

FindFirstAncestorWhichIsA

Tulis Paralel

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")) --> true
print(part:IsA("BasePart")) --> true
print(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

className: string

The Object.ClassName untuk dicari.

Nilai Default: ""

Memberikan nilai

The Instance ditemukan.

FindFirstChild

Tulis Paralel

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 kerja
Workspace.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 then
part.Transparency = 0.5
end
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 = part
local c = part.Color --> Warna 3
local 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

name: string

The Instance.Name yang harus dicari.

Nilai Default: ""
recursive: boolean

Apakah pencarian harus dilakukan secara berulang atau tidak.

Nilai Default: false

Memberikan nilai

The Instance ditemukan.

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".

Instance:FindFirstChild

local found = workspace:FindFirstChild("Brick")
if found then
found.Name = "Foo"
end

FindFirstChildOfClass

Tulis Paralel

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

className: string

The Object.ClassName untuk dicari.

Nilai Default: ""

Memberikan nilai

The Instance ditemukan.

Contoh Kode

Instance:FindFirstChildOfClass

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

Tulis Paralel

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")) --> benar
print(part:IsA("BasePart")) --> benar
print(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

className: string

The Object.ClassName yang harus dicari.

Nilai Default: ""
recursive: boolean

Apakah pencarian harus dilakukan secara berulang atau tidak.

Nilai Default: false

Memberikan nilai

The Instance ditemukan.

FindFirstDescendant

Tulis Paralel

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

name: string

The Instance.Name untuk dicari.

Nilai Default: ""

Memberikan nilai

The Instance ditemukan.

GetActor

Tulis Paralel

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

The Actor ditemukan.

GetAttribute

Variant
Tulis Paralel

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.Part
part:SetAttribute("InitialPosition", part.Position)
local initialPosition = instance:GetAttribute("InitialPosition")
print(initialPosition)
Lihat Juga

Parameter

attribute: string

Nama atribut yang diambil.

Nilai Default: ""

Memberikan nilai

Variant

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

attribute: string

Nama atribut yang ditentukan untuk mana sinyal perubahan dikembalikan.

Nilai Default: ""

Memberikan nilai

Sebuah peristiwa yang menembak ketika atribut yang diberikan berubah.

GetAttributes

Tulis Paralel

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.Part
part:SetAttribute("InitialPosition", part.Position)
part:SetAttribute("CanUse", true)
for name, value in part:GetAttributes() do
print(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

Instances
Tulis Paralel

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 numerik
local children = Workspace:GetChildren()
for i = 1, #children do
local child = children[i]
print(child.Name .. " is child number " .. i)
end

local Workspace = game:GetService("Workspace")
-- Contoh lop loop umum
local children = Workspace:GetChildren()
for i, child in children do
print(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

Instances

Sebuah array yang berisi anak-anak kejadian.

Contoh Kode

The below would print the name of all objects currently in Workspace when ran.

Instance:GetChildren

local children = workspace:GetChildren()
for i = 1, #children do
print(i, children[i].Name)
end

GetDebugId

Tidak Dapat Dijelajahi
Keamanan Plugin

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

scopeLength: number

Lingkup panjang.

Nilai Default: 4

Memberikan nilai

String ID string.

Contoh Kode

Instance:GetDebugId

print(workspace:GetDebugId()) --> 39FA_12
print(workspace:GetDebugId(10)) --> 39FA2FEF4D_12
print(workspace:GetDebugId(math.huge)) --> 12

GetDescendants

Tulis Paralel

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.

Instance:GetDescendants

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

Tulis Paralel

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

Nama lengkap dari Instance .

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.

Instance:GetFullName

-- 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.

Instance:GetFullName Lua Implementation

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

GetStyled

Variant

Parameter

name: string
Nilai Default: ""

Memberikan nilai

Variant

GetStyledPropertyChangedSignal

Parameter

property: string
Nilai Default: ""

Memberikan nilai

GetTags

Tulis Paralel

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

Tulis Paralel

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

tag: string
Nilai Default: ""

Memberikan nilai

IsAncestorOf

Tulis Paralel

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

descendant: Instance

Keturunan Instance .

Nilai Default: ""

Memberikan nilai

Benar jika Instance adalah leluhur dari keturunan yang diberikan.

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.

Instance:IsAncestorOf()

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

Tulis Paralel

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

ancestor: Instance

Leluhur Instance .

Nilai Default: ""

Memberikan nilai

Benar jika Instance adalah keturunan dari leluhur yang diberikan.

Contoh Kode

Instance:IsDescendantOf

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

property: string
Nilai Default: ""

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

tag: string
Nilai Default: ""

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

property: string
Nilai Default: ""

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.Part
part: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

Parameter

attribute: string

Nama attribute yang atur.

Nilai Default: ""
value: Variant

Nilai untuk mengatur atribut yang ditentukan ke.

Nilai Default: ""

Memberikan nilai

()

WaitForChild

Dapat Menghasilkan

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

childName: string

The Instance.Name untuk dicari.

Nilai Default: ""
timeOut: number

Paraмет waktu keluar opsional.

Nilai Default: ""

Memberikan nilai

The Instance ditemukan.

Contoh Kode

The following code waits for an instance named "Part" to be added to Workspace.

Instance:WaitForChild

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

child: Instance

The Instance yang Instance.Parent telah diubah.

parent: Instance

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.

Instance.AncestryChanged

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

attribute: string

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

child: Instance

The Instance yang telah ditambahkan.


Contoh Kode

This snippet prints the names of objects as they are added to the Workspace:

Instance.ChildAdded

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

child: Instance

The Instance yang telah dihapus.


Contoh Kode

This snippet prints the names of objects as they are removed from the Workspace:

Instance.ChildRemoved

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

descendant: Instance

The Instance yang telah ditambahkan.


Contoh Kode

This following example will print the name of any object that is added to the Workspace:

Instance.DescendantAdded

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

descendant: Instance

The Instance yang akan dihapus.


Contoh Kode

The following example prints the name of any descendant as it is being removed from the Workspace:

Instance.DescendantRemoving

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.

Using the Destroying Event (Immediate signals)

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.

Using the Destroying Event (Deferred signals)

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())

StyledPropertiesChanged