Game
Game μ μ μ€λΈμ νΈμμ.
μ΄λ²€νΈ
λ§€ νλ μλ§λ€ νΈμΆλλ μ΄λ²€νΈμμ.
μ°κ²°ν¨μ νμμ function(updateTime), updateTime μ number μ
λλ€.
-- μν --
Copy local cube = Workspace.Cube
local playTime = 0
local function UpdateEvent(updateTime) --OnUpdateEventλ‘ μ°κ²°λ ν¨μλ updateTime μΈμκ° κ³ μ μ μΌλ‘ λ€μ΄κ°μ.
playTime = playTime + updateTime --μκ°μ κΈ°λ‘ν΄μ.
end
cube.OnUpdateEvent:Connect(UpdateEvent) --Gameμ΄λ μ€λΈμ νΈμ λ§€νλ μλ§λ€ νΈμΆλλ ν¨μλ₯Ό μ°κ²°ν΄μ.
νλ μ΄μ΄κ° κ²μμ μ
μ₯ μ νΈμΆλλ μ΄λ²€νΈμμ.
μ°κ²°ν¨μ νμμ function(enterPlayer), enterPlayer μ Player κ°μ²΄ μ
λλ€.
-- μν --
Copy local function EnterPlayer(player) --OnEnterPlayerλ‘ μ°κ²°λ ν¨μλ player μΈμκ° κ³ μ μ μΌλ‘ λ€μ΄κ°μ.
print("Enter " .. player.Name)
end
Game.OnEnterPlayer:Connect(EnterPlayer) --Gameμ νλ μ΄μ΄κ° κ²μμ μ
μ₯νλ©΄ νΈμΆλλ ν¨μλ₯Ό μ°κ²°ν΄μ.
νλ μ΄μ΄κ° κ²μμμ λκ° λ νΈμΆλλ μ΄λ²€νΈμμ.
μ°κ²°ν¨μ νμμ function(leavePlayer), leavePlayer μ Player κ°μ²΄ μ
λλ€.
-- μν --
Copy local function LeavePlayer(player) --OnLeavePlayerλ‘ μ°κ²°λ ν¨μλ player μΈμκ° κ³ μ μ μΌλ‘ λ€μ΄κ°μ.
print("Leave " .. player.Name)
end
Game.OnLeavePlayer:Connect(LeavePlayer) --Gameμ νλ μ΄μ΄κ° κ²μμ μ’
λ£νλ©΄ νΈμΆλλ ν¨μλ₯Ό μ°κ²°ν΄μ.
μΊλ¦ν°κ° μ£½μ λ νΈμΆλλ μ΄λ²€νΈμμ.
μ°κ²°ν¨μ νμμ function(deathCharacter), deathCharacter λ Character κ°μ²΄ μ
λλ€.
-- μν --
Copy local function DeathCharacter(character) --OnDeathCharacterλ‘ μ°κ²°λ ν¨μλ character μΈμκ° κ³ μ μ μΌλ‘ λ€μ΄κ°μ.
print("Death " .. character.Name)
end
Game.OnDeathCharacter:Connect(DeathCharacter) --Gameμ μΊλ¦ν°κ° μ£½μΌλ©΄ νΈμΆλλ ν¨μλ₯Ό μ°κ²°ν΄μ.
μΊλ¦ν°κ° μ€ν° λ λ νΈμΆλλ μ΄λ²€νΈμμ.
μ°κ²°ν¨μ νμμ function(spawnCharacter), spawnCharacter λ Character κ°μ²΄ μ
λλ€.
-- μν --
Copy local function SpawnCharacter(character) --OnSpawnCharacterλ‘ μ°κ²°λ ν¨μλ character μΈμκ° κ³ μ μ μΌλ‘ λ€μ΄κ°μ.
print("Spawn " .. character.Name)
end
Game.OnSpawnCharacter:Connect(SpawnCharacter) --Gameμ μΊλ¦ν°κ° μμ±λλ©΄ νΈμΆλλ ν¨μλ₯Ό μ°κ²°ν΄μ.
ν¨μ
Phase AddPhase(string phasename)
κ²μμ λ¨κ³λ₯Ό μΆκ°ν μ μμ΄μ. (μΆκ°ν λ¨κ³ μ΄λ¦)
-- μν --
Copy --μλ² μ€ν¬λ¦½νΈμμ-------------
local LobbyState = Game:AddPhase("Lobby") --μ¬μ©ν Phaseλ₯Ό λ±λ‘ν΄μ.
local PlayState = Game:AddPhase("Play") --Phaseλ μ¬λ¬κ°λ λ±λ‘ν μ μμ΄μ.
local ResultState = Game:AddPhase("Result")
Game:AddReplicateValue("GameState", "Lobby", Enum.ReplicateType.Changed, 0) --μλ²μ ν΄λΌμ΄μΈνΈκ° λκΈ°νλλ κ°μ λ±λ‘νκ³ μ΄κΈ°κ°μ μ€μ νλ€, κ°μ΄ λ³κ²½λ λλ§λ€ νΈμΆλκ² ν΄μ.
--κ° Phaseλ‘ μ νλμμλ μ²λ¦¬ν μ΄λ²€νΈ ν¨μλ₯Ό μΆκ°ν΄μ.
local function EnterLobbyState()
Game.GameState = "Lobby"
print("Enter Lobby State")
end
LobbyState.EnterEvent:Connect(EnterLobbyState) --ν΄λΉ Phaseλ‘ λ³κ²½λμλ νΈμΆλλ μ΄λ²€νΈλ₯Ό μ°κ²°ν΄μ.
local function UpdateLobbyState(UpdateTime)
print("Update Lobby State")
end
LobbyState.UpdateEvent:Connect(UpdateLobbyState) --ν΄λΉ PhaseμΌλ λ§€νλ μλ§λ€ νΈμΆλλ μ΄λ²€νΈλ₯Ό μ°κ²°ν΄μ.
local function ExitLobbyState()
print("End Lobby State")
end
LobbyState.ExitEvent:Connect(ExitLobbyState) --ν΄λΉ Phaseκ° λλ λ νΈμΆλλ μ΄λ²€νΈλ₯Ό μ°κ²°ν΄μ.
local function EnterPlayState()
Game.GameState = "Play"
print("Enter Play State")
end
PlayState.EnterEvent:Connect(EnterPlayState)
local function EnterResultState()
Game.GameState = "Result"
print("Enter Result State")
end
ResultState.EnterEvent:Connect(EnterResultState)
wait(1)
Game:ChangePhaseByName("Game") --μ΄λ¦μΌλ‘ Phaseλ₯Ό μ νν΄μ.
wait(1)
Game:ChangeToNextPhase() --λ€μ Phaseλ‘ μ νν΄μ. (λ§μ½ λ§μ§λ§ Phaseλ©΄ μ²λ¦¬λμ§ μμμ.)
--ν΄λΌ μ€ν¬λ¦½νΈμμ-------------
local LobbyState = Game:AddPhase("Lobby") --μλ² μ€ν¬λ¦½νΈμμ μΆκ°ν Phaseλ₯Ό λκ°μ΄ λ±λ‘ν΄μ.
local PlayState = Game:AddPhase("Play")
local ResultState = Game:AddPhase("Result")
--κ° Phaseλ‘ μ νλμμλ μ²λ¦¬ν μ΄λ²€νΈ ν¨μλ₯Ό μΆκ°ν΄μ.
--μλ² μ€ν¬λ¦½νΈμ λμΌνκ² μμ±νλ, Game.GameState = "Lobby" κ°μ Phase λ³κ²½μ μ μΈν΄μ. (μλ²μμλ§ μ²λ¦¬ν΄μΌ ν΄μ.)
local function EnterLobbyState()
print("Enter Lobby State")
end
LobbyState.EnterEvent:Connect(EnterLobbyState)
local function EnterPlayState()
print("Enter Play State")
end
PlayState.EnterEvent:Connect(EnterPlayState)
local function EnterResultState()
print("Enter Result State")
end
ResultState.EnterEvent:Connect(EnterResultState)
--μ€ν¬λ¦½νΈ μ μΌ μλμ μνκ° λ°λλλ§λ€ κ΄λ ¨λ Phase ν¨μκ° νΈμΆλ μ μλλ‘ μ°κ²°ν΄μ.
Game:ConnectChangeEventFunction("GameState", function(self, value)
Game:ChangePhaseByName(Game.GameState)
end)
Phase GetPhase(string phasename)
λ¨κ³ μ΄λ¦μΌλ‘ λ¨κ³λ₯Ό λΆλ¬μ¬ μ μμ΄μ. (λΆλ¬μ¬ λ¨κ³ μ΄λ¦)
-- μν --
Copy local phase = Game:GetPhase("Play") -- "Play" λ¨κ³λ₯Ό λΆλ¬μμ.
νμ¬ λ¨κ³λ₯Ό μ»μ μ μμ΄μ.
-- μν --
Copy local phase = Game:GetCurPhase()
Phase ChangePhaseByName(string changephasename)
λ¨κ³ μ΄λ¦μ ν΅ν΄ ν΄λΉ λ¨κ³λ‘ λ³κ²½ν μ μμ΄μ. (λ³κ²½ν λ¨κ³ μ΄λ¦)
-- μν --
Copy local phase = Game:ChangePhaseByName("Play") -- λ¨κ³λ₯Ό "Play" λ¨κ³λ‘ λ³κ²½ν΄μ.
Phase ChangeToNextPhase()
λ€μ λ¨κ³λ‘ λ³κ²½ν μ μμ΄μ.
-- μν --
Copy local phase = Game:ChangeToNextPhase()
void ConnectEventFunction(string customevent, function TargetFunction)
μ μ κ° μΆκ°ν μ΄λ²€νΈμ ν¨μλ₯Ό μ°κ²°ν μ μμ΄μ. (μ΄λ²€νΈ μ΄λ¦, μ°κ²° ν¨μ)
-- μν --
Copy --μλ² μ€ν¬λ¦½νΈμμ
local cube = Workspace.cube
--μλ²μμ μ΄λ²€νΈ μμ±μ 첫 μΈμλ‘ playerκ° λ€μ΄κ°μ.
local function ServerSomeFunc(player)
print(player .. " - Call ServerSomeFunc")
end
Game:ConnectEventFunction("ServerSomeFunc", ServerSomeFunc) --Gameμ "ServerSomeFunc"λΌλ μ΄λ²€νΈ μ΄λ¦μΌλ‘ ServerSomeFunc ν¨μλ₯Ό μ°κ²°ν΄μ.
--Gameμ΄ μλ μ€λΈμ νΈμλ μ°κ²°ν μ μμ΄μ.
--κ°μ λμμ λ±λ‘λ μ΄λ²€νΈλ§ νΈμΆν μ μμ΄μ.
--κ°μ μ΄λ¦μΌλ‘ μ¬λ¬ ν¨μλ₯Ό μ°κ²°ν μ μμ§λ§ μ΄ κ²½μ° νΈμΆν λ μ°κ²°λ ν¨μκ° λͺ¨λ νΈμΆλΌμ.
-----------------------------------
--ν΄λΌ μ€ν¬λ¦½νΈμμ
local cube = Workspace.cube
--ν΄λΌμμ μ΄λ²€νΈ μμ±μ player μΈμλ₯Ό μ°μ§ μμλ λΌμ.
local function ClientSomeFunc()
print("Call ClientSomeFunc")
end
Game:ConnectEventFunction("ClientSomeFunc", ClientSomeFunc)
void DeleteObject(Object TargetObject)
μ€λΈμ νΈλ₯Ό μμ ν μ μμ΄μ. (μμ ν μ€λΈμ νΈ)
μλ²μμ μ¬μ©νλ©΄ μλ²μ ν΄λΌ μ€λΈμ νΈ λͺ¨λ μμ λκ³ ν΄λΌμμ μ¬μ©νλ©΄ ν΄λΌ μ€λΈμ νΈλ§ μμ ν΄μ
-- μν --
Copy local cube = Workspace.Cube
Game:DeleteObject(cube) --μ€λΈμ νΈλ₯Ό νκ΄΄ν΄μ.
HitResultList LineTraceList(Vector Start, Vector Dir, number Distance)
μ€μ λ μμ μ§μ μμ μνλ λ°©ν₯μΌλ‘ μ§μ λ 거리 λ§νΌμ μΆ©λ 리μ€νΈλ€μ κ°μ Έμ¬ μ μμ΄μ. (μμ μ§μ Vector, λ°©ν₯ Vector, 거리 κ°)
-- μν --
Copy local startPos = Workspace.Cube.Transform.Location
local dir = Vector.new(1, 0, 0)
local distance = 1000
local targetList = Game:LineTraceList(startPos, dir, distance) --μμ μμΉμμ μ§μ λ°©ν₯μ 거리μ μΆ©λμ²΄κ° μμΌλ©΄ μΆ©λ μ 보 리μ€νΈλ₯Ό λ°νν΄μ.
for i = 1, #targetList do
print(targetList[i].HitObject.Name) --μΆ©λν μ€λΈμ νΈμμ.
print(targetList[i].HitLocation) --μΆ©λν μ€λΈμ νΈμ μμΉμμ.
end
HitResultList LineTraceList(Vector Start, Vector Dir, number Distance, string UserCollisionName)
μ€μ λ μμ μ§μ μμ μνλ λ°©ν₯μΌλ‘ μ§μ λ 거리 λ§νΌμ μ μ κ° μΆκ°ν μΆ©λ νμ
κ³Όμ μΆ©λ 리μ€νΈλ€μ κ°μ Έμ¬ μ μμ΄μ. (μμ μ§μ Vector, λ°©ν₯ Vector, 거리 κ°, μνλ μ μ μΆ©λ νμ
μ΄λ¦)
-- μν --
Copy --------μλ² μ€ν¬λ¦½νΈμμ
Game:AddUserCollisionType("CollisionTag1") --μ μ μΆ©λ νμ
μ μΆκ°ν΄μ.
--------μλ² λλ ν΄λΌ μ€ν¬λ¦½νΈμμ
Workspace.Cube.Collision:SetCollisionType("CollisionTag1") --ν΄λΉ μ€λΈμ νΈμ μΆ©λ νμ
μ μ€μ ν΄μ.
local startPos = Workspace.Cube.Transform.Location
local dir = Vector.new(1, 0, 0)
local distance = 1000
local targetList = Game:LineTraceList(startPos, dir, distance, "CollisionTag1") --μμ μμΉμμ μ§μ λ°©ν₯μ 거리μ "CollisiongTag1"μ
--μΆ©λ νμ
μ κ°μ§ μΆ©λμ²΄κ° μμΌλ©΄ μΆ©λ μ 보 리μ€νΈλ₯Ό λ°νν΄μ.
for i = 1, #targetList do
print(targetList[i].HitObject.Name) --μΆ©λν μ€λΈμ νΈμμ.
print(targetList[i].HitLocation) --μΆ©λν μ€λΈμ νΈμ μμΉμμ.
end
λ°νκ°μ΄ falseμ΄λ©΄ μ€νλμ€(μ€νλμ€λ‘ μ μ), trueμ΄λ©΄ νΌλΈλ¦¬μ¬λ μν(νλ μ΄μ΄λ‘ μ μ)
-- μν --
Copy if Game:IsPublished() == true then
print("νΌλΈλ¦¬μ κ²μμ΄λ―λ‘ Playerμμ μ€ννκ².")
else
print("μλλ―λ‘ Studioμμ μ€ννκ².")
end
void SetEnableChatLog(bool Enable)
λ‘κ·Έ μ±ν
μ°½ μΆλ ₯ κΈ°λ₯ νμ±, λΉνμ± μ€μ (trueλ‘ μ€μ μ μ€ν¬λ¦½νΈ print κ° μ±ν
μ°½μλ νμλ¨)
ObjectList FindObjects(Object RootObject, string ObjectName)
RootObject νμμ μ€λΈμ νΈλ€ μ€ ObjectName μ ν΄λΉνλ μ€λΈμ νΈ λ¦¬μ€νΈλ₯Ό μ»μ μ μμ΄μ.
-- μν --
Copy local objList = Game:FindObjects(Workspace, "Cube") --Workspaceμμ μ΄λ¦μ΄ CubeμΈ κ°μ²΄λ₯Ό λͺ¨λ κ°μ Έμμ.
for i = 1, #objList do --리μ€νΈμμ #μ λΆμ¬ 리μ€νΈμ κΈΈμ΄λ₯Ό κ°μ Έμ¬ μ μμ΄μ.
print(objList[i].Name)
end
ObjectList FindObjects(Object RootObject, ObjectType FindType)
RootObject νμμ μ€λΈμ νΈλ€ μ€ ObjectType μ ν΄λΉνλ μ€λΈμ νΈ λ¦¬μ€νΈλ₯Ό μ»μ μ μμ΄μ.
-- μν --
Copy local objList = Game:FindObjects(Workspace, Enum.ObjectType.StaticMesh) --Workspaceμμ StaticMesh κ°μ²΄λ₯Ό λͺ¨λ κ°μ Έμμ.
for i = 1, #objList do --리μ€νΈμμ #μ λΆμ¬ 리μ€νΈμ κΈΈμ΄λ₯Ό κ°μ Έμ¬ μ μμ΄μ.
print(objList[i].Name)
end
μ¬μ© κ°λ₯ν λΆλͺ¨ μ€λΈμ νΈ κΈ°λ₯λ€
μμ±
λΆλͺ¨ κ°μ²΄λ₯Ό μ»μ μ μμ΄μ.
κ°μ²΄μ μ΄λ¦μ
λλ€.
μ΄λ²€νΈ
ν¨μ
μΆκ°λ κ°μ΄ λ³κ²½ λ λ νΈμΆλλ μ΄λ²€νΈμμ. (Value μ΄λ¦, μ°κ²° ν¨μ)
μ΄λ¦μΌλ‘ μμ κ°μ²΄λ₯Ό μ»μ μ μμ΄μ. (μ°Ύκ³ μΆμ μμ κ°μ²΄ μ΄λ¦)
μμ κ°μ²΄μ 리μ€νΈλ₯Ό μ»μ μ μμ΄μ.
μΊλ¦ν°μΈμ§ νμΈν μ μμ΄μ.
μ€ν
ν± λ©μμΈμ§ νμΈν μ μμ΄μ.
FXμΈμ§ νμΈν μ μμ΄μ.
SoundμΈμ§ νμΈν μ μμ΄μ.
ν¬μΈνΈ λΌμ΄νΈμΈμ§ νμΈν μ μμ΄μ.
μ€ν¬νΈ λΌμ΄νΈμΈμ§ νμΈν μ μμ΄μ.
μνΌμ€ UIμΈμ§ νμΈν μ μμ΄μ.
μ€ν¬λ¦° UIμΈμ§ νμΈν μ μμ΄μ.
ν°μΉ UIμΈμ§ νμΈν μ μμ΄μ.
μμ΄ν
μΈμ§ νμΈν μ μμ΄μ.
NPCμΈμ§ νμΈν μ μμ΄μ.
μ€νΈλ¦½νΈμΈμ§ νμΈν μ μμ΄μ.
ColliderμΈμ§ νμΈν μ μμ΄μ.
WidgetμΈμ§ νμΈν μ μμ΄μ.
CameraμΈμ§ νμΈν μ μμ΄μ.
ν΄λΉ μ€λΈμ νΈκ° μ ν¨νμ§ νμΈ ν μμμ΄μ.
ν΄λΉ μ€λΈμ νΈμ κ°μ΄ μ ν¨νμ§ νμΈν μ μμ΄μ.
μΌμ μκ°λ€μ μ°κ²° ν¨μκ° νΈμΆλλ μ΄λ²€νΈλ₯Ό μΆκ°ν΄μ. (μΆκ°ν μ΄λ²€νΈ μ΄λ¦, μκ°, μ°κ²° ν¨μ)
λ±λ‘λ μκ° μ΄λ²€νΈλ₯Ό μμ ν΄μ. (μμ ν μ΄λ²€νΈ μ΄λ¦)