Instance

Pokaż przestarzałe

*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.

Brak możliwości tworzenia
Brak możliwości przeglądania

Instancja jest podstawową klasą dla wszystkich klas w hierarchii klas Roblox, które mogą być częścią drzewa DataModel. Nie jest możliwe bezpośrednie tworzenie obiektów Instancji.

Instancja ma specjalną funkcję nazwę Instance.new() , która jest używana do tworzenia obiektów za pośrednictwem kodu. Ta funkcja przyjmuje nazwę klasy jako parametr i zwraca stworzony obiekt. Klasy i usługi abstrakcyjne nie mogą być tworzone za pomocą funkcji Instancja.new .

Podsumowanie

Właściwości

  • Odczyt równoległy

    Określa, czy Instance i jego potomstwo można sklonować używając Instance:Clone() i zapisać/opublikować.

  • Capabilities:SecurityCapabilities
    Zabezpieczenia skryptów Roblox
    Odczyt równoległy

    Zestaw umożliwia używanie skryptów w tym kontenerze.

  • Odczyt równoległy

    Niepowtarzalny identyfikator Class.Instance .

  • Bez replikacji
    Odczyt równoległy

    Określa hierarchicznego rodzica Instance.

  • Ukryte
    Zabezpieczenia dodatku plug-in
    Odczyt równoległy
    Przestarzałe

    Uстареwiona właściwość, która chroniła CoreGui obiekty.

  • Bez replikacji
    Zabezpieczenia skryptów Roblox
    Odczyt równoległy

    Przesyła instancję do Sandboxed Container.

  • UniqueId:UniqueId
    Bez replikacji
    Brak możliwości dodawania do skryptu
    Zabezpieczenia na platformie Roblox
    Odczyt równoległy

Metody

Zdarzenia

Właściwości

Archivable

Odczyt równoległy

Ta właściwość określa, czy instancja powinna być włączona, gdy doświadczenie zostanie opublikowane lub zapisane, lub gdy Clone() jest wzywany na jednym z przodków instancji. Zadzwonienie Clone() bezpośred

Kopiowanie obiektu w Studio używając opcji Duplikuj lub Kopiuj / Wklej opcji ignoruje jego własną 1> Class.Instance.Archivable|Archivable1> właściwość i ustaw 4> Class.Instance.Archivable|Archivable4> na 7> true7> dla k


local part = Instance.new("Part")
print(part:Clone()) --> Part
part.Archivable = false
print(part:Clone()) --> nil

Capabilities

SecurityCapabilities
Zabezpieczenia skryptów Roblox
Odczyt równoległy

Zestaw umiejętności umożliwia używanie ich dla skryptów w tej instancja. Aby umiejętności zaczęły działać, właściwość Instance.Sandboxed musi być włączona.

Właściwość ta jest używana przez eksperymentalną funkcja. Zobacz stronę Kapabilności Skryptów po szczegóły.

Name

Odczyt równoległy

Niepowtarzalny identyfikator Class.Instance .

Ta właściwość jest identyfikatorem, który opisuje obiekt. Imiona nie są jednakowo unikalnymi identyfikatorami; wiele dzieci obiektu może podzielić się tą samą nazwą. Imiona są używane do zorganizowania hierarchii obiektu, wraz z umożliwieniem skryptom dostępu do określonych obiektów. Nazwa instancji nie może przekroczyć 100 znaków wielkości.

Nazwa obiektu jest często używana do uzyskania dostępu do obiektu poprzez hierarchię modelu danych używając następujący metody:


local baseplate = workspace.Baseplate
local baseplate = workspace["Baseplate"]
local baseplate = workspace:FindFirstChild("BasePlate")

Aby umożliwić dostęp do obiektu za pomocą operatora dot, imię obiektu musi podążać za pewną strukturą. Imię obiektu musi zacząć się od znaku podłużnego lub litery. Reszta imienia może zawierać tylko litery, licby lub znaki podkreślania (nie może to być żaden inny znak). Jeśli imię obiektu nie podąża za tą strukturą, nie będzie możliwe używanie go za

Jeśli więcej niż jeden obiekt z tego samego nazwy są bracia, to każda próba zindeksowania obiektu przez ten sam nazwa zwróci jedyny z obiektów znalezionych podobnych do Instance:FindFirstChild() , ale nie zawsze pożądany obiekt. Jeśli określony obiekt musi być uzyskany poprzez kod, zaleca się podanie mu unikalnego imienia lub gwarancji,

Uwaga, pełen nazwa pokazująca hierarchię instancjamożna uzyskać używając Instance:GetFullName() .

Parent

Bez replikacji
Odczyt równoległy

