Game
Game
게임 전반적인 역할을 하는 객체에요. 여기 있는 기능들은 클라이언트에서만 사용할 수 있어요.
이벤트
ReceiveGameStatisticsDataEvent
서버로 부터 게임 통계 데이터 받았을 때 발생하는 이벤트에요. 연결함수 형식은 function(keystring, offset, data ) keystring 저장할 때의 keystring, offset 는 number , data 는 통계데이터 입니다.
EnterSelfCamera
Selfcamera Mode가 열릴 때 발생하는 이벤트에요. 연결함수 형식은 function( ) 입니다.
-- 샘플 --
local function EnterSelfCam()
local selfCamState = LocalPlayer:IsSelfCamera()
print(LocalPlayer:GetRemotePlayer().Name, " Self Camera State : ", selfCamState)
end
Game.EnterSelfCamera:Connect(EnterSelfCam) --Game에 셀프카메라 상태가 되면 호출되는 함수를 연결해요.
LeaveSelfCamera
Selfcamera Mode가 닫힐 때 발생하는 이벤트에요. 연결함수 형식은 function( ) 입니다.
-- 샘플 --
local function LeaveSelfCam()
local selfCamState = LocalPlayer:IsSelfCamera()
print(LocalPlayer:GetRemotePlayer().Name, " Self Camera State : ", selfCamState)
end
Game.LeaveSelfCamera:Connect(LeaveSelfCam) --Game에 셀프카메라 상태가 해제되면 호출되는 함수를 연결해요.
OnLuckyDraw
럭키드로우 정보 이벤트에요. 연결함수 형식은 function(LuckyDrawInfo), LuckyDrawInfo 은 LuckyDrawInfo 객체 입니다.
속성
MasterVolume
MasterVolume을 설정할 수 있어요.
-- 샘플 --
local CurrentVolume = Game.MasterVolume
Game.MasterVolume = 0.1
MusicVolume
MusicVolume을 설정할 수 있어요.
-- 샘플 --
local CurrentVolume = Game.MusicVolume
Game.MusicVolume = 0.1
EffectVolume
EffectVolume을 설정할 수 있어요.
-- 샘플 --
local CurrentVolume = Game.EffectVolume
Game.EffectVolume = 0.1
EtcVolume
EtcVolume을 설정할 수 있어요.
-- 샘플 --
local CurrentVolume = Game.EtcVolume
Game.EtcVolume = 0.1
TextChatVisible
TextChatVisible 채팅창을 켜고 끌 수 있어요
-- 샘플 --
Game.TextChatVisible = false
함수
RemotePlayer GetRemotePlayer(number PlayerID)
아이디로 플레이어를 얻을 수 있어요. (찾고싶은 플레이어 아이디)
-- 샘플 --
local player = Game:GetRemotePlayer(PlayerID) --플레이어 아이디에 해당하는 플레이어를 반환해요.
Character GetRemotePlayerCharacter(number PlayerID)
플레이어 아이디로 해당 플레이어의 캐릭터를 얻을 수 있어요. (캐릭터를 찾고싶은 플레이어 아이디)
-- 샘플 --
local character = Game:GetRemotePlayerCharacter(PlayerID) --플레이어 아이디에 해당하는 캐릭터를 반환해요.
number GetPlayerCount()
현재 게임에 참여하고 있는 플레이어의 수를 얻을 수 있어요.
-- 샘플 --
print(Game:GetPlayerCount())
PlayerList GetAllPlayer()
월드에 접속한 모든 플레이어 얻을 수 있어요.
-- 샘플 --
local allPlayerList = Game:GetAllPlayer() --모든 플레이어를 리스트로 반환해요.
for i = 1, #allPlayerList do
print(allPlayerList[i].Name)
end
void SendEventToServer(string EventName, Args ...)
서버에 커스텀 이벤트를 보내는 함수에요. (이벤트 이름, 전달하고 싶은 변수들 ...)
-- 샘플 --
--클라 스크립트에서
local cube = Workspace.Cube
wait(1)
cube:SendEventToServer("SomeFunc", 1) --자신 플레이어에게 SomeFunc() 함수를 호출해요.
-----------------------------------
--서버 스크립트에서
local cube = Workspace.cube
--서버에서 이벤트 생성시 첫 인자로 player가 들어가요.
--필요하다면 함수의 인자도 넣을 수 있어요. 단, 숫자나 문자열 인자만 넣을 수 있어요.
local function SomeFunc(player, id)
print("Call SomeFunc from " .. player.Name .. " (" .. id .. ")")
end
cube:ConnectEventFunction("SomeFunc", SomeFunc) --오브젝트에 "SomeFunc"라는 이벤트 이름으로 SomeFunc 함수를 연결해요.
--오브젝트가 아닌 Game에도 연결할 수 있어요.
--같은 대상에 등록된 이벤트만 호출할 수 있어요.
AnimStateMachineSetting AddAnimStateMachineSetting(string StateMachineName)
캐릭터에 사용될 애니메이션 상태머신 설정을 추가할 수 있어요. (설정할 상태머신 이름)
-- 샘플 --
--캐릭터에 사용될 애니메이션 상태머신 설정을 추가해요.
local AnimStateMachineSetting = Game:AddAnimStateMachineSetting("DefaultCharacterAnim")
AnimStateMachineSetting GetAnimStateMachineSetting(string StateMachineName)
설정된 애니메이션 상태머신을 얻을 수 있어요. (얻고 싶은 상태머신 이름)
-- 샘플 --
wait(1)
local AnimStateMachineSetting = Game:GetAnimStateMachineSetting("DefaultCharacterAnim")
print(AnimStateMachineSetting)
void SetCharacterAnimStateMachine(CharacterSetting CharacterSetting, AnimStateMachineSetting AnimSetting)
해당 캐릭터 설정으로 생성되는 캐릭터의 애니메이션 상태 머신을 설정 할 수 있어요. (대상 캐릭터 설정, 사용 할 애니메이션 상태 설정)
-- 샘플 --
Game:SetCharacterAnimStateMachine(AnimationSetting, AnimStateMachineSetting) --애니메이션 상태머신을 사용 할 캐릭터(Object)를 설정해요.
void SetNPCAnimStateMachine(string NPCSettingName, string AnimStateMachineSettingName1)
해당 NPC의 애니메이션 상태 머신 사용하게 할 수 있어요. (설정한 NPC 이름, 애니메이션 상태 머신 이름)
void ChangeCharacterAnimStateMachine(Character Character, AnimStateMachineSetting AnimSetting, AnimationSetting AnimationSetting)
해당 캐릭터의 애니메이션 상태 머신을 주어진 상태 머신과 캐릭터 세팅의 애니메이션으로 교체해요. (변경할 캐릭터, 적용할 상태 머신, 적용할 애니메이션 세팅)
-- 샘플 --
local FPSCharacter = Toybox.FPSCharacterSetting
local AniStateMachine = Game:GetAnimStateMachineSetting("FPSCharacterAnim") --FPSCharacter의 DefaultCharacterAnimSetting에서 설정한 애니메이션 상태머신의 이름이어야 해요
--해당 캐릭터의 애니메이션 상태 머신을 교체해요. (변경할 캐릭터, 적용할 상태 머신, 적용할 애니메이션 세팅)
Game:ChangeCharacterAnimStateMachine(character, AniStateMachine, FPSCharacter.AnimationSetting)
void ResetRespawnCharacterAnimStateMachine(Character Character, bool IsReset)
해당 캐릭터의 변경된 상태 머신을 리스폰 시 초기화 시킬지 결정해요.
-- 샘플 --
--해당 캐릭터의 변경된 상태 머신을 리스폰 시 초기화 시킬지 결정해요.
--두번째 값이 false이면, 해당 캐릭터는 리스폰시에도 기본 애니로 초기화되지 않아요.
Game:ResetRespawnCharacterAnimStateMachine(character, false)
FX CreateFX(ObjectFX FXObject, Vetor Location)
FX를 생성할 수 있어요. (생성 할 FX 오브젝트, 생성할 위치)
-- 샘플 --
local spawnPos = Workspace.Cube.Transform.Location
Game:CreateFX(Workspace.Effect, spawnPos) --이펙트를 지정 위치에 생성해요.
void DeleteFX(FX FXObject)
FX를 제거시켜요. (제거할 FX 오브젝트)
-- 샘플 --
Game:DeleteFX(Workspace.Effect)
ObjectSound PlaySound(ObjectSound SoundObject, Vetor Location)
사운드를 플레이해요. (플레이 할 Sound 오브젝트, 플레이 할 위치 Vector)
-- 샘플 --
Game:PlaySound(Workspace.Sound, Vector.new(0, 0, 0))
void StopSound(ObjectSound SoundObject)
플레이 중인 사운드를 정지시켜요. (정지할 Sound)
-- 샘플 --
Game:StopSound(Workspace.Sound)
ObjectSound CreateObject(Object SourceObject, Vector Location)
지정된 위치에 오브젝트를 생성 시켜요. (생성 할 Object, 생성 할 위치 Vector)
-- 샘플 --
local cube = Workspace.Cube
local createPos = Vector.new(0, 0, 0)
local temp = Game:CreateObject(cube, createPos) --오브젝트를 지정된 위치에 생성해요. (생성한 클라이언트에서만 보여요.)
print(temp.Name) --CreateObject로 생성한 오브젝트를 변수에 담은 뒤 후처리할 수 있어요.
UIScene CreateUIScene(UIScene SourceUIScene)
(deprecate) CreateUIWidget 함수를 이용하세요.
UIScene CreateUIScene(string UISceneName, UIScene SourceUIScene)
(deprecate) CreateUIWidget 함수를 이용하세요.
-- 샘플 --
local uiScene = Game:CreateUIScene(Workspace.ScreenUI) --대상 UI를 복제해요.
print(uiScene.Name)
local uiScene = Game:CreateUIScene("NewScreenUI", Workspace.ScreenUI) --새로운 이름으로 대상 UI를 복제해요.
print(uiScene.Name)
UIWidget CreateUIWidget(UIWidget SourceUIWidget)
SourceUIWidgetObject와 같은 UIWidget을 생성한다. 자식관계의 Widget까지 똑같이 만듭니다. (생성할 최상위 위젯의 이름, 생성 할 원본 위젯)
-- 샘플 --
local WidgetImage1 = Game:CreateUIWidget(Workspace.ScreenUI.Image) --대상 UI Widget를 똑같이 만들어요.
local WidgetImage2 = Game:CreateUIWidget("NewUIWidget", Workspace.ScreenUI.Image) --대상 UI Widget를 똑같이 만들어요.
Vector GetMouseHitLocation()
자신의 마우스 2D 위치에서 월드에 충돌된 3D위치 좌표를 얻을 수 있어요.
-- 샘플 --
MouseInput = Input:AddGroup("MouseInput")
MouseInput:AddActionKeyEvent("ClickKey", Enum.Key.LeftMouseButton)
Input:ActiveGroup("MouseInput")
MouseInput:ProcessInputActionEvent("ClickKey", Enum.KeyInputType.Released, function()
local pos = Game:GetMouseHitLocation() --마우스를 클릭한 위치를 Vector로 반환해요.
print("Click Position : " .. pos)
end
HitObject GetMouseHitObject()
자신의 마우스 2D 위치에서 월드에 충돌된 Object를 얻어 올 수 있어요.
-- 샘플 --
while true do
local hitObj = Game:GetMouseHitObject() --마우스 커서 위치에 해당하는 오브젝트를 반환해요.
if hitObj ~= nil then
print(hitObj.Name)
else
print("nil")
end
wait(0.5)
end
void OnChatNormalMessage(number TargetID, string Message, ChatVisibleType ChatVisibleType)
내 채팅 창에 일반 메시지 추가. (연출용)
-- 샘플 --
local PlayerID = character:GetPlayerID()
wait(2)
Game:OnChatNormalMessage(PlayerID, "출력 내용", Enum.ChatVisibleType.ShowChatOnly) --채팅창에만 표시해요
wait(2)
Game:OnChatNormalMessage(PlayerID, "출력 내용", Enum.ChatVisibleType.ShowBalloonOnly) --말풍선으로만 표시해요
wait(2)
Game:OnChatNormalMessage(PlayerID, "출력 내용", Enum.ChatVisibleType.ShowBoth) --채팅창과 말풍선으로 표시해요
void OnChatSystemMessage(number PlayerID, string Message)
내 채팅 창에 시스템 메시지 추가.
-- 샘플 --
wait(2)
Game:OnChatSystemMessage(playerID, "출력 내용") --채팅창에만 표시해요
void OnChatSystemMessage(string Name, string Message)
내 채팅 창에 시스템 메시지 추가.
-- 샘플 --
wait(2)
Game:OnChatSystemMessage("운영자", "출력 내용") --채팅창에만 표시해요
void OnChatNPCMessage(ObjectNPC NPC, string Message, ChatVisibleType ChatVisibleType)
내 채팅 창에 NPC 메시지 추가.
-- 샘플 --
local npc = Script.Parent
wait(2)
Game:OnChatNPCMessage(npc, "출력 내용", Enum.ChatVisibleType.ShowChatOnly) --채팅창에만 표시해요
wait(2)
Game:OnChatNPCMessage(npc, "출력 내용", Enum.ChatVisibleType.ShowBalloonOnly) --말풍선으로만 표시해요
wait(2)
Game:OnChatNPCMessage(npc, "출력 내용", Enum.ChatVisibleType.ShowBoth) --채팅창과 말풍선으로 표시해요
FiniteStateMachine AddFSM(string StateMachineName)
오브젝트나 NPC에 사용될 FSM을 추가할 수 있어요. (상태머신 이름)
-- 샘플 --
local FSM = Game:AddFSM("FSM")
FiniteStateMachine GetOrCreateFSM(string StateMachineName, number key)
이미 존재하는 FSM을 가져올 수 있어요.(없으면 만듭니다.) (상태머신 이름, FSM 할당된 Object Key)
-- 샘플 --
local NPC = Script.Parent
local FSM = Game:GetOrCreateFSM("FSM", NPC:GetKey()) --Server에 있는 FSM를 가져와요.
Enum GetPlayerDevice()
현재 접속한 기기의 Type을 반환
-- 샘플 --
local PlayerDevice = Game:GetPlayerDevice()
if PlayerDevice == Enum.PlayerDevice.PC then
print("Desktop")
elseif PlayerDevice == Enum.PlayerDevice.Android then
print("Android")
elseif PlayerDevice == Enum.PlayerDevice.iOS then
print("iOS")
end
Vector2D GetScreenResolution()
화면의 해상도를 얻는다.
-- 샘플 --
local function FuncViewportResized(width, hight)
print("Viewport Size가 변경되었습니다.")
end
Game.OnViewportResizedEvent:Connect(FuncViewportResized) --Game에 Viewport Size가 변경되면 호출되는 함수를 연결해요.
WidgetList FindWidgets(Object RootObject, WidgetType Type)
RootObject 하위의 오브젝트들 중 WidgetType 에 해당하는 위젯 리스트를 얻을 수 있어요.
-- 샘플 --
local widgetList = Game:FindWidgets(Workspace, Enum.UIWidgetType.Text)
for i = 1, #widgetList do --리스트앞에 #을 붙여 리스트의 길이를 가져올 수 있어요.
print(widgetList[i].Name)
end
사용 가능한 부모 오브젝트 기능들
속성
이름
설명
이벤트
이름
설명
매 프레임마다 호출되는 이벤트에요. 연결함수 형식은 function(updateTime), updateTime 은 number 입니다.
플레이어가 게임에 입장 시 호출되는 이벤트에요. 연결함수 형식은 function(enterPlayer), enterPlayer 은 Player 객체 입니다.
플레이어가 게임에서 나갈 때 호출되는 이벤트에요. 연결함수 형식은 function(leavePlayer), leavePlayer 은 Player 객체 입니다.
캐릭터가 죽을 때 호출되는 이벤트에요. 연결함수 형식은 function(deathCharacter), deathCharacter 는 Character 객체 입니다.
캐릭터가 스폰 될 때 호출되는 이벤트에요. 연결함수 형식은 function(spawnCharacter), spawnCharacter 는 Character 객체 입니다.
함수
이름
설명
게임에 단계를 추가할 수 있어요. (추가할 단계 이름)
단계 이름으로 단계를 불러올 수 있어요. (불러올 단계 이름)
현재 단계를 얻을 수 있어요.
단계 이름을 통해 해당 단계로 변경할 수 있어요. (변경할 단계 이름)
다음 단계로 변경할 수 있어요.
유저가 추가한 이벤트에 함수를 연결할 수 있어요. (이벤트 이름, 연결 함수)
오브젝트를 삭제할 수 있어요. (삭제할 오브젝트) 서버에서 사용하면 서버와 클라 오브젝트 모두 삭제되고 클라에서 사용하면 클라 오브젝트만 삭제해요
설정된 시작 지점에서 원하는 방향으로 지정된 거리 만큼의 충돌 리스트들을 가져올 수 있어요. (시작 지점 Vector, 방향 Vector, 거리 값)
설정된 시작 지점에서 원하는 방향으로 지정된 거리 만큼의 유저가 추가한 충돌 타입과의 충돌 리스트들을 가져올 수 있어요. (시작 지점 Vector, 방향 Vector, 거리 값, 원하는 유저 충돌 타입 이름)
반환값이 false이면 스튜디오(스튜디오로 접속), true이면 퍼블리쉬된 상태(플레이어로 접속)
로그 채팅창 출력 기능 활성, 비활성 설정(true로 설정 시 스크립트 print 가 채팅창에도 표시됨)
RootObject 하위의 오브젝트들 중 ObjectName 에 해당하는 오브젝트 리스트를 얻을 수 있어요.
RootObject 하위의 오브젝트들 중 ObjectType 에 해당하는 오브젝트 리스트를 얻을 수 있어요.
Last updated
Was this helpful?