Instance

사용되지 않는 항목 표시

*이 콘텐츠는 AI(베타)를 사용해 번역되었으며, 오류가 있을 수 있습니다. 이 페이지를 영어로 보려면 여기를 클릭하세요.

만들 수 없음
찾아볼 수 없음

인스턴스는 Roblox 클래스 계층의 모든 클래스를 기반으로 하는 인스턴스 클래스입니다. 인스턴스 개체를 직접 생성할 수는 없습니다.

Datatype.Instance.new() 는 코드로 개체를 생성하는 특수 함수를 가지고 있습니다. 이 함수는 클래스 이름을 매개 변수로 사용하고 생성된 개체를 반환합니다. 개체를 생성하는 인스턴스에는 Datatype.Instance.new() 이라는 이름이 없습니다. 이 함수는 인스턴스에서 개체를 생성하는 데 사용할 수 없습니다.

요약

속성

  • 병렬 읽기

    Class.Instance 및 그 후손이 Instance:Clone() 를 사용하여 클론할 수 있고 저장/게시할 수 있습니다.

  • Capabilities:SecurityCapabilities
    병렬 읽기

    이 컨테이너 내에서 사용할 수 있는 스크립트 집합.

  • 병렬 읽기

    Class.Instance의 고유하지 않은 식별자.

  • 복제되지 않음
    병렬 읽기

    Class.Instance의 상위 계층 부모를 결정합니다.

  • 숨김
    병렬 읽기
    사용되지 않음

    Class.CoreGui 개체를 보호하는 데 사용되는 앞서 지정된 속성입니다.

  • 복제되지 않음
    병렬 읽기

    인스턴스를 샌드박스 컨테이너로 전환합니다.

  • UniqueId:UniqueId
    복제되지 않음
    스크립팅할 수 없음
    병렬 읽기

메서드

이벤트

속성

Archivable

병렬 읽기

이 속성은 경험이 게시되거나 저장될 때 인스턴스를 포함할지 여부를 결정합니다. 또는 Clone() 를 호출하면 인스턴스의 조상 중 하나에 직접 Clone() 을 반환합니다.

Duplicate 또는 Copy / Paste 옵션을 사용하여 Studio에서 개체를 복사하면 자체 Class.Instance.Archivable|Archivable 속성을 무시하고 Class.Instance.Archivable|Archivable를 복사로 설정합니다.


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

Capabilities

SecurityCapabilities
병렬 읽기
Roblox 스크립트 보안

이 인스턴스 내의 스크립트에 사용할 수 있는 기능 세트. 기능이 적용되려면 Instance.Sandboxed 속성이 활성화되어야 합니다.

이 속성은 실험적 기능에 의해 사용됩니다. 자세한 내용은 스크립트 가능성 페이지를 참조하십시오.

Name

병렬 읽기

Class.Instance의 고유하지 않은 식별자.

이 속성은 개체를 설명하는 식별자입니다. 이름은 반드시 고유한 식별자가 아니지만 개체의 여러 자식이 동일한 이름을 공유할 수 있습니다. 이름은 개체 계층을 구성하는 데 사용되며, 스크립트가 특정 개체에 액세스할 수 있도록 허용하는 것과 함께 이름을 사용하여 개체 계층을 구성할 수 있

개체의 이름은 다음과 같은 메서드를 사용하여 데이터 모델 계층을 통해 개체에 액세스하는 경우가 많습니다.The name of an object is often used to access the object through the data model hierarchy using the following methods:


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

dot 연산자를 사용하여 개체에 액세스하려면 개체의 이름이 특정 구문을 따라야 합니다. 개체 이름은 대시 또는 문자열로 시작해야 합니다. 나머지 이름은 문자, 숫자 또는 대시만 포함할 수 있습니다(다른 특수 문자는 없음). 개체 이름이 이 구문을 따르지 않으

동일한 이름을 가진 하나 이상의 개체가 형제인 경우, 그 이름으로 개체를 인덱싱하려는 모든 시도는 Instance:FindFirstChild() 에 유사한 개체를 반환하지만, 항상 원하는 개체가 아닙니다. 코드로 액세스해야 하는 특정 개체에 대해 이름을 지정

참고, 인스턴스의 계층을 표시하는 전체 이름은 Instance:GetFullName() 를 사용하여 얻을 수 있습니다.

Parent

복제되지 않음
병렬 읽기

