ServerScript
--사용할 Phase를 등록해요.
--Phase는 여러개도 등록할 수 있어요.
local LobbyState = Game:AddPhase("Lobby")
local PlayState = Game:AddPhase("Play")
local ResultState = Game:AddPhase("Result")
함수
RModePhase AddPhase(string phasename)
게임에 단계를 추가할 수 있어요. (추가할 단계 이름)
--서버와 클라이언트간 동기화되는 값을 등록하고 초기값을 설정한뒤, 값이 변경될때마다 호출되게 해요.
Game:AddReplicateValue("GameState", "Lobby", Enum.ReplicateType.Changed, 0)
함수
AddReplicateValue(string ValueName, float Data, ReplicateType Type, float Time, bool bSaveToStorage)
해당 객체에 서버, 클라이언트 간 동기화가 가능한 실수를 추가해요. (추가할 Value 이름, float 데이터, Enum.ReplicateType.타입, 동기화 시간, 스토리지 저장 여부)
샘플
--서버 스크립트에서-------------
--------------------------------------------------------------------------
--각 Phase로 전환되었을때 처리할 이벤트 함수를 추가해요.
local function EnterLobbyState() --LobbyState Phase가 시작할때 호출할 함수에요.
Game.GameState = "Lobby"
print("Enter Lobby State (Server Script)")
end
LobbyState.EnterEvent:Connect(EnterLobbyState) --해당 Phase로 변경됐을때 호출되는 이벤트를 연결해요.
이벤트
EnterEvent
해당 애니메이션 상태가 시작될 때 호출되는 이벤트에요.
local function UpdateLobbyState(UpdateTime) --LobbyState Phase일때 계속 호출할 함수에요.
print("Update Lobby State (Server Script)")
end
LobbyState.UpdateEvent:Connect(UpdateLobbyState) --해당 Phase일때 매프레임마다 호출되는 이벤트를 연결해요.
이벤트
UpdateEvent
해당 애니메이션이 실행중 일 때 호출되는 이벤트에요.
local function ExitLobbyState() --LobbyState Phase가 끝날때 호출할 함수에요.
print("End Lobby State (Server Script)")
end
LobbyState.ExitEvent:Connect(ExitLobbyState) --해당 Phase가 끝날때 호출되는 이벤트를 연결해요.
이벤트
ExitEvent
해당 애니메이션상태가 끝날 때 호출되는 이벤트에요.
--------------------------------------------------------------------------
local function EnterPlayState() --PlayState Phase가 시작할때 호출할 함수에요.
Game.GameState = "Play"
print("Enter Play State")
end
PlayState.EnterEvent:Connect(EnterPlayState) --해당 Phase로 변경됐을때 호출되는 이벤트를 연결해요.
-- Tip --
EnterEvent, UpdateEvent, ExitEvent는 필요할때만 사용할 수 있어요.
예를 들어 EnterEvent만 단독으로 사용하거나, ExitEvent만 단독으로 사용 할 수도 있어요.
--------------------------------------------------------------------------
local function EnterResultState() --ResultState Phase가 시작할때 호출할 함수에요.
Game.GameState = "Result"
print("Enter Result State")
end
ResultState.EnterEvent:Connect(EnterResultState) --해당 Phase로 변경됐을때 호출되는 이벤트를 연결해요.
--------------------------------------------------------------------------
wait(5) --5초를 기다린 뒤,
Game:ChangePhaseByName("Play") --이름에 해당하는 Phase로 전환해요.
wait(2) --2초를 기다린 뒤,
Game:ChangeToNextPhase() --다음 Phase로 전환해요. (만약 마지막 Phase면 처리되지 않아요.)
ClientScript
--서버 스크립트에서 추가한 Phase를 똑같이 등록해요.
local LobbyState = Game:AddPhase("Lobby")
local PlayState = Game:AddPhase("Play")
local ResultState = Game:AddPhase("Result")
--------------------------------------------------------------------------
--각 Phase로 전환되었을때 처리할 이벤트 함수를 추가해요
--서버 스크립트와 동일하게 작성하되,
--Game.GameState = "Lobby" 같은 Phase 변경은 제외해요. (서버에서만 처리해야 해요.)
local function EnterLobbyState() --LobbyState Phase가 시작할때 호출할 함수에요.
print("Enter Lobby State (Client Script)")
end
LobbyState.EnterEvent:Connect(EnterLobbyState) --해당 Phase로 변경됐을때 호출되는 이벤트를 연결해요.
--------------------------------------------------------------------------
local function EnterPlayState() --PlayState Phase가 시작할때 호출할 함수에요.
print("Enter Play State (Client Script)")
end
PlayState.EnterEvent:Connect(EnterPlayState) --해당 Phase로 변경됐을때 호출되는 이벤트를 연결해요.
--------------------------------------------------------------------------
local function EnterResultState() --ResultState Phase가 시작할때 호출할 함수에요.
print("Enter Result State (Client Script)")
end
ResultState.EnterEvent:Connect(EnterResultState) --해당 Phase로 변경됐을때 호출되는 이벤트를 연결해요.
--------------------------------------------------------------------------
--스크립트 제일 아래에 상태가 바뀔때마다 관련된 Phase 함수가 호출될 수 있도록 연결해요.
Game:ConnectChangeEventFunction("GameState", function(self, value)
Game:ChangePhaseByName(Game.GameState)
end)
이벤트
ConnectChangeEventFunction(string ValueName, function FunctionName)
추가된 값이 변경 될 때 호출되는 이벤트에요. (Value 이름, 연결 함수)
샘플
Script Log


'LuaScript' 카테고리의 다른 글
[디토랜드] 투명도 변경 :SetOpacity() - for문 애니메이션 응용 (0) | 2022.01.10 |
---|---|
[디토랜드] 단순 색상 변경 :SetBackgroundColor() :SetTextColor() (0) | 2022.01.10 |
[디토랜드] AddTimeEvent - DeleteTimeEvent (n초 후 함수 호출) (0) | 2021.12.23 |
[디토랜드] AddReplicateValue (0) | 2021.12.23 |
[디토랜드] Create&Destroy (0) | 2021.12.23 |