스크립트는 게임에 사용자 정의 동적 동작을 추가할 수 있는 일반 텍스트 파일입니다. 스크립트를 사용하여 게임 내 이벤트를 트리거하고, 플레이어 입력에 응답하며, 플레이어 데이터를 저장하고, 리더보드를 생성하고, 적을 소환하고, NPC 행동을 제어하는 등 다양한 작업을 수행할 수 있습니다.
Luau
Roblox 스크립트는 Luau 프로그래밍 언어를 사용하며, 이는 Lua 5.1에서 파생되었습니다.
- Lua 5.1에 비해 Luau는 성능 향상 및 선택적 타입 시스템, 문자열 보간, 테이블에 대한 일반화된 반복과 같은 많은 유용한 기능을 추가합니다.
- 모든 유효한 Lua 5.1 코드는 유효한 Luau 코드이지만, 그 반대는 성립하지 않습니다.
Lua에 대한 대부분의 책과 온라인 자료는 여전히 Luau에 널리 적용됩니다. 차이점에 대한 자세한 요약은 Luau 문서의 호환성을 참조하세요. 언어 구문에 대한 내용은 Luau 참조를 참조하세요.
Luau 기초
Luau는 점진적으로 타입이 지정되므로 변수를 생성할 때 타입을 지정할 필요가 없습니다. type()를 사용하여 객체 타입을 확인할 수 있습니다:
logMessage = "사용자가 10개 이상의 아이템을 가지고 있습니다!"
print(logMessage) --> 사용자가 10개 이상의 아이템을 가지고 있습니다!
print(type(logMessage)) --> stringLuau는 전역 및 지역 스코프를 가지고 있지만, 거의 항상 local 키워드를 사용하여 변수를 지역적으로 선언하는 것이 더 좋습니다:
local logMessage = "사용자가 10개 이상의 아이템을 가지고 있습니다!"
local function printMessage()
print(logMessage)
end
printMessage() --> 사용자가 10개 이상의 아이템을 가지고 있습니다!Luau는 존재하지 않거나 아무것도 없음을 나타내기 위해 nil을 사용하며, 이는 조건문에서 false로 평가됩니다:
local messageToUser
print(messageToUser) --> nil
print(type(messageToUser)) --> nil
if messageToUser then
-- 문장은 false로 평가됩니다
end눈치채셨겠지만, --는 한 줄 주석을 시작합니다. --[[]]는 블록 주석을 생성합니다:
--[[
우주 달 레이저를 즉시 종료합니다.
우주 달 레이저에 손상을 주지 않기 위해 자정 산악 표준시로부터 15분 이내에만 호출해야 합니다.
]]
local function stopCosmicMoonRay()
-- 나중에 추가하세요, 중요할 수 있습니다
end테이블은 배열과 사전을 위한 일반적인 용어입니다. 배열은 0이 아닌 1부터 시작하므로 첫 번째 항목은 [1]입니다. 배열과 사전은 중괄호 한 쌍으로 선언합니다:
local myArray = {"칩", "탄산수", "살사"}
local myDictionary = {
snack = "칩",
drink = "탄산수",
dip = "살사"
}
print(myArray[1]) --> 칩
print(myDictionary.dip) --> 살사테이블을 반복하는 데는 for 루프를 사용하여 배열의 경우 ipairs() 함수를, 사전의 경우 pairs() 함수를 사용할 수 있지만, Luau는 이러한 함수를 생략하여 더 깔끔한 구문을 허용합니다:
for index, value in ipairs(myArray) do -- 표준 Lua
print(index, value)
end
for key, value in pairs(myDictionary) do -- 표준 Lua
print(key, value)
end
for key, value in myDictionary do -- Luau 일반화된 반복
print(key, value)
end첫 번째 스크립트
Roblox Studio에서 탐색기 창의 ServerScriptService 위에 마우스를 올리고 **+**를 클릭합니다.
스크립트를 선택하여 새 스크립트를 추가합니다.
스크립트를 마우스 오른쪽 버튼으로 클릭하고 이름을 HelloScript로 변경합니다.
스크립트를 두 번 클릭하여 스크립트 편집기에서 엽니다.
파일에 다음 코드를 추가합니다:
local helloArray = {"h", "e", "l", "l", "o"}local worldArray = {"w", "o", "r", "l", "d"}for index, value in helloArray doprint(value)endprint(table.concat(worldArray))출력 창이 열려 있는지 확인합니다.
게임을 실행하고 출력을 확인합니다:
hel (x2)oworld
편안해지기
새로운 개발 환경에 적응하는 데 큰 부분은 이를 자신의 필요에 맞게 구성하고 사용할 수 있는 도구를 이해하는 것입니다:
- 스튜디오 설정의 스크립트 편집기 섹션에서는 글꼴, 색상, 들여쓰기, 자동 완성, 괄호 및 툴팁과 같은 삶의 질 기능을 조정할 수 있습니다. 스튜디오 섹션에서 다크 모드를 활성화하는 것도 좋습니다.
- Ctrl 또는 Command를 누른 채 함수나 변수를 클릭하면 코드베이스에서 해당 선언으로 이동합니다(또는 온라인 문서로 이동). 찾기 및 모두 찾기를 사용하면 더 큰 프로젝트를 탐색하는 데 도움이 될 수 있습니다.
- 스크립트 분석 창은 오류 및 경고의 요약을 보여주지만, 그 유용성이 제한적일 수 있습니다. 스크립트 편집기는 이미 입력하는 동안 이러한 문제를 강조 표시합니다.
스크립팅을 위한 스튜디오 구성에 대한 자세한 내용은 스크립트 편집기를 참조하세요.
두 번째 스크립트
Roblox Studio에서 탐색기 창의 ReplicatedStorage에 스크립트를 추가하고 이름을 OhNo로 변경합니다.
파일에 다음 코드를 추가합니다:
print("안녕하세요 스크립트 유형 및 위치!")게임을 실행합니다.
출력이 첫 번째 스크립트를 실행했을 때와 다르지 않다는 점에 유의하세요.
스크립트가 실행되지 않은 이유를 이해하려면 스크립트 유형 및 위치를 참조하세요.