부모 속성은 Instance의 계층 부모를 결정합니다. 다음 용어는 이 속성이 설정되는 방법에 대해 일반적으로 사용됩니다.

  • 개체는 부모가 해당 개체인 경우 자식이 됩니다(<a href="/reference/engine/datatypes">데이터 형식</a>).
  • Class.Instance 의 하위는 자식이며, 자식의 하위도 마찬가지입니다.
  • Class.Instance의 조상은 모두 인스턴스가 후손인 개체입니다.

이 속성에서 다른 API 멤버의 이름을 가져오는 경우, 예를 들어 GetChildrenFindFirstChild 입니다.

Class.Instance:Remove()|Remove 함수는 이 속성을 일반화하지 않습니다. 부모 속성을 일반화하려면 Destroy 를 호출하고 모든 후손을 Instance 로 설정하고, 부모 속성을 1> 잠금

이 속성은 또한 개체가 게임에 있는지 여부를 관리하는 데 사용됩니다. 개체가 게임 내에 있거나 제거해야 하는 경우 해당 개체는 변수에 저장되거나 다른 개체의 속성에

새로 생성된 개체는 부모가 없으며 일반적으로 하나가 설정될 때까지 보이지 않거나 기능을 수행하지 않습니다. 개체의 가장 기본적인 생성 단계는 두 가지입니다. 개체를 생성한 다음 부모를 설정합니다.


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

Class.DataModel 의 인스턴스가 부모인 동안 특정 속성에 변경이 있으면 엔진은 내부적으로 추가 작업을 수행해야 할 수 있습니다(예: 복제, 렌더링 및 GUI 레이아웃). 가능하면 속성을 변경하기 전에 인스턴스의 속성을 이전 하세요, 부모가

개체 복제

서버에서 생성된 개체는 복제할 개체에 부모로 지정될 때까지 클라이언트에 복제되지 않습니다. 개체를 생성한 다음 많은 속성을 설정하면 좋습니다. 이렇게 하면 개체가 한 번만 복제되고 다른 속성 변경을 복제하지 않습니다.


local part = Instance.new("Part") -- 여기서 두 번째 매개 변수를 사용하지 마십시오
part.Anchored = true
part.BrickColor = BrickColor.new("Really red")
-- 여기에 다른 속성 변경 사항이 많이 있을 수 있습니다...
-- 항상 부모를 마지막으로 설정하십시오!
part.Parent = workspace

그러나, Model의 부모가 아직 설정되지 않은 경우 각 부모가 해당 모델에 부모로 지정되면 모델이 아직 복제되지 않은 상태에서 각 부모에 대해 부모가 되는 것이 좋습니다.

RobloxLocked

숨김
병렬 읽기
플러그인 보안

이 속성은 CoreGui 서비스에서 사용자가 수정하는 경우 사용자가 수정하는 개체를 보호하는 데 사용되었습니다. 이 속성이 사용 안 함이 되었으며 작동하지 않습니다.

Sandboxed

복제되지 않음
병렬 읽기
Roblox 스크립트 보안

인스턴스를 샌드박스 컨테이너로 전환합니다. 샌드박스 컨테이너는 특정 컨테이너 내의 스크립트가 수행할 수 있는 작업을 제한하는 실험적인 기능입니다.

자세한 내용은 스크립트 기능 페이지를 참조하십시오.

UniqueId

UniqueId
복제되지 않음
스크립팅할 수 없음
병렬 읽기
Roblox 보안

메서드

AddTag

void

이 메서드는 태그가 이미 적용된 경우에도 효과가 없습니다. 태그를 성공적으로 추가하면 CollectionService:GetInstanceAddedSignal() 에 의해 생성된 신호가 발생합니다.

