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

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

  • Baca Paralel

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

  • Capabilities:SecurityCapabilities
    Keamanan Skrip Roblox
    Baca Paralel

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

  • Baca Paralel

    Identifikator unik yang tidak dari Instance .

  • Tidak Direplikasi
    Baca Paralel

    Mendeterminasikan orang tua hierarkis dari Instance .

  • Tersembunyi
    Keamanan Plugin
    Baca Paralel
    Tidak digunakan lagi

    Properti yang dihapus yang dulu digunakan untuk melindungi objek CoreGui .

  • Tidak Direplikasi
    Keamanan Skrip Roblox
    Baca Paralel

    Mengubah instansi menjadi Container Sandbox.

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

Metode

Acara

Properti

Archivable

Baca Paralel

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

Capabilities

SecurityCapabilities
Keamanan Skrip Roblox
Baca Paralel

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

Baca Paralel

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

Tidak Direplikasi
Baca Paralel

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 workspace
local part = Instance.new("Part")
part.Parent = workspace
-- Instance new can also take Parent as a second parameter
Instance.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 sini
part.Anchored = true
part.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

Tersembunyi
Keamanan Plugin
Baca Paralel

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

Tidak Direplikasi
Keamanan Skrip Roblox
Baca Paralel

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

UniqueId
Tidak Direplikasi
Tidak Dapat Ditulis Skripnya
Keamanan Roblox
Baca Paralel

Metode

AddTag

void

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

tag: string

Memberikan nilai

void

ClearAllChildren

void

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

Memberikan nilai

void

Contoh Kode

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

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

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

void

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 = nil
wait(2)
object.Parent = workspace

Untuk menghancurkan objek setelah jumlah waktu tertentu, gunakan Debris:AddItem() .


Memberikan nilai

void

Contoh Kode

Instance:Destroy()

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

FindFirstAncestor

Tulis Paralel

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

name: string

Class.Instance.Name untuk dicari.


Memberikan nilai

Class.Instance ditemukan.

FindFirstAncestorOfClass

Tulis Paralel

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

className: string

Class.Object.className untuk dicari.


Memberikan nilai

Class.Instance ditemukan.

FindFirstAncestorWhichIsA

Tulis Paralel

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

className: string

Class.Object.className untuk dicari.


Memberikan nilai

Class.Instance ditemukan.

FindFirstChild

Tulis Paralel

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 then
part.Transparency = 0.5
end

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 = part
local c = part.Color --> Warna 3
local 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

name: string

Class.Instance.Name untuk dicari.

recursive: bool

Apakah atau tidak pencarian harus dilakukan secara berulang.

Nilai Default: false

Memberikan nilai

Class.Instance ditemukan.

Contoh Kode

Instance:FindFirstChild

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

FindFirstChildOfClass

Tulis Paralel

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

className: string

Class.Object.className untuk dicari.


Memberikan nilai

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

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

className: string

Class.Object.className untuk dicari.

recursive: bool

Apakah atau tidak pencarian harus dilakukan secara berulang.

Nilai Default: false

Memberikan nilai

Class.Instance ditemukan.

FindFirstDescendant

Tulis Paralel

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

name: string

The Instance.Name untuk dicari.


Memberikan nilai

Class.Instance ditemukan.

GetActor

Tulis Paralel

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

Variant
Tulis Paralel

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

Lihat Juga

Parameter

attribute: string

Nama属性 yang diambil.


Memberikan nilai

Variant

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

attribute: string

Nama属性 yang ditentukan untuk dikembalikan sinyal perubahan.


Memberikan nilai

Acara yang diaktifkan ketikaribut yang diberikan berubah.

GetAttributes

Tulis Paralel

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

Instances
Tulis Paralel

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

-- Contoh for-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

Matrix yang berisi anak-anak kejadian.

Contoh Kode

Instance:GetChildren

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

GetDebugId

Tidak Dapat Dijelajahi
Keamanan Plugin

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

scopeLength: number

Dasar panjangnya.

Nilai Default: 4

Memberikan nilai

stringID Debug.

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

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

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

Nama penuh dari Instance .

Contoh Kode

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

Memberikan nilai

Variant

GetTags

Tulis Paralel

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

Tulis Paralel

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

tag: string

Memberikan nilai

IsAncestorOf

Tulis Paralel

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

descendant: Instance

Cucu Instance .


Memberikan nilai

Benar jika Instance adalah leluhur dari anak cucu yang diberikan.

Contoh Kode

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

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

ancestor: Instance

Nenek moyang Instance .


Memberikan nilai

Benar jika Instance adalah nenek moyang dari nenek moyang 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

RemoveTag

void

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

tag: string

Memberikan nilai

void

SetAttribute

void

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

Parameter

attribute: string

Nama属性 yang diatur.

value: Variant

Nilai untuk menetapkan属性 yang ditentukan.


Memberikan nilai

void

WaitForChild

Dapat Menghasilkan

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

childName: string

Class.Instance.Name untuk dicari.

timeOut: number

Parameter waktu pilihan.


Memberikan nilai

Class.Instance ditemukan.

Contoh Kode

Instance:WaitForChild

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

child: Instance

Class.Instance yang cu Instance.Parent telah diubah.

parent: Instance

Class.Instance.Parent baru dari Instance cuyo Instance.Parent berubah.


Contoh Kode

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

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

attribute: string

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

child: Instance

Class.Instance yang telah ditambahkan.


Contoh Kode

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

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

child: Instance

Class.Instance yang telah dihapus.


Contoh Kode

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

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

descendant: Instance

Class.Instance yang telah ditambahkan.


Contoh Kode

Instance.DescendantAdded

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

descendant: Instance

Class.Instance yang dihapus.


Contoh Kode

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

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