노페어님 영상이 이해 잘 됨!
https://www.youtube.com/c/%EB%85%B8%ED%8E%98%EC%96%B4
단축키
Ctrl + L | 이동, 회전, 크기 등을 바꿀 때, 로컬 <-> 월드 좌표계 |
Ctrl + / | 주석 단축키 |
Ctrl + Shift + F | 모든 스크립트에서 찾기 |
그냥 클릭 | 모델 선택. (그룹 단위.) |
Alt + 클릭 | 작은 단위로 파트 선택 가능. |
Shft + 화면 이동 | 누르고 있는 동안, 에디터에서 돌아다니는 카메라 속도가 느려짐. |
Ctrl + C | 복사. |
Ctrl + V | Workspace의 자식으로 붙여넣기. |
Ctrl + Shift + V | 내가 선택한 오브젝트의 자식으로 붙여넣기. (이거 몰랐을 때, 진짜 불편했음.) |
Lua
-- Lua는 인터프리터 언어.
-- 한 줄 주석
--[[
여러 줄 주석
]]
--[[
여러 줄 주석
--]]
-- 변수 타입 3가지
local myString = "Hi"
print(typeof(myString)) -- string
print(myString) -- Hi
local myNumber = 32
print(typeof(myNumber)) -- number
print(myNumber) -- 32
local myNumber2 = 32.67
print(typeof(myNumber2)) -- number
print(myNumber2) -- 32.67
local myBoolean = true
print(typeof(myBoolean)) -- boolean
print(myBoolean) -- true
-- 조건문
if myBoolean == true then
print("Yes it is true")
else
print("it is false")
end
if (myNumber >= 30 and myNumber <= 40) or (myNumber == 32) then
print("Yes")
end
if player then
-- player ~= nil 과 같음.
end
-- 함수
local function sayMyName(myName, age)
print("My Name is "..myName)
print("I am "..age.." years old")
end
sayMyName("Rak", 20)
-- My Name is Rak
-- I am 20 years old
local function addNums(n1, n2)
return n1.." + "..n2.." = "..(n1 + n2)
end
print(addNums(5, 6)) -- 5 + 6 = 11
-- +=, -=, /= 이런 게 안 된다. → 안되는 줄 알았는데, Roblox에서는 되더라. 쓰면 될 듯.
-- 자식 오브젝트 찾기.
game.Workspace:FindFirstChild("오브젝트 이름") -- 한 단계 밑 자식 오브젝트 중 이름으로 검사.
game.Workspace:FindFirstChild("오브젝트 이름", true) -- 모든 자식 오브젝트 중 이름으로 검사.
game.Workspace:FindFirstDescendant("오브젝트 이름") -- 위와 같지만, 현재는 지원 X.
game.Workspace:FindFirstChildOfClass("Part") -- 한 단계 밑 자식 오브젝트 중 클래스로 검사.
game.Workspace:FindFirstChildWhichIsA("BasePart") -- 위와 비슷하지만, 상위 클래스까지 검사.
-- 부모 오브젝트 찾기.
game.Workspace:FindFirstAncestor("오브젝트 이름") -- 모든 부모 오브젝트 중 이름으로 검사.
-- Ancestor에도 OfClass, WhichIsA가 있다. 그렇지만 사용할 일이 거의 없을 듯.
-- 문자열에서 숫자만 남김.
local function ExtractNumber(string)
return tonumber(string.gsub(string, "%D", "")) -- 숫자가 아닌 문자를 %D 판별해서 ""로 변경. 결과적으로 숫자만 남음.
end
오브젝트를 참조하려면, Explorer에서 하나하나 찾아들어가면 된다.
local blueObject = game.Workspace.gameModel_Blue
오브젝트를 움직이려면,
-- 포지션 이동.
blueObject.Position = blueObject.Position + Vector3.new(0, 2, 0)
정의된 Players 같은 것들은 game.Players 또는 game.GetService('Players') 둘 다 사용 가능하다.
Players의 이름을 바꿨다면, game.GetService('Players')만 인식해서 받아올 수 있으므로 이 방법이 안전하고 좋다.
https://devforum.roblox.com/t/gameplayers-vs-gamegetserviceplayers/503144/6
local Players = game:GetService('Players')
또한 GetService는 Explorer에 나타나있지않은, UserInputService 같은 것들을 받아올 수 있다.
local UserInput = game:GetService('UserInputService')
local TweenService = game:GetService('TweenService')
Spawn은 문제가 많아서 Coroutine 쓰는 게 낫다.
https://devforum.roblox.com/t/coroutines-vs-spawn-which-one-should-i-use/368966/5
서버 스크립트에서는 파트들을 .으로 접근해도 되지만, (못 찾는다고 nil 오류나면 WaitForChild 쓰면 됨.)
local boardRightGUI = script.Parent.time_board_right.Board.SurfaceGui.Frame.TextLabel
local boardLeftGUI = script.Parent.time_board_left.Board.SurfaceGui.Frame.TextLabel
로컬 스크립트에서는 서버의 파트들이 로딩되는 동안 기다려야 하기에, WaitForChild를 쓰자!!
local SoundManager = require(game:GetService('ReplicatedStorage'):WaitForChild('SoundManager'))
'기타 > 로블록스 & Lua' 카테고리의 다른 글
로블록스 이미지 라벨 처음 로딩 때 깜빡거림 현상 (0) | 2021.12.24 |
---|---|
로블록스 낮/밤 구분해서 자동 이벤트 발생시키기 (0) | 2021.12.16 |
로블록스 캐릭터 Shift 달리기 (2) | 2021.12.16 |
로블록스 GUI 애니메이션 간단하게 (0) | 2021.12.13 |
로블록스 캐릭터 애니메이션 간단하게 (0) | 2021.12.06 |