Właściwość Instance określa hierarchicznego rodzica. Terminologia poniżej jest powszechnie używana, gdy mówimy o tym, jak ta właściwość jest ustawiać:

  • Obiekt jest dzieckiem ( z podziałem na ) inny obiekt, gdy jego rodzic jest ustawiony na ten obiekt.
  • Potomstwo Class.Instance jest dzieckiem tego obiektu, plus dziecińmi również.
  • przodkowie Class.Instance są wszystkimi obiektami, z których Instytucja jest potomstwem.

Z tej właściwości pochodzi wiele innych członków API, takich jak GetChildren i FindFirstChild.

Funkcja Remove ustawia tę właściwość na nil. Wezwanie Destroy ustawi rodzic Instance i wszystkie jego potomstwa na 2>nil2>, a następnie 5>zablokuje5> rodzic. Błąd zostanie podwyższony, gdy

Ten właściwości jest również używany do zarządzania czy obiekt istnieje w grze lub potrzebuje usunięcia. Długość istnienia obiektu jest zapisana w zmiennej lub jest odniesiona przez inną właściwość obiektu, wtedy obiekt pozostanie w gra. W

Nowo utworzone obiekty używając Instance.new() nie będą miały rodziców, a zwykle nie będą widoczne lub działać do czasu ustawiaćjednego. Najbardziej podstawowe stworzenie obiektu ma dwa kroki: utworzenie obiektu i następnie ustawienie jego rodzica.


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

Gdy pewne właściwości są zmieniane podczas gdy instancja jest powiązana w DataModel, silnik może potrzebować wykonania dodatkowej pracy wewnętrznie (dla rzeczy takich jak replikacja, renderowanie i układ GUI). Zawsze, gdy to możliwe, zmień właściwości instancji przed ustawieniem jej rodzica, a nie po, aby uniknąć wykonania tej pracy niecel

Replikacja obiektu

Przedmiot stworzony przez serwer nie będzie się replikować na klientach, dopóki nie zostanie przypisany do jakiegoś obiektu, który jest replikowany. Gdy tworzysz obiekt, ustawienie wielu właściwości jest zalecane, aby ustawić ojciec ostatni . To zapewnia, że obiekt zostanie replikowany tylko raz, zamiast replikować wiele zmian właściwości.


local part = Instance.new("Part") -- Unikaj używania tu drugiego parametru
part.Anchored = true
part.BrickColor = BrickColor.new("Really red")
-- Potencjalnie wiele innych zmian właściwości może tu tu...
-- Zawsze ustaw rodzica na ostatnią chwilę!
part.Parent = workspace

Jeśli jednak miałeś swoje części z Model , której rodzic jeszcze nie został ustawiony, to rodzicienie każdej części do tej modelu jest dobre, ponieważ model jeszcze się nie replikował.

RobloxLocked

Ukryte
Zabezpieczenia dodatku plug-in
Odczyt równoległy

Ta właściwość używała chronić obiekty w CoreGui usłudze przed zmianą przez użytkowników w nieautoryzowany sposób. Została deprecji i nie robi nic.

Sandboxed

Bez replikacji
Zabezpieczenia skryptów Roblox
Odczyt równoległy

Przekształca instancję w kontener sandboxowy. Sandboxed Containers to funkcja eksperymentalna, która ogranicza działania, które może wykonać skrypt w określonym kontenerze.

Zobacz stronę Kapabilności Skryptu po więcej szczegółów.

UniqueId

UniqueId
Bez replikacji
Brak możliwości dodawania do skryptu
Zabezpieczenia na platformie Roblox
Odczyt równoległy

Metody

AddTag

void

Ten metodowy dodaje tag do instancja, bez efektu, jeśli tag jest już zaznaczony. Udane dodanie tagu spowoduje wysłanie sygnału stworzonego przez CollectionService:GetInstanceAddedSignal() z podanym tagiem.

Uwaga, że podczas oznaczania instancji jest powszechne, że niektóre zasoby są używane do podania funkcjonalności tagu, na przykład połączenia wątku lub tabel. Aby zapobiec wyciekom pamięci, dobrym pomysłem jest czyszczenie tych

Parametry

tag: string

Zwroty

void

ClearAllChildren

void

Funkcja ta niszczy wszystkie dzieci instancja.

Jako Instance:Destroy() również nazywa się na dzieciach obiektu, na którym jest używany, ta funkcja zniszczy wszystkie potomstwa.

Alternatywy dla ClearAllChildren

Jeśli rozwój nie chce zniszczyć wszystkich potomnych, powinien użyć Instance:GetChildren() lub Instance:GetDescendants() , aby przeprowadzić przez obiekt i wybrać, co zniszczyć. Na przykład poniższy kod przyjdzie zniszczyć wszystkie części w obiekcie.


