로블록스 게임에서 리더보드는 아주 중요한 요소이다. 리더보드를 통해 플레이어의 점수나 경험치, 킬 수 등을 나타낼 수 있고, 이것 이외에도 많은 정보를 보여줄 수 있기 때문이다.
실제로 로블록스 게임을 살펴보면 리더보드가 존재하지 않는 게임은 찾아보기 힘들다.
이번 예제에서는 간단한 리더보드를 구현해보자.
우선 Workspace에 스크립트를 생성 후, 스크립트 안에 밑의 코드를 넣어주자.
game.Players.PlayerAdded:Connect(function(player) -- 플레이어가 맵에 접속할때 실행되는 이벤트
local leaderstats = Instance.new("Folder", player) -- 새 폴더 인스턴스를 player 밑에 생성
leaderstats.Name = "leaderstats" -- leaderstats 이름 정의
local Points = Instance.new("IntValue", leaderstats) -- Points값을 저장할 IntValue 인스턴스 생성
Points.Name = "Points" -- Points 이름 설정
Points.Value = 0 -- Points 값 설정
local XP = Instance.new("IntValue", leaderstats) -- XP값을 저장할 IntValue 인스턴스 생성
XP.Name = "XP" -- XP 이름 설정
XP.Value = 0 -- XP 값 설정
end)
위 코드는 유저가 접속했을 때 점수나 경험치 등의 값을 저장할 Folder를 생성하고 Points, XP라는 값을 Folder 안에 생성하는 코드이다.
실행하게 되면 다음과 같은 리더보드가 보이게 된다.
Points와 XP의 값을 0으로 설정했기 때문에 실행했을 때 값이 0인 것을 확인할 수 있다.
그럼 이제 실제로 Points의 값을 변경시키는 방법을 알아보자
파란색 상자를 하나 생성 후, 플레이어가 상자를 클릭하면 Points가 올라가는 간단한 예제를 구현해보자
우선 파란색 상자를 하나 생성한다.
색상과 크기는 각자 알아서 설정하면 된다.
그 다음, 생성한 파란 상자안에 스크립트를 생성 후, ClickDetector도 추가해주자.
상자 안에는 ClickDetector와 스크립트가 들어있게 된다.
여기서 ClickDetector는 마우스 클릭을 감지하기 위해 사용된다.
상자 안의 스크립트에 아래의 코드를 넣어준다.
script.Parent.ClickDetector.MouseClick:Connect(function(player) -- 플레이어가 상자를 클릭할 때 실행되는 이벤트
local playerstats = player.leaderstats.Points -- 상자를 클릭한 플레이어의 Points 인스턴스
playerstats.Value = playerstats.Value + 1 -- Points의 값을 1 증가
end)
실행하게 되면 아래와 같이 상자를 클릭할 때 마다 Points가 1씩 증가하는 것을 확인할 수 있다.
'기타' 카테고리의 다른 글
Lua 프로그래밍 기초 문법 (0) | 2021.04.13 |
---|---|
[Roblox] All about Welds (0) | 2021.04.11 |
[Roblox] Instance (1) | 2021.04.08 |
[Roblox] built-in function (0) | 2021.04.08 |
댓글