Instance
*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.
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
Określa, czy Instance i jego potomstwo można sklonować używając Instance:Clone() i zapisać/opublikować.
Zestaw umożliwia używanie skryptów w tym kontenerze.
Niepowtarzalny identyfikator Class.Instance .
Określa hierarchicznego rodzica Instance.
Uстареwiona właściwość, która chroniła CoreGui obiekty.
Przesyła instancję do Sandboxed Container.
Metody
Zastosowuje tag do instancja.
Funkcja ta niszczy wszystkie dzieci instancja.
Utwórz kopię instancji i wszystkich jej potomnych, ignorując instancje, które nie są Archivable.
Ustawia właściwość Instance.Parent na nil, zablokowuje właściwość Instance.Parent i odłącza wszystkie połączenia, a następnie wzywa Usuń na wszystkich dzieciach.
Zwraca pierwszy przodkownik Instance, który ma Instance.Name równy nazwie danej instancji.
Zwraca pierwszy przodkun Class.Instance , który ma Instance równy podanemu nazwisku.
Zwraca pierwszy przodkownik Class.Instance dla którego Instance zwraca prawdę dla podanego identyfikatora klasy.
Zwraca pierwsze dziecko Instance znalezione z podanym nazwą.
Zwraca pierwsze dziecko Instance, którego ClassName jest równoznaczny z podanym nazwiskiem.
Zwraca pierwsze dziecko Instance dla którego Object:IsA() zwraca prawdę dla podanego identyfikatora klasy.
Zwraca pierwszy potomny znaleziony z danej Instance.Name .
Zwraca Actor związany z Instancją, jeśli jest.
Zwraca wartość, która została przypisana do podanego imienia atrybutu.
Zwraca wydarzenie, które się wyróżnia, gdy dany atrybut zmienia się.
Zwraca słownik atrybutów instancja.
Zwraca arkusz, zawierający wszystkie dzieci instancja.
Zwraca zaszyfrowaną wersję ID sesji używanej wewnętrznie przez Roblox.
Zwraca maszynę zawierającą wszystkich potomnych instancja.
Zwraca strunę opisującą przodkę instancja.
Dostarcza maszynę wszystkich zastosowanych tagów do instancja.
Sprawdź, czy instancja ma podany tag.
Wróщает prawdę, jeśli Instance jest przodkiem danej potomstwa.
Wróщает prawdę, jeśli Instance jest potomstwem danej przodkownicy.
Usunie tag z instancja.
Ustawia atrybut z podanym nazwiskiem na podany wartości.
Zwraca dziecko Instance z podanym imieniem. Jeśli dziecko nie istnieje, to będzie ono wykonywać bieżący wątek, aż się pojawi.
Zdarzenia
Wyst?puje, gdy w?a?czono w?a?czn? w?a?czno? ?Class.Instance.Parent()Instance.Parent lub jeden z jego ojców.
Wystąpi, gdy atrybut jest zmieniony na Instance .
Wystąpi po połączeniu obiektu z tym Instance .
Wystąpi po usunięciu dziecka z tego Instance .
Wystąpi po dodaniu zespołu do Instance.
Wystrzela natychmiastowo, zanim dziecko Instance zostanie usunięte.
Wykonuje natychmiastowo przed (lub jest odkładany do późniejszego czasu) instancji poprzez Instance:Destroy() .
Właściwości
Archivable
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()) --> Partpart.Archivable = falseprint(part:Clone()) --> nil
Capabilities
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
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.Baseplatelocal 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
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 workspacelocal part = Instance.new("Part")part.Parent = workspace-- Instance new can also take Parent as a second parameterInstance.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 parametrupart.Anchored = truepart.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
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
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
Metody
AddTag
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
Zwroty
ClearAllChildren
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() doif instance:IsA("BasePart") theninstance:Destroy()endend
Zwroty
Przykłady kodu
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
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
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
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 = nilwait(2)object.Parent = workspace
Aby usunąć obiekt po ustalonym czasie, użyj Debris:AddItem() .
Zwroty
Przykłady kodu
local part = script.Parent.Part
part:Destroy()
FindFirstAncestor
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
Class.Instance.Name do którego należy szukać.
Zwroty
FindFirstAncestorOfClass
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
Class.Object.className do którego należy szukać.
Zwroty
FindFirstAncestorWhichIsA
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")) --> trueprint(part:IsA("BasePart")) --> trueprint(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
Class.Object.className do którego należy szukać.
Zwroty
FindFirstChild
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 thenpart.Transparency = 0.5end
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 = partlocal c = part.Color --> Kolor3local 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
Class.Instance.Name do wyszukania.
Czy wyszukiwanie powinno być wykonane recursively lub nie.
Zwroty
Przykłady kodu
local found = workspace:FindFirstChild("Brick")
if found then
found.Name = "Foo"
end
FindFirstChildOfClass
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
Class.Object.className do którego należy szukać.
Zwroty
Przykłady kodu
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
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")) --> prawdziwyprint(part:IsA("BasePart")) --> prawdziwyprint(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
Class.Object.className do którego należy szukać.
Czy wyszukiwanie powinno być wykonane recursively lub nie.
Zwroty
FindFirstDescendant
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
The Instance.Name to search for.
Zwroty
GetActor
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
GetAttribute
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.Partpart:SetAttribute("InitialPosition", part.Position)local initialPosition = instance:GetAttribute("InitialPosition")print(initialPosition)
Zobacz również
- Instance:SetAttribute() , który ustawia atrybut z podanym nazwą na podany wartości.
- Instance:GetAttributes() który powoduje powrót dictionarza parametrów kluczowych dla każdego atrybutu instancja.
Parametry
Nazwa właściwości, która jest odczytywana.
Zwroty
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
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
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.Partpart:SetAttribute("InitialPosition", part.Position)part:SetAttribute("CanUse", true)for name, value in part:GetAttributes() doprint(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
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-looplocal children = workspace:GetChildren()for i = 1, #children dolocal child = children[i]print(child.Name .. " is child number " .. i)end
-- Generyczny przykład for-looplocal children = workspace:GetChildren()for i, child in children doprint(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
Materiały zapisu dzieci instancji.
Przykłady kodu
local children = workspace:GetChildren()
for i = 1, #children do
print(i, children[i].Name)
end
GetDebugId
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
Długość zakresu.
Zwroty
ciągID Debug.
Przykłady kodu
print(workspace:GetDebugId()) --> 39FA_12
print(workspace:GetDebugId(10)) --> 39FA2FEF4D_12
print(workspace:GetDebugId(math.huge)) --> 12
GetDescendants
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
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
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
Przykłady kodu
-- Create a simple hierarchy
local model = Instance.new("Model")
local part = Instance.new("Part")
part.Parent = model
local fire = Instance.new("Fire")
fire.Parent = part
print(fire:GetFullName()) --> Model.Part.Fire
model.Parent = workspace
print(fire:GetFullName()) --> Workspace.Model.Part.Fire
part.Name = "Hello, world"
print(fire:GetFullName()) --> Workspace.Model.Hello, world.Fire
local function getFullName(object)
local result = object.Name
object = object.Parent
while object and object ~= game do
-- Prepend parent name
result = object.Name .. "." .. result
-- Go up the hierarchy
object = object.Parent
end
return result
end
print(getFullName(workspace.Camera)) --> Workspace.Camera
GetTags
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
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
Zwroty
IsAncestorOf
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
Zwroty
Przykłady kodu
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
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
Zwroty
Przykłady kodu
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
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
Zwroty
SetAttribute
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.Partpart: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ż:
- Instance:GetAttribute() która zwraca wartość przypisaną danemu imieniu atrybutu.
- Instance:GetAttributes() który powoduje powrót dictionarza parametrów kluczowych dla każdego atrybutu instancja.
Parametry
Nazwa atrybutu, który jest ustawiać.
Wartość ustawienia określonego atrybutu.
Zwroty
WaitForChild
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
Class.Instance.Name do którego należy szukać.
Opcjonalny parametr czasu wygasa.
Zwroty
Przykłady kodu
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
Class.Instance , których Instance.Parent został zmieniony.
Nowa Instance.Parent Class.Instance , która zmieniła swojego Instance .
Przykłady kodu
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
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
Class.Instance , który został dodany.
Przykłady kodu
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
Class.Instance , który został usunięty.
Przykłady kodu
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
Class.Instance , który został dodany.
Przykłady kodu
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
Class.Instance , który jest usuwany.
Przykłady kodu
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
local part = Instance.new("Part", workspace)
local function onPartDestroying()
print("Before yielding:", part:GetFullName(), #part:GetChildren())
task.wait()
print("After yielding:", part:GetFullName(), #part:GetChildren())
end
part.Destroying:Connect(onPartDestroying)
part:Destroy()
local part = Instance.new("Part", workspace)
local function onPartDestroying()
print("In signal:", part:GetFullName(), #part:GetChildren())
end
part.Destroying:Connect(onPartDestroying)
print("Before destroying:", part:GetFullName(), #part:GetChildren())
part:Destroy()
print("After destroying:", part:GetFullName(), #part:GetChildren())