Guide For Roblox Developer

로블록스 개발자를 위한 디토랜드 Quick Start 강좌에요.

이 문서는 로블록스 개발자가 디토랜드에 쉽게 적응할 수 있도록 하기 위해 제작되었어요.

에디터

로블록스에서는 출력이 항상 표시되지만 디토랜드에서는 게임을 실행해야 표시돼요.

디토랜드에서는 이동, 회전, 크기 편집 모드에서 선택 기능을 사용할 수 없어요.

로블록스와 디토랜드의 차이점

탐색기 구성 요소 비교

스크립트 실행 가능 여부

스크립트(서버 스크립트)의 경우

로컬 스크립트(클라이언트 스크립트)의 경우

스크립트를 읽는 순서

스크립트(서버 스크립트)의 경우

로블록스의 스크립트는 무작위 순서로 읽어요.

새로 생성된 스크립트는 실행 가능한 위치에 있다면 생성되는 시점에서 읽어요.

디토랜드에서 서버 스크립트는 ScriptServer에 있는 스크립트를 제일 먼저 읽고, Workspace에 있는 스크립트는 순서대로 읽습니다.

동적으로 생성된 오브젝트의 스크립트들은 생성되는 시점에서 읽어요.

로컬 스크립트(클라이언트 스크립트)의 경우

로블록스의 로컬 스크립트는 ReplicatedFirst에 있는 스크립트를 제일 먼저 읽고, 나머지는 무작위 순서로 읽어요.

새로 생성된 스크립트는 실행 가능한 위치에 있다면 생성되는 시점에서 읽어요.

디토랜드에서 클라이언트 스크립트는 ScriptClient에 있는 스크립트를 제일 먼저 읽고, Workspace에 있는 스크립트는 순서대로 읽습니다.

동적으로 생성된 오브젝트의 스크립트들은 생성되는 시점에서 읽어요.

전역 객체의 호출 방식

로블록스의 전역 객체 변수(Roblox Globals)는 workspace, game와 같이 첫 글자가 소문자로 시작하지만, 디토랜드는 대문자로 시작해요.

디토랜드는 HUD, ScriptServer 등의 객체들까지 전역 변수로 호출할 수 있어요.

에디터 모드에서 변수 편집

로블록스는 IntValue, BoolValue 등 값을 저장하기 위한 객체가 따로 있지만, 디토랜드에서는 프로퍼티창Script Parameters 항목에서 추가할 수 있습니다.

Script Parameters에서 추가한 변수는 아래의 방법으로 접근할 수 있습니다.

--추가한 변수가 Script 자신에게 있으면 
local MoveSpeed = Script.MoveSpeed
local JumpSpeed = Script.JumpSpeed

--추가한 변수가 오브젝트나 다른 스크립트에 있으면 
local Toy = Script.Parent
local Damage = Toy.Damage
local BulletSpeed = Toy.Bullet.BulletServerScript.BulletSpeed

서버<->클라이언트 스크립트간 함수 호출

로블록스는 오직 RemoteEvent, BindableEvent로만 이벤트를 보낼 수 있지만, 디토랜드는 어떤 개체에서든지 이벤트를 보낼 수 있습니다.

이벤트 샘플의 BoradcastEvent, SendEventToServer, SendEventToClient를 참고하세요.

로블록스의 기능를 디토랜드에서 사용하기

기본 이벤트 함수

충돌 체크

--스태틱메쉬나 콜라이더의 Collision 프로퍼티가 true면 동작합니다.
local Cube = Workspace.Cube

--충돌영역에 대상이 있을때 호출됩니다. 
--충돌영역 안에서 대상이 움직일때도 호출됩니다. 
local function Collision(self, target)
    if target == nil or not target:IsCharacter() then
        return
    end
    
    print("Target : " .. target.Name)
end
Cube.Collision.OnCollisionEvent:Connect(Collision)

Clone과 Destroy

local cube = Workspace.Cube
local createPos = Vector.new(1, 3, 2)

--Clone처럼 동작합니다. 
local temp = Game:CreateSyncObject(cube, createPos, "Cube", Workspace)
wait(2)

--Destroy처럼 동작합니다.
Game:DeleteObject(temp)

GetChildren()

local ObjectList = Workspace:GetChildList() 

--#ObjectList는 transform.childCount처럼 동작합니다. 
for i = 1, #ObjectList, 1 do
    print(ObjectList[i].Name)
end

더 많은 기능을 보려면

샘플 맵이나 API Reference를 참고하세요.

컨텐츠 제작 강좌

Last updated