태그를 인스턴스에 적용할 때 일부 리소스가 태그의 기능을 제공하는 데 사용되므로 메모리 누출을 방지하기 위해 이 리소스를 정리해야 합니다(예: 이벤트 연결이나

매개 변수

tag: string

반환

void

ClearAllChildren

void

이 함수는 인스턴스의 모든 자식을 파괴합니다.

Class.Instance:Destroy() 는 개체에 사용되는 자식을 호출하는 경우, 이 함수는 모든 후손을 파괴합니다.

ClearAllChildren 대안

개발자가 모든 후손을 파괴하지 않도록 하려면 Instance:GetChildren() 또는 Instance:GetDescendants() 를 사용하여 개체를 루프하고 무엇을 파괴할지 선택해야 합니다. 예를 들어, 다음 코드 샘플은 모든 부품을 개체에 파괴합니다.


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

반환

void

코드 샘플

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

클론 은 모든 인스턴스와 그 모든 후손을 복제합니다. 모든 인스턴스가 Class.Instance.Archivable|Archivable 이 아님을

클론된 인스턴스에 참조 속성이 설정된 경우 복사본의 속성 값은 원본의 값에 따라 변경됩니다.If a reference property such as ObjectValue.Value is set in a cloned instance, the value of the copy's property depends on original's value:

  • 참조 속성이 클론된 인스턴스를 가리키면 복사본은 복사본에 대해 참조됩니다.
  • 참조 속성이 복제되지 않은 개체를 참조하는 경우 복사본에 동일한 값이 유지됩니다.If a reference property refers to an object that was not cloned, the same value is maintained in the copy.

반환

코드 샘플

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

Class.Instance.Parent 속성을 일괄 설정하여 클래스 인스턴스 부모를 일괄 설정하고, Instance.Parent 속성을 잠금으로 잠긴 상태로 연결을 해제하고, 모든 연결을 해제하고 모든 자식을 종

팁: 개체를 파괴할 때 개체(또는 그 후손)에 대한 모든 변수를 0으로 설정합니다. 이렇게 하면 코드가 개체에 대한 작업을 수행할 수 없습니다.


local part = Instance.new("Part")
part.Name = "Hello, world"
part:Destroy()
-- 다음을 하지 마십시오.
print(part.Name) --> "Hello, world"
-- 위의 줄이 작동하지 않도록 하려면 이 작업을 수행하십시오.
part = nil

이 메서드로 Instance 가 파괴되면 속성 Instance.Parent 가 잠겨 있기 때문에 다시 사용할 수 없습니다. 임시로 개체를 제거하려면 Parent 를 nil로 설정합니다. 예를 들어:


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

특정 시간 후에 개체를 파괴하려면 Debris:AddItem() 을 사용합니다.


반환

void

코드 샘플

Instance:Destroy()

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

FindFirstAncestor

병렬 쓰기

주어진 이름과 같은 Instance의 첫 번째 조상을 반환합니다.

이 함수는 위로 작동하며 즉시 Instance.Parent 에서 시작하고 DataModel 까지 작동합니다. 일치하는 조상이 없으면 일치하지 않는 조상을 반환합니다.

다음 코드 랫폼에서는 'Car'라는 개체의 첫 번째 조상을 찾습니다.


local car = object:FindFirstAncestor("Car")

특정 클래스의 조상을 찾는 변형의 경우 Instance:FindFirstAncestorOfClass()Instance:FindFirstAncestorWhichIsA() 을 참조하십시오.

매개 변수

name: string

검색할 Instance.Name입니다.


반환

Class.Instance 발견.

FindFirstAncestorOfClass

병렬 쓰기

주어진 키워드와 일치하는 Instance의 첫 번째 조상을 반환합니다.

이 함수는 위로 작동하며 즉시 Instance.Parent 에서 시작하고 DataModel 까지 작동합니다. 일치하는 조상이 없으면 일치하지 않는 조상을 반환합니다.

이 함수의 일반적인 사용은 ModelBasePart 에 속한지 찾는 것입니다. 예를 들어:


local model = part:FindFirstAncestorOfClass("Model")

이 함수는 Instance:FindFirstAncestor()의 변형이며, Object.ClassName 속성을 확인하는 대신 Instance.Name 를 사용합니다. 1> Class.Instance:FindFirstAncestorWhichIsA()1> 또한 클래스 상속을 위해

매개 변수

className: string

찾을 클래스 개체 Object.ClassName 입니다.


반환

Class.Instance 발견.

FindFirstAncestorWhichIsA

병렬 쓰기

Class.Instance의 첫 번째 조상을 반환하며, Object:IsA()가 지정된 클래스 이름에 대해 진실로 반환합니다.

이 함수는 위로 작동하며 즉시 Instance.Parent 에서 시작하고 DataModel 까지 작동합니다. 일치하는 조상이 없으면 일치하지 않는 조상을 반환합니다.

Class.Instance:FindFirstAncestorOfClass() 과는 달리, 이 함수는 Object:IsA()를 사용하여 클래스 상속을 존중합니다. 예를 들어:


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

따라서 다음 코드 샘플은 첫 번째 BasePart 조상을 반환하지만, 이것이 WedgePart, MeshPart 또는 2>Class.Part2>인지 여부에 관계없이 합니다.


local part = object:FindFirstAncestorWhichIsA("BasePart")

또한 참조하십시오, Instance:FindFirstAncestor() .

매개 변수

className: string

찾을 클래스 개체 Object.ClassName 입니다.


반환

Class.Instance 발견.

FindFirstChild

병렬 쓰기

Class.Instance 의 첫 번째 자식을 반환하고 지정된 이름으로 이름을 변경합니다.

또는 nil 이 경우 해당 자식이 없습니다. 옵션 recursive 인수가 트루인 경우 이 함수는 모든 후손을 검색하지만 Instance 의 즉시 자식만 검색합니다.

개체 존재 확인

FindFirstChild 개체가 존재하는지 확인해야 하는 경우 작업을 계속하기 전에 개체가 존재하는지 확인하십시오. 자식을 이름별로 인덱싱하려면 자식이 없는 경우 오류가 발생합니다.


-- 작업 공간에 부품이 없는 경우 다음 줄 오류가 발생합니다.
workspace.Part.Transparency = 0.5

FindFirstChild를 사용하여 부품을 먼저 검사한 다음 if-문을 사용하여 필요한 코드를 실행합니다.


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

속성에 일치하는 자식 찾기

개체의 Name 이 개체의 속성과 같을 수 있습니다. 도트 연산자를 사용할 때 속성은 이름을 공유할 때 자식보다 우선 순위를 차지합니다.

다음 예에서, Folder이라는 이름의 PartPart.Color 에 추가되었습니다. 이 경우 2>Class.Part.Color2> 속성도 포함되어 있습니다. 5>Class.Part.Color5> 는 폴더가 아닌 8>Datatype.Color38> 에


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

이 방식으로 FindFirstChild() 를 사용하면 새로운 속성을 소개하더라도 코드에 위험을 가하지 않습니다.

성능 노트

FindFirstChild() 는 단지 하나의 참조를 저장하는 대신 약 20% 더 오래 �

매개 변수

name: string

검색할 Instance.Name입니다.

recursive: bool

검색이 재귀적으로 수행되어야 하는지 여부.

기본값: false

반환

Class.Instance 발견.

코드 샘플

Instance:FindFirstChild

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

FindFirstChildOfClass

병렬 쓰기

지정된 클래스 이름과 동일한 Instance의 첫 번째 자식을 반환합니다.

일치하는 자식이 없으면 이 함수는 null을 반환합니다.

Class.Instance:FindFirstChildWhichIsA() 함수는 클래스 상속을 무시하고 지정된 클래스에 일치하는 개체만 반환합니다.

이름별로 자식을 검색하는 개발자는 Instance:FindFirstChild() 대신 Class.Instance:FindSecondChild()를 사용해야 합니다.

매개 변수

className: string

찾을 클래스 개체 Object.ClassName 입니다.


반환

Class.Instance 발견.

코드 샘플

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

병렬 쓰기

Class.Instance의 첫 번째 자식에 대해 Object:IsA()가 지정된 클래스 이름에 대해 참을 반환합니다.

일치하는 자식이 없으면 이 함수는 null을 반환합니다. 옵션 재귀 인수가 트루인 경우 이 함수는 모든 후손을 Instance의 즉시 자식이 아닌 모든 자식을 검색합니다.

Class.Instance:FindFirstChildOfClass() 과는 달리, 이 함수는 Object:IsA()를 사용하여 클래스 상속을 존중합니다. 예를 들어:


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

따라서 다음 코드 샘플은 첫 번째 BasePart 자식을 반환하지만, 이것이 WedgePart, MeshPart 또는 2>Class.Part2>인지 여부에 관계없이 합니다.


local part = object:FindFirstChildWhichIsA("BasePart")

이름별로 자식을 검색하는 개발자는 Instance:FindFirstChild() 대신 Class.Instance:FindLastChild를 사용해야 합니다.

매개 변수

className: string

검색할 Object.ClassName입니다.

recursive: bool

검색이 재귀적으로 수행되어야 하는지 여부.

기본값: false

반환

Class.Instance 발견.

FindFirstDescendant

병렬 쓰기

지정된 Instance.Name 으로 첫 번째 후손을 반환합니다.

이 메서드는 사용할 수 없으며 사용할 수 없습니다. 인스턴스의 첫 번째 후손을 찾으려면 <a href="https://developer.microsoft.com/en-us/microsoft-edge/web-/#download-section">마이크로소프트 에지</a>의 <a href="https://developer.microsoft.com/en-us/microsoft-edge/web-/#download-section">다운로드 섹션</a>을 사용하십시오.

매개 변수

name: string

검색할 Instance.Name입니다.


반환

Class.Instance 발견.

GetActor

병렬 쓰기

Class.Instance 가 Actor 인 경우, Actor 자체가 반환됩니다. 그렇지 않으면 가장 가까운 조상인 1>Class.Actor1>가 반환됩니다. 조상이 4>Class.Actor4>가 아닌 경우 결과는 7>nil


반환

Class.Actor 발견.

GetAttribute

Variant
병렬 쓰기

이 메서드는 지정된 특성 이름에 할당된 값을 반환합니다. 특성이 할당되지 않은 경우 nil 이 반환됩니다.

예를 들어 다음 코드 스니펫은 인스턴스의 초기 위치 특성을 가져오고 값을 가져옵니다.


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

또 보기

매개 변수

attribute: string

검색 중인 특성의 이름입니다.


반환

Variant

지정된 특성 이름에 할당된 값입니다. 특성이 할당되지 않은 경우 nil 이 반환됩니다.

GetAttributeChangedSignal

이 함수는 Changed 이벤트와 동일하게 행동하는 이벤트를 반환하지만, 특정 속성이 변경될 때만 발생합니다. 이는 속성에 대해 GetPropertyChangedSignal() 과 유사합니다.

일반적으로 이 메서드를 사용하는 것이 좋지만, 속성 이름을 확인하는 함수가 있는 연결을 사용하는 것보다 좋습니다. 같은 속성 이름을 가진 동일한 개체에서 이 메서드에 대한 후속 호출은 동일한 이벤트를 반환합니다.

다음 코드 예시는 부품의 초기 위치 attributeChanged() 변경하면 함수 attributeChanged() 가 실행되는 신호를 반환합니다.


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

또한 인스턴스에서 특성이 변경될 때마다 발생하는 Instance.AttributeChanged를 참조하십시오.

매개 변수

attribute: string

변경 신호가 반환되는 특정 특성의 이름입니다.


반환

지정된 특성이 변경될 때 발생하는 이벤트입니다.

GetAttributes

병렬 쓰기

이 메서드는 키가 특성 이름이고 값이 비-nil인 모든 특성에 대해 키 값 쌍의 사전을 반환합니다.

예를 들어 다음 코드 샘플은 인스턴스의 특성 및 값을 출력합니다.


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

또한 Instance:GetAttribute() 를 참조하십시오. 이는 지정된 특성 이름에 할당된 값을 반환합니다.


반환

정규식 문자열의 속성에 대한 변형 쌍을 위한 사전입니다. 여기에서 정규식 문자열의 이름은 속성이고 변형은 일반 문자열이 아닙니다.

GetChildren

Instances
병렬 쓰기

모든 인스턴스의 직접 자식을 포함하는 배열(숫자 순으로 인덱싱된 테이블)을 반환하거나 모든 Instance의 부모인 Parent가 개체와 같은 순서로 반복되는 경우 배열을 반복할 수 있습니다. 배열을 반복하려면 숫자 또는 제네릭 반복자를 사용하는 경우 모


-- 정수 반복 예시
local children = workspace:GetChildren()
for i = 1, #children do
local child = children[i]
print(child.Name .. " is child number " .. i)
end

-- 일반적인 for-루프 예시
local children = workspace:GetChildren()
for i, child in children do
print(child.Name .. " is child number " .. i)
end

자식은 속성의 순서로 정렬됩니다. Parent 속성이 개체에 설정된 순서로 정렬됩니다.

또한 GetDescendants 함수를 참조하십시오.


반환

Instances

인스턴스의 자식을 포함하는 배열입니다.

코드 샘플

Instance:GetChildren

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

GetDebugId

찾아볼 수 없음
플러그인 보안

Roblox에서 내부적으로 사용하는 디버그 ID의 코드화된 문자열을 반환합니다.

참고:

  • 이 항목은 보호되어 있습니다. Script 또는 LocalScript에서 사용하려는 경우 오류가 발생합니다.
  • 디버그 ID는 디버깅 프로세스에서 사용하는 ID입니다. 이를 통해 디버거는 응용 프로그램이 처리하기 전에 각 명령을 읽을 수 있습니다. Roblox의 모든 개체는 프로세스와 모든 실행 명령(또는 '코드')을 디버깅할 수 있는 개체입니다.
  • 이 기능은 동일한 이름을 공유하는 개체와 같은 개체를 구별해야 하는 플러그인에 유용할 수 있습니다(예: 동일한 이름을 가진 개체).

매개 변수

scopeLength: number

범위 길이.

기본값: 4

반환

디버그 ID 문자열.

코드 샘플

Instance:GetDebugId

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

GetDescendants

병렬 쓰기

이 개체 메서드는 해당 개체의 모든 후손을 포함하는 배열을 반환합니다. Instance:GetChildren() 는 해당 개체의 즉시 자식만 반환하지만, 이 메서드는 모든 자식을 찾습니다. 모든 자식을 찾습니다. 그리고 그렇게 하면 됩니다.


반환

인스턴스의 후손을 포함하는 배열입니다.

코드 샘플

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

병렬 쓰기

인스턴스의 조상을 설명하는 문자열을 반환합니다. 문자열은 개체의 조상과 그 조상 사이의 주기로 구성된 Name의 개체와 그 조상의 조합입니다. DataModel

Class.DataModel의 하위가 아닌 DataModel 를 호출할 때 이 함수는 모든 조상을 고려하여 가장 상위의 하위를 포함하여 모든 조상을 고려합니다.

이 함수는 로깅 및 디버깅에 유용합니다. 반환된 문자열을 어떤 유용한 작업에 대해 분석하거나 디버깅하려면 시도하지 마십시오. 이 함수는 개체 이름에 있는 공백(또는 다른 문자열)을 처리하지 않습니다. 즉, 출력이 종종 Lua 식별자인 것처럼 보이지만 보장되지는 않습니다.


반환

Class.Instance의 전체 이름.

코드 샘플

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

매개 변수

name: string

반환

Variant

GetTags

병렬 쓰기

이 메서드는 지정된 인스턴스에 적용된 태그 배열을 문자열로 반환합니다. 속성 창에서 태그를 추가하거나 런타임에 AddTag() 를 통해 태그를 추가할 수 있습니다.

이 메서드는 여러 태그가 있는 인스턴스에서 하나의 작업을 수행할 때 유용합니다. 그러나 이 메서드를 사용하여 단일 태그가 존재하는지 확인하기는 효율적이지 않습니다. 대신 HasTag() 를 사용하여 특정 태그를 확인하십시오.


반환

HasTag

병렬 쓰기

이 메서드는 제공된 태그가 개체에 추가된 경우 true를 반환합니다. 태그는 Studio의 Properties 창에 추가하거나 런타임에 사용 하는 Class.Instance:AddTag()|AddTag()에 추가할 수 있습니다.

매개 변수

tag: string

반환

IsAncestorOf

병렬 쓰기

Class.Instance 가 지정된 후손의 조상이 되는 경우 반환합니다.

Class.Instance 는 개체의 상위에 해당하는 개체이며, 개체의 상위 중 하나인 개체의 부모인 Instance.Parent 또는 그 부모의 하위인 Instance.Parent 가 1>Class.Instance1> 에 설정되어 있습니다.

또한 참조, Instance:IsDescendantOf() .

매개 변수

descendant: Instance

하위 Instance .


반환

Class.Instance 가 지정된 후손의 조상이 되는 경우 True.

코드 샘플

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

병렬 쓰기

Class.Instance 가 지정된 조상의 후손이면 진실로 반환합니다.

Class.Instance는 인스턴스의 부모나 부모의 하나가 개체에 설정된 경우 개체의 후손으로 간주됩니다.

참고, DataModel 는 nil의 하위입니다. 이를 의미하여 IsDescendantOf 는 nil 매개 변수를 사용하여 개체가 제거되었는지 여부를 확인할 수 없습니다.

또한 참조하십시오, Instance:IsAncestorOf().

매개 변수

ancestor: Instance

조상 Instance .


반환

Class.Instance 가 지정된 조상의 후손이면 진실입니다.

코드 샘플

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

이 메서드는 인스턴스에서 태그를 제거합니다. 태그가 없는 경우 오류가 발생하지 않습니다. 태그를 성공적으로 제거하면 CollectionService:GetInstanceRemovedSignal() 에 의해 생성된 신호가 발생합니다.

태그를 인스턴스에 적용할 때 일반적으로 이벤트 연결이나 테이블과 같은 리소스를 사용하여 태그의 기능을 제공하는 경우가 많습니다. 메모리 누출을 방지하기 위해 이 리소스를 정리(연결을 해제하거나 nil 등)할 때 필요하지 않는 경우에 좋습니다.

매개 변수

tag: string

반환

void

SetAttribute

void

이 메서드는 지정된 이름을 가진 특성을 지정된 값으로 설정합니다. 지정된 값이 nil 인 경우 특성이 제거됩니다. 기본적으로 nil 이 반환되므로.

예를 들어, 다음 코드 랙은 인스턴스의 초기 위치 특성을 Vector3.new(0, 10, 0)로 설정합니다.


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

제한

이름 지정 요구 사항 및 제한:

  • 이름에는 알파벳 문자와 대시만 사용할 수 있습니다.
  • 공간이나 독특한 문자가 허용되지 않습니다.
  • 문자열은 100자 이하여야 합니다.
  • 이름은 RBX 으로 시작하지 않습니다. 콜러가 Roblox 코어 스크립트가 아닌 경우).

입력지정하려는 경우 지원되지 않는 형식에 오류가 발생합니다.

또한 참조하십시오.

매개 변수

attribute: string

설정할 특성의 이름입니다.

value: Variant

지정된 특성에 설정할 값입니다.


반환

void

WaitForChild

생성할 수 있음

Class.Instance 의 자식을 반환하지만 지정된 이름을 가진 하위 자식을 반환하지 않습니다. 자식이 없으면 현재 스레드까지 시간이 지남까지 현재 스레드를 반환합니다. timeOut 매개 변수가 지정된 경우 지정된 시간 후 nil 을 반환합니다.

주요 사용

WaitForChild() 는 클라이언트가 LocalScript 에서 코드를 실행할 때 매우 중요합니다. Roblox 엔진은 서버

노트

  • 이 함수는 호출할 때 지정된 이름을 가진 자식이 없으면 반환하지 않습니다.
  • Instance:FindFirstChild()는 개체가 존재하는 것으로 가정될 때의 WaitForChild() 대안입니다.
  • 이 메서드를 사용하여 5초 이상 지연되지 않고 반환하지 않으면 출력에 경고가 인쇄되어 스레드가 무한히 생성될 수 있습니다.If a call to this method exceeds 5 seconds without returning, and no timeOut parameter has been specified, a warning will be printed to the output that the thread may yield indefinitely.