for _, instance in object:GetDescendants() do
if instance:IsA("BasePart") then
instance:Destroy()
end
end

Zwroty

void

Przykłady kodu

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

Klonuj tworzy kopię instancji i wszystkich jej potomnych, ignorując wszystkie instancje, które nie są Archivable . Kopia korzenia instancji jest zwr

Jeśli właściwość referencyjna, taką jak ObjectValue.Value, jest ustawiona w klonowanej instancja, wartość właściwości kopii zależy od wartości oryginału:

  • Jeśli właściwość odniesie się do instancji, która była również sklonowana, kopia będzie odnosiła się do kopii.
  • Jeśli właściwość odniesienia odnosi się do obiektu, który nie był klonowany , to ta sama wartość jest utrzymywana w kopiach.

Zwroty

Przykłady kodu

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

Ustawia właściwość Instance.Parent na nil, zablokowuje właściwość Instance.Parent i odłącza wszystkie połączenia, a następnie wykonuje niszczenie na wszystkich dzieciach. Ta funkcja jest poprawnym sposobem pozbycia się niepotrzebnych obiektów. Niepotrz

Wskazówka: Po wezwaniu Destroy na obiekcie ustaw wszystkie zmienne odniesionych do obiektu (lub jego potomnych) na nil. To zapobiega, aby twój kod mógł uzyskać dostęp do czegoś do zrobienia z obiektem.


local part = Instance.new("Part")
part.Name = "Hello, world"
part:Destroy()
-- Nie robić tego:
print(part.Name) --> "Witaj, świat"
-- Zrób to, aby zapobiec działaniu powyższej linii:
part = nil

Gdy Instance zostanie zniszczony tym metodą, nie może być ponownie używany, ponieważ właściwość Instance.Parent jest zablokowana. Aby tymczasowo usunąć obiekt, ustaw Parent na nil zamiast tego. Na przykład:


object.Parent = nil
wait(2)
object.Parent = workspace

Aby usunąć obiekt po ustalonym czasie, użyj Debris:AddItem() .


Zwroty

void

Przykłady kodu

Instance:Destroy()

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

FindFirstAncestor

Zapis równoległy

Zwraca pierwszy przodkownik Instance, który ma Instance.Name równy nazwie danej instancji.

Funkcja ta działa w górę, co oznacza, że zaczyna się ona od natychmiastowego Instance.Parent instancji i działa w kierunku DataModel. Jeśli nie znaleziono odpowiedniego przodka, zwraca nil.

Poniższy kod snippet znaleźć pierwszy przodkę obiektu nazywającym się "Samochód".


local car = object:FindFirstAncestor("Car")

Dla wariantów tej funkcji, które znajdują przodków z określonej klasy, zobacz Instance:FindFirstAncestorOfClass() i Instance:FindFirstAncestorWhichIsA().

Parametry

name: string

Class.Instance.Name do którego należy szukać.


Zwroty

Znaleziono Instance.

FindFirstAncestorOfClass

Zapis równoległy

Zwraca pierwszy przodkun Class.Instance , który ma Instance równy podanemu nazwisku.

Funkcja ta działa w górę, co oznacza, że zaczyna się ona od natychmiastowego Instance.Parent instancji i działa w kierunku DataModel. Jeśli nie znaleziono odpowiedniego przodka, zwraca nil.

Zwykłym użyciem tej funkcji jest znalezienie Model a BasePart należące do. Na przykład:


local model = part:FindFirstAncestorOfClass("Model")

Funkcja ta jest wariantem Instance:FindFirstAncestor() , który sprawdza właściwość Object.ClassName zamiast Instance.Name. 1> Class.Instance:FindFirstAncestorWhichIsA()1> istnieje również, używając metody 4> Class.Object:IsA()

Parametry

className: string

Class.Object.className do którego należy szukać.


Zwroty

Znaleziono Instance.

FindFirstAncestorWhichIsA

Zapis równoległy

Zwraca pierwszy przodkownik Class.Instance dla którego Instance zwraca prawdę dla podanego identyfikatora klasy.

Funkcja ta działa w górę, co oznacza, że zaczyna się ona od natychmiastowego Instance.Parent instancji i działa w kierunku DataModel. Jeśli nie znaleziono odpowiedniego przodka, zwraca nil.

W przeciwieństwie do Instance:FindFirstAncestorOfClass() , ta funkcja używa Object:IsA() , co szanuje dziedzictwo klasy. Na przykład:


print(part:IsA("Part")) --> true
print(part:IsA("BasePart")) --> true
print(part:IsA("Instance")) --> true