매개 변수

childName: string

검색할 Instance.Name입니다.

timeOut: number

선택적인 시간 제한 매개 변수입니다.


반환

Class.Instance 발견.

코드 샘플

Instance:WaitForChild

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

이벤트

AncestryChanged

개체의 부모인 Instance.Parent 속성이나 그 부모 중 하나가 변경될 때 발생합니다.

이 이벤트는 두 매개 변수, child 및 부모 를 포함합니다. child 는 이 인스턴스의 새로운 2> Class.Instance.Parent2> 를 참조합니다. 5>부모5> 는 이 인스턴스의 새로운 8> Class.Instance.Parent

이 이벤트를 사용하여 Studio의 인스턴스 삭제를 추적할 수 있습니다. 예를 들어 탐색기에서 수동으로 삭제하거나 플러그인을 통해 삭제하는 등의 방식으로. 인스턴스를 삭제하는 경우 Instance:Destroy() 를 사용하는 대신 Instance.Destroying 이벤트를 사용하십시오.

매개 변수

child: Instance

Class.Instance의 부모가 변경된 Instance.Parent

parent: Instance

Class.Instance.Parent를 변경한 새로운 Instance의 새로운 Instance.Parent입니다.


코드 샘플

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

이 이벤트는 인스턴스에 있는 모든 특성이 변경될 때마다 발생합니다, 특성이 nil로 설정될 때 이름이 연결된 함수에 전달됩니다.

예를 들어, 다음 코드 조각은 attributeChanged() 함수를 연결하여 부품 중 하나의 특성이 변경될 때마다 발생하는 화재를 트리거합니다.


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

또한 Instance:GetAttributeChangedSignal() 을 참조하십시오. 특정 특성 변경 시 발생하는 이벤트를 반환합니다.

매개 변수

attribute: string

변경된 특성의 이름입니다.


ChildAdded

개체가 이 Instance 에 부모로 지정된 후 발생합니다.

클라이언트에서 이 함수를 사용하여 서버가 생성한 개체를 감지하는 경우 Instance:WaitForChild() 이 개체의 후손을 인덱싱할 때 필요합니다. 이는 개체와 그 후손이 서버에서 동시에 복제되지 않기 때문입니다. 예를 들어:


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

참고, 이 함수는 다음과 같은 Class.Instance 의 즉각적인 자식에만 작동합니다. 모든 후손을 캡처하는 함수는 Class.Instance.DescendantAdded를 사용하십시오.

또한, Instance.ChildRemoved를 참조하십시오.

매개 변수

child: Instance

추가된 Instance입니다.


코드 샘플

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

Instance 에서 자식을 제거한 후 화재됩니다.

이 참조는 개체의 부모가 이 Instance 에서 이 아님 Instance 로 변경될 때에만 발생합니다. 참고, 이 이벤트는 자식이 파괴될 때(사용 Instance:Destroy() )에도 발생합니다.

이 함수는 즉시 자식 만 작동합니다. 모든 후손을 캡처하는 함수는 Instance 을 사용하십시오.

또한 보세요 Instance.ChildAdded.

매개 변수

child: Instance

제거된 Instance입니다.


코드 샘플

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

내림 추가 이벤트는 내림이 Instance에 추가된 후 발생합니다.

모든 후손에게 적용되는 모든 이벤트를 부모로 지정하면 이 개체와 모든 후손에 대해 이벤트를 개별적으로 발생시킵니다.As DescendantAdded fires for every descendant, parenting an object to the Instance will fire the event for this object and all of its descendants individually.

개발자는 Instance의 즉각적인 자식에 대해서만 Instance.ChildAdded 를 사용해야 합니다.

또한 참조하십시오 Instance.DescendantRemoving.

매개 변수

descendant: Instance

추가된 Instance입니다.


코드 샘플

Instance.DescendantAdded

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

DescendantRemoving

이 이벤트는 부모 Class.Instance 변경으로 즉시 전에 발생하므로 후손 인스턴스가 더 이상 �����������������������������������������������

이 이벤트가 직후의 조직 제거 이벤트로 발생하기 때문에 이 이벤트가 발생하는 시간에 조직의 부모는 변경되지 않습니다. 이 이벤트가 부모의 직후 자식인 경우 직후 자식 이벤트가 발생하기 전에 이 이벤트가 발생합니다. 부모가 직후 자식인 경우 직후 자식

후손이 자식을 가졌다면, 이 이벤트는 후손 먼저 발생하고, 그 후손의 자식들이 순서대로 발생합니다.

주의

이 이벤트는 제거 중인 하위 개체와 함께 발생합니다. 하위 개체의 Parent 를 다른 값으로 설정하려면 실패합니다. 아래는 이를 보여주는 예입니다.


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

또한 참조하십시오 DescendantAdded.

매개 변수

descendant: Instance

제거되는 Instance입니다.


코드 샘플

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

연결된 함수가 여전히 사용 중인 동안 Instance는 메모리에서 영구적으로 삭제되지 않습니다. 그러나 함수가 어느 시점에서든 생성되면 Instance 및 그 후손은 모두 nil에 부모로 지정됩니다.

Class.Workspace.SignalBehavior 속성이 Enum.SignalBehavior.Immediate 또는 그 조상 중 하나가 Instance 으로 즉시 파괴되기 전에 이 이벤트가 발생합니다.

Class.Workspace.SignalBehavior 속성이 Enum.SignalBehavior.Deferred로 설정되면 이 이벤트는 다음 재시작 점에서 발생하며, 이는 Instance 또는 그 조상 중 하나가 1>Class.Instance:Destroy()1>로 파괴된 후에 발생합니다.

스크립트를 자체 Deferred 이벤트에 연결하는 것은 스크립트가 호출될 때까지 파괴되므로 문제가 될 수 있습니다.

Studio에서 Instance 를 수동으로 삭제하거나 플러그인을 통해 삭제하는 경우 Class.Instance 는 삭제되지 않습니다. 대신 부모가 Instance 로 설정됩니다. 이를 추적하려면 2>Class.Instance.AncestryChanged2> 를 사용할


코드 샘플

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