Dlatego następujący kod przykładu będzie zwracać pierwszy BasePart przodkę, niezależnie czy jest to WedgePart, MeshPart lub 2>Class.Part2>.


local part = object:FindFirstAncestorWhichIsA("BasePart")

Zobacz również, Instance:FindFirstAncestor() .

Parametry

className: string

Class.Object.className do którego należy szukać.


Zwroty

Znaleziono Instance.

FindFirstChild

Zapis równoległy

Zwraca pierwsze dziecko Instance z podanym imieniem,

lub nil jeśli takie dziecko nie istnieje. Jeśli opcjonalny argument recursive jest prawdą, ta funkcja szuka wszystkich potomnych, a nie tylko najbliższych dzieci Instance.

Sprawdzenie istnienia obiektu

FindFirstChild jest konieczny, jeśli musisz zweryfikować, czy obiekt istnieje, zanim kontynuujesz. Próbowanie zindeksować dziecko według imienia używając operatora kropki wywołuje błąd, jeśli dziecko nie istnieje.


-- Następujące błędy linii, jeśli część nie istnieje w przestrzeni roboczej:
workspace.Part.Transparency = 0.5

Użyj znaleźć pierwsze dziecko, aby najpierw sprawdzić część, a następnie użyj if-句, aby wykonać kod, który tego wymaga.


local part = workspace:FindFirstChild("Part")
if part then
part.Transparency = 0.5
end

Znalezienie dziecka, którego imię pasuje do właściwości

Czasami Name obiektu jest taki sam jak własności jego Parent. Gdy używasz operatora kropki, właściwości biorą pierwszeństwo nad dziećmi, jeśli dzielą się imieniem.

W następnym przykładzie Folder zwany „Kolor” jest dodany do Part, który ma również właściwość Part.Color. 2>Class.Part.Color2> odnosi się do 5>Datatype.Color35>, a nie do 8>Folder8>.


local part = Instance.new("Part")
local folder = Instance.new("Folder")
folder.Name = "Color"
folder.Parent = part
local c = part.Color --> Kolor3
local c2 = part:FindFirstChild("Color") --> The Folder

Korzyść z używania FindFirstChild() w ten sposób jest to, że wprowadzanie nowych właściwości nie narzuca ryzyka dla twojego kodu.

Notatka o wydajności

FindFirstChild() dłużej się ściąga o około 20% niż używanie operatora dot i jest o 8 razy dłu

Parametry

name: string

Class.Instance.Name do wyszukania.

recursive: bool

Czy wyszukiwanie powinno być wykonane recursively lub nie.

Wartość domyślna: false

Zwroty

Znaleziono Instance.

Przykłady kodu

Instance:FindFirstChild

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

FindFirstChildOfClass

Zapis równoległy

Zwraca pierwsze dziecko Instance, którego ClassName jest równoznaczny z podanym nazwiskiem.

Jeśli nie znaleziono odpowiadającego dziecka, funkcja ta zwraca nil.

Oprócz funkcji Instance:FindFirstChildWhichIsA() ta funkcja zwraca tylko obiekty, które klasa pasuje do podanego identyfikatora klasy, ignorując dziedzictwo klasy.

Rozwijać szukający dziecka według imienia powinno używać Instance:FindFirstChild() zamiast tego.

Parametry

className: string

Class.Object.className do którego należy szukać.


Zwroty

Znaleziono Instance.

Przykłady kodu

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

Zapis równoległy

Zwraca pierwsze dziecko Instance dla którego Object:IsA() zwraca prawdę dla podanego identyfikatora klasy.

Jeśli nie znaleziono odpowiadającego dziecka, ta funkcja zwraca nil. Jeśli argument recursyjny opcjonalny jest prawdą, ta funkcja szuka wszystkich potomnych, a nie tylko bezpośrednich dzieci Instance .

Odwróć Instance:FindFirstChildOfClass() , funkcja używa Object:IsA() , co szanuje dziedzictwo klasy. Na przykład:


print(part:IsA("Part")) --> prawdziwy
print(part:IsA("BasePart")) --> prawdziwy
print(part:IsA("Instance")) --> true

Dlatego następujący kod przykładu będzie zwracać pierwsze dziecko BasePart , niezależnie czy jest to WedgePart , MeshPart lub 1> Class.Part1> .


local part = object:FindFirstChildWhichIsA("BasePart")

Rozwijać szukający dziecka według imienia, należy używać Instance:FindFirstChild() zamiast tego.

Parametry

className: string

Class.Object.className do którego należy szukać.

recursive: bool

Czy wyszukiwanie powinno być wykonane recursively lub nie.

Wartość domyślna: false

Zwroty

Znaleziono Instance.

FindFirstDescendant

Zapis równoległy

Zwraca pierwszy potomny znaleziony z danej Instance.Name .

Ten metod jest wyłączony i nie może być używany. Aby znaleźć pierwszego potomstwa instancja, rozważaj użycie parametru recursive na Instance:FindFirstChild() zamiast tego.

Parametry

name: string

The Instance.Name to search for.


Zwroty

Znaleziono Instance.

GetActor

Zapis równoległy

Jeśli Instance jest Actor, to sam Actor zostaje zwrócony. W przeciwnym wypadku jego najbliższy przodkowie 2>Class.Actor2> zostaną zwróceni. Jeśli żaden przodkowie nie jest 5>Class.Actor5>, wynikiem jest 8>nil8>.


Zwroty

Znaleziono Actor.

GetAttribute

Variant
Zapis równoległy

Ten metod returnuje wartość, która została przypisana do podanego imienia atrybutu. Jeśli nie zostało przypisane żadne atrybutu, nil jest zwracany.

Na przykład następujący kod ustawia i potem otrzymuje wartość PoczątkowaPozycja atrybutu instancja:


local part = workspace.Part
part:SetAttribute("InitialPosition", part.Position)
local initialPosition = instance:GetAttribute("InitialPosition")
print(initialPosition)

Zobacz również

Parametry

attribute: string

Nazwa właściwości, która jest odczytywana.


Zwroty

Variant

Wartość, która została przypisana do podanego imienia atrybutu. Jeśli nie powstało żadne atrybutu, nil jest zwracana.

GetAttributeChangedSignal

Funkcja ta zwraca wydarzenie, które zachowuje się dokładnie tak, jak wydarzenie Changed, z wyjątkiem tego, że działa tylko wtedy, gdy dany szczególny atrybut zmienia się; w efekcie jest to podobne do GetPropertyChangedSignal() dla atrybutów.

Zwykle dobrym pomysłem jest użycie tej metody zamiast połączenia z Changed przy użyciu funkcji sprawdzającej nazwę atrybutu. Kolejne wezwania do tej metody na tym samym obiekcie z tym samym imieniem atrybutu zwracają ten sam ewent.

Poniższy kod przykładu zwraca sygnał, który uruchamia funkcję attributeChanged(), gdy zmienia się cech początkowa pozycja części:


local part = workspace.Part
part:SetAttribute("InitialPosition", part.Position)
local function attributeChanged()
print("Attribute changed")
end
part:GetAttributeChangedSignal("InitialPosition"):Connect(attributeChanged)

Zobacz również Instance.AttributeChanged , który wszystko uruchamia, gdy każda cecha jest zmieniana na instancja.

Parametry

attribute: string

Nazwa właściwości określonej, dla której sygnał zmiany jest wysyłany.


Zwroty

Wydarzenie, które się wyrzuca, gdy dany atrybut zmienia się.

GetAttributes

Zapis równoległy

Ten metod returnuje słownik pary kluczowych dla każdej cechy, gdzie klucz jest nazwą cechy i wartość jest non- nil wartością.

Na przykład poniższy kod wygeneruje attrybuty i wartości instancja:


local part = workspace.Part
part:SetAttribute("InitialPosition", part.Position)
part:SetAttribute("CanUse", true)
for name, value in part:GetAttributes() do
print(name .. " = " .. value)
end

Zobacz również Instance:GetAttribute() , które zwraca wartość, która została przypisana do podanego imienia atrybutu.


Zwroty

Dictionary of string → variant pairs for each attribute, where the string is the name of the attribute, and the variant is a non-nil value.

GetChildren

Instances
Zapis równoległy

Zwraca arkadę (tabelę liczbową) zawierającą wszystkie bezpośrednie dzieci instancji lub każde Instance z których Parent jest równy z obiektem. Arkad można przeszukiwać używając liczby lub generycznego for-Loop:


-- Liczby przykładów for-loop
local children = workspace:GetChildren()
for i = 1, #children do
local child = children[i]
print(child.Name .. " is child number " .. i)
end

-- Generyczny przykład for-loop
local children = workspace:GetChildren()
for i, child in children do
print(child.Name .. " is child number " .. i)
end

Dzieci są sortowane według kolejności ustawienia ich właściwości Parent na obiekt.

Zobacz również funkcję GetDescendants.


Zwroty

Instances

Materiały zapisu dzieci instancji.

Przykłady kodu

Instance:GetChildren

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

GetDebugId

Brak możliwości przeglądania
Zabezpieczenia dodatku plug-in

Zwraca zaszyfrowaną wersję ID sesji używanej wewnętrznie przez Roblox.

Notatka:

  • Ten przedmiot jest chroniony. Spróbowanie użyć go w Script lub LocalScript spowoduje błąd
  • Identyfikator debug to tożsamość używana w procesach debugowania. Umożliwia on kompilatorowi czytać każde instrukcje zanim aplikacja je wykonuje. Wszystkie obiekty w Roblox działają jak zasady i każde wykonanie instrukcji (lub „kod”) można z debugować, jeśli to wymagane
  • Może to być pomocne dla wtyczek, które muszą rozróżnić podobne obiekty jeden od drugiego (takie jak obiekty, które dzielą tę samą nazwę)

Parametry

scopeLength: number

Długość zakresu.

Wartość domyślna: 4

Zwroty

ciągID Debug.

Przykłady kodu

Instance:GetDebugId

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

GetDescendants

Zapis równoległy

Ten metod obiektu zwraca arkusz, który zawiera wszystkie potomstwa tego obiektu. W przeciwieństwie do Instance:GetChildren(), który zwraca tylko bezpośrednie dzieci obiektu, ten metod znajduje każde dziecko obiektu, każde dziecko tych dzieci i tak dalej.


Zwroty

Materiały instancja.

Przykłady kodu

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

Zapis równoległy

Zwraca stronę opisującą przodkę instancji. Strona jest konkatenacją Name obiektu i jego przodków, oddzielonych przez przecinki. Strona DataModel (game nie jest rozważana. Na przykład,

Kiedy jest wezwany na Instance , które nie jest potomstwem z DataModel, ta funkcja rozważa wszystkich ojców do i including topowego bez Parent .

Funkcja ta jest przydatna do logowania i debugowania. Nie powinieneś próbować interpretować zwróconej wartości dla dowolnej użytecznej operacji; funkcja ta nie wykonuje okresów (lub innych symboli) w nazwach obiektów. Innymi słowy, choć jej wyjście często wydaje się być ważnym identyfikatorem Lua, nie jest gwarantowane.


Zwroty

Pełna nazwa Instance .

Przykłady kodu

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

Parametry

name: string

Zwroty

Variant

GetTags

Zapis równoległy

Ten metod returnuje maszynę w postaci matryki Tagów zastosowanych do danej instancja, jako łańcuchy. Możesz dodać Tagi w Studio w oknie Właściwości lub na czasie z AddTag() .

Ten metod jest użyteczny, gdy chcesz zrobić coś z wieloma tagami na instancji jednocześnie. Jest jednak nieefektywny używanie tego metodu do sprawdzenia istnienia pojedynczego tagu; zamiast tego użyj HasTag() aby sprawdzić istnienie określonego tagu.


Zwroty

HasTag

Zapis równoległy

Ten metod returnuje true jeśli dostarczony tag został dodany do obiektu. Możesz dodać tagi zarówno w Studio w oknie Właściwości lub podczas uruchomienia z AddTag() .

Parametry

tag: string

Zwroty

IsAncestorOf

Zapis równoległy

Wróщает prawdę, jeśli Instance jest przodkiem danej potomstwa.

Class.Instance jest uważany za przodka obiektu, jeśli jego Instance.Parent lub jeden z jego rodziców Instance.Parent jest ustawiony na 1>Class.Instance1> .

Zobacz również, Instance:IsDescendantOf() .

Parametry

descendant: Instance

Potomstwo Instance .


Zwroty

Prawdą jest, że Instance jest przodkiem danej potomstwa.

Przykłady kodu

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

Zapis równoległy

Wróщает prawdę, jeśli Instance jest potomstwem danej przodkownicy.

Class.Instance jest uważany za potomka obiektu, jeśli jego rodzic lub jeden z jego rodziców jest ustawiony na obiekt.

Uwaga, DataModel jest potomstwem nilu. Oznacza to, że IsDescendantOf nie może być używany z parametrem nilu, aby sprawdzić, czy obiekt został usunięty.

Zobacz również, Instance:IsAncestorOf() .

Parametry

ancestor: Instance

Przodki Instance .


Zwroty

Prawdą jest, że Instance jest potomstwem danej przodkownicy.

Przykłady kodu

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

Ten metod usuwa tag z instancja. Nie będzie wyświetlać błędu, jeśli obiekt nie ma tagu. Usuwanie tagu z powodzeniem usunie sygnał stworzony przez CollectionService:GetInstanceRemovedSignal() z podanym tagiem.

Uwaga, że gdy taguje instancja, jest powszechne, że niektóre zasoby są używane do zapewnienia funkcjonalności tagu, na przykład połączenia wątku lub tabel. Aby zapobiec wyciekom pamięci, dobre jest, aby je wyczyścić (otrzymywanie, ustawienie do nil itp.) gdy nie są już wymagane dla tagu.

Parametry

tag: string

Zwroty

void

SetAttribute

void

Ten metod ustawia atrybut z podanym nazwą na podany wartość. Jeśli wartość podana jest nil, atrybut zostanie usunięty, ponieważ nil jest zwracane domyślnie.

Na przykład poniższy kod ustawia właściwość Początkowa pozycja instancji na Vector3.new(0, 10, 0) :


local part = workspace.Part
part:SetAttribute("InitialPosition", Vector3.new(0, 10, 0))

Ograniczenia

Wymagania i ograniczenia nazywania:

  • Imiona muszą używać tylko alfanumerycznych znaków i podwójników.
  • Nie są dozwolone żadne przestrzenie ani żadne unikalne symbole.
  • Smoczki muszą być mniejsze niż 100 znaków.
  • Nazwa nie może zacząć się od RBX chyba że ktoś jest kryptą Roblox (zarezerwowaną dla Roblox).

Podczas próby ustawienia atrybutu na nieobsługiwany wpisywaćbłąd zostanie rzucony.

Zobacz również:

Parametry

attribute: string

Nazwa atrybutu, który jest ustawiać.

value: Variant

Wartość ustawienia określonego atrybutu.


Zwroty

void

WaitForChild

Możliwy wynik

Zwraca dziecko Class.Instance z podanym imieniem. Jeśli dziecko nie istnieje, to wygeneruje bieżący wątek, aż będzie istnieć. Jeśli parametr timeOut jest określony, ten metodowy wygasa po określonym liczbie sekund i powraca nil.

Pierwsze użycie

WaitForChild() jest niezwykle ważne, gdy pracujesz nad kodem zeskanowanym przez klienta w LocalScript. Silnik Roblox nie gwarantuje czasu lub kole

Notatki

  • Funkcja ta nie zwraca wyniku, jeśli dziecko z podanym nazwiskiem istnieje, gdy wezwanie jest wysłane.
  • Instance:FindFirstChild() jest bardziej wydajnym alternatywą dla WaitForChild() dla obiektów, które są zakładane do istnienia.
  • Jeśli wezwanie do tej metody przekroczy 5 sekund bez powrotu, a żaden parametr timeOut nie został określony, to będzie wyświetlony ostrzeżenie dla wyjścia, które może być niezdefiniowane przez wątek w nieskończoność.

Parametry

childName: string

Class.Instance.Name do którego należy szukać.

timeOut: number

Opcjonalny parametr czasu wygasa.


Zwroty

Znaleziono Instance.

Przykłady kodu

Instance:WaitForChild

local part = workspace:WaitForChild("Part")
print(part.Name .. " has been added to the Workspace")

Zdarzenia

AncestryChanged

Wyst?puje, gdy w?a?czono w?a?czn? w?a?czno? ?Class.Instance.Parent()Instance.Parent lub jeden z jego ojców.

To wydarzenie obejmuje dwa parametry, dziecko i rodzic. Dziecko odnosi się do 2> Class.Instance2> , której 5> Class.Instance.Parent5> zostało w rzeczywistości zmienione. 8> Rodzic8> odnosi się do nowego 1> Class.Instance.Parent1>

Możesz użyć tego wydarzenia, aby śledzić usunięcie instancji w Studio, takie jak ręczne usuwanie w Explorerze lub poprzez dodatek plug-in. Jeśli musisz wykryć, gdy instancja jest usuwana używając Instance:Destroy() , użyj wydarzenia Instance.Destroying zamiast tego.

Parametry

child: Instance

Class.Instance , których Instance.Parent został zmieniony.

parent: Instance

Nowa Instance.Parent Class.Instance , która zmieniła swojego Instance .


Przykłady kodu

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

Ten wąż pojawia się, gdy każda cecha jest zmieniana na instancja, w tym gdy cecha jest ustawiona na nil . Nazwa zmienionej cechy jest przekazywana do funkcji połączonej.

Na przykład poniższy kod połącza funkcję attributeChanged(), aby uruchomić, gdy jeden z atrybutów części zmienia się:


local part = workspace.Part
local function attributeChanged(attributeName)
print(attributeName, "changed")
end
part.AttributeChanged:Connect(attributeChanged)

Zobacz również Instance:GetAttributeChangedSignal() , który powoduje uruchomienie wydarzenia, które następuje, gdy określony atribut zmienia się.

Parametry

attribute: string

Nazwa atrybutu, który został zmieniony.


ChildAdded

Wystąpi po połączeniu obiektu z tym Instance .

Uwaga, gdy używasz tej funkcji na klientach, aby wykryć obiekty stworzone przez serwer, jest konieczne użycie Instance:WaitForChild() , gdy indeksuje się jego potomstwa. To jest dlatego, że obiekt i jego potomstwa nie są gwarantowane, aby replikować z serwera na klienta równocześnie. Na przykład:


workspace.ChildAdded:Connect(function(child)
-- need to use WaitForChild as descendants may not have replicated yet
local head = child:WaitForChild("Head")
end)

Uwaga, ta funkcja działa tylko dla natychmiastwych dzieci Instance . Dla funkcji, która captures wszystkie potomstwa, użyj Instance.DescendantAdded .

Zobacz również, Instance.ChildRemoved .

Parametry

child: Instance

Class.Instance , który został dodany.


Przykłady kodu

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

Wystąpi po usunięciu dziecka z tego Instance .

Usuwany odnosi się do tego, gdy rodzic obiektu zostanie zmieniony z tego Instance do czegoś innego niż tego Instance . Uwaga, ten wydarzenie będzie również uruchomiony, gdy dziecko zostanie zniszczone (używając Instance:Destroy() ) jako że funkcja destroy ustawia rodzica na nil.

Funkcja ta działa tylko dla natychmiastwych dzieci Instance . Dla funkcji, która captures wszystkie potomstwa, użyj Instance.DescendantRemoving .

Zobacz również Instance.ChildAdded .

Parametry

child: Instance

Class.Instance , który został usunięty.


Przykłady kodu

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

Wydarzenie DescendantAdded zostanie uruchomione po dodaniu Instance do dziecka.

Gdy użytkownikDescendant dodaje ogień dla każdego potomstwa, rodziciel obiektu do Instance będzie ognistą dla tego obiektu i wszystkich jego potomnych osobno.

Developers only concerned with the immediate children of the Instance should use Instance.ChildAdded instead.

Zobacz również Instance.DescendantRemoving .

Parametry

descendant: Instance

Class.Instance , który został dodany.


Przykłady kodu

Instance.DescendantAdded

local function onDescendantAdded(descendant)
print(descendant)
end
workspace.DescendantAdded:Connect(onDescendantAdded)
local part = Instance.new("Part")
part.Parent = workspace

DescendantRemoving

Ten wąż pojawia się w natychmiastowo przed zmianami Instance rodziców, tak aby instancja potomstwa nie była już potomstwem. 2> Class.Instance:Destroy()|Destroy()2> zmienia rodziców 5> Class.Instance.Parent|Parent

Ponieważ ten wątek wydarzenia przed usunięciem potomstwa, rodzic dziecka nie zostanie zmieniony w czasie tego wydarzenia Instance.ChildRemoved. Jeśli dziecko jest również 2>dzieckiem bezpośrednim2> rodzica, ten wątek wydarzenia 5>zostanie wstrzelony5> przed 8>usunięciem8>.

Jeśli potomstwo ma dzieci, ten wątek się uruchomi z najpierw z potomstwa, a następnie z jego potomnych.

Ostrze?enie

Ten ewent zostanie uruchomiony z obiektem dziecka, który jest usuwany. Próbując ustawić Parent dziecka na coś innego, nie powiódł się. Poniżej jest przykład, który pokazuje to:


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

Zobacz również DescendantAdded .

Parametry

descendant: Instance

Class.Instance , który jest usuwany.


Przykłady kodu

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

Przedmiot Instance nigdy nie będzie usuwany z pamięci, gdy funkcja połączona nadal go używa. Jeśli funkcja zakończy się w dowolnym momencie, to Instance i jego potomstwo będą związane z nil .

Jeśli właściwość Workspace.SignalBehavior ustawiona jest na Enum.SignalBehavior.Immediate, ten ewent wyzwala natychmiastowo, zanim jedna z właściwości Instance lub jedno z jej ojców zostanie zniszczone za pomocą 1>Class.Instance:Destroy()1>.

Jeśli właściwość Workspace.SignalBehavior ustawiona jest na Enum.SignalBehavior.Deferred, ten ewent wyzwala się na następnym punkcie zakończenia, który będzie po poziomie Instance lub jednej z jego potomnych zniszczonych za pomocą 1> Class.Instance:Destroy()1>.

Z zachowaniem Deferred ta łączność skryptu z własnym Instance.Destroying wydarzeniem jest problematyczna, ponieważ skrypt zostanie zniszczony przed tym, jak można wywołać powrót (co oznacza, że nie zostanie wykonany).

Podczas usuwania Instance w Studio, takich jak usuwanie ręczne poprzez Explorer lub poprzez dodatek plug-in, Instance nie jest usuwany. Zamiast tego ustawiono 1> nil1>, którego można śledzić za pomocą 4> Class.Instance.AncestryChanged4>.


Przykłady kodu

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