사용자 및 플레이어

*이 콘텐츠는 AI(베타)를 사용해 번역되었으며, 오류가 있을 수 있습니다. 이 페이지를 영어로 보려면 여기를 클릭하세요.

사용자가 경험에 참여하면 Roblox는 데이터 모델에서 그들을 플레이어 로 나타냅니다.Player 개체에는 사용자의 사용자 이름, 친구 목록, 저장된 아바타 캐릭터 및 Roblox 멤버십 입력같이 경험 간에 일반적인 정보와 함께 사용자의 수명 주기에 영향을 미치는 속성, 메서드 및 이벤트가 포함되어 있습니다.

Players 서비스에는 경험에서 모든 Player 인스턴스가 포함되어 있습니다.각 Player 개체는 경험에서 사용자를 나타내며, 사용자의 경험을 사용자 지정할 수 있는 네 가지 중요한 컨테이너를 부모로 두고 있습니다: Backpack , StarterGear , PlayerGuiPlayerScripts .

수명 주기

클라이언트 및 서버 사이드 스크립트는 모두 Players.PlayerAddedPlayers.PlayerRemoved 이벤트에 연결하여 라이프사이클에 응답하여 작업을 수행할 수 있습니다 Player 개체의.그들은 또한 Player.CharacterAdded , Player.CharacterRemoving , 및 Humanoid.Died 이벤트에 연결하여 캐릭터가 스폰하고, 소멸하고, 죽을 때 게임 관련 작업을 수행할 수 있습니다.

스크립트를 사용하여 사용자가 참여하거나 종료할 때 데이터를 검색하고 저장하는 서버 관련 서비스에 액세스합니다.클라이언트가 새로운 사용자와 관련된 게임플레이 인스턴스를 생성하고 제거해야 하는 경우 LocalScripts를 사용하십시오, 예를 들어 사용자의 통계를 커스텀 리더보드에 표시하는 GUI 디스플레이.

사용자 참여

클라이언트가 경험에 연결하면 관련된 개체가 서비스에 복제됩니다.The Players.PlayerAdded 은 경험에 참여하는 사용자를 나타냅니다.일부 예시 사용 사례에는 사용자 데이터 로드, 팀 할당 및 사용자의 캐릭터 의상 변경이 포함됩니다.Players.PlayerAdded 이벤트는 데이터 저장소 및 기타 함수를 호출할 때 사용할 수 있는 사용자가 참여하는 개체 Player 를 전달합니다.The event passes the object of the user who joins, which you can use when calling other functions, such as data store and RemoteEvent objects.

가입 시 사용자 데이터 로드

경험에 참여할 때 사용자의 데이터를 로드하려면 Players.PlayerAdded 이벤트를 Script에서 사용하십시오.다음 예제 Script는 이벤트를 수신하고 사용자 ID를 데이터스토어 키로 사용하여 사용자의 데이터를 검색하려고 합니다.사용자 데이터를 성공적으로 검색한 후에는 사용자의 진행률과 통계를 로드하는 데 사용할 수 있습니다.


local DataStoreService = game:GetService("DataStoreService")
local playerDataStore = DataStoreService:GetDataStore("PlayerData")
game:GetService("Players").PlayerAdded:Connect(function(player)
local userId = player.UserId
-- 데이터 저장소 키 읽기
local getSuccess, currentData = pcall(function()
return playerDataStore:GetAsync(userId)
end)
if getSuccess then
print(currentData)
end
-- 현재 데이터로 추가 작업 수행
end)

사용자 퇴장

클라이언트가 경험에서 연결을 끊으면 서버는 연결된 Player 개체를 Players 서비스에서 삭제합니다.Players.PlayerRemoving 이벤트는 경험을 떠나는 사용자를 나타냅니다.일부 예시 사용 사례에는 사용자 데이터 저장, 점수판에서 스탯 제거 및 집과 같은 모델 파괴가 포함됩니다. 이벤트는 데이터 저장소 및 기타 함수를 호출할 때 사용할 수 있는 사용자가 떠나는 개체를 전달합니다.

이벤트가 Player.PlayerRemoving 로 호출되는 것이 아니라 Player.PlayerRemoved 로 호출되는 것은 "제거"가 이미 제거되었음을 의미하고 따라서 스크립트에서 액세스할 수 없기 때문입니다.Notice that the event is called , not , because "removed" would imply that the Player object is already removed and is therefore inaccessible to scripts.

나가면서 사용자 데이터 저장 Save user data on 종료

경험을 떠날 때 사용자의 데이터를 저장하려면 Players.PlayerRemoving 이벤트를 Script에서 사용하십시오.다음 예제 Script는 이벤트를 수신하고 사용자 ID를 데이터 저장소 키로 사용하여 사용자의 데이터를 저장하려고 시도합니다.

ServerScriptService의 스크립트

local DataStoreService = game:GetService("DataStoreService")
local playerDataStore = DataStoreService:GetDataStore("PlayerData")
game:GetService("Players").PlayerRemoving:Connect(function(player)
local userId = player.UserId
-- 게임에서 플레이어의 데이터 상태 가져오기
local currentData = getCurrentData(player)
-- 데이터 상점저장
local setSuccess, errorMessage = pcall(function()
playerDataStore:SetAsync(userId, currentData)
end)
if not setSuccess then
warn(errorMessage)
end
end)

캐릭터 생성

사용자의 Player.Character은 아바타를 나타냅니다.기본적으로, Player.CharacterAutoLoads 는 true이고, 사용자의 캐릭터 모델은 경험에 참여할 때 자동으로 생성됩니다.Player.CharacterAutoLoads가 거짓이면 캐릭터를 수동으로 생성하기 위해 Player:LoadCharacter()를 호출해야 합니다.

사용자의 Player.Character 가 생성될 때, 스크립트와 로컬 스크립트가 StarterCharacterScripts 에서 캐릭터 모델과 이벤트 Player.CharacterAdded 에 복제됩니다.Player.CharacterAdded 이벤트는 새로운 캐릭터 모델을 모든 이벤트 수신기에 전달하여 캐릭터의 Humanoid 개체를 찾고 동작을 수정할 수 있습니다.예를 들어, Humanoid:ApplyDescription() 를 사용하여 아바타의 의상을 변경하고 Humanoid.WalkSpeed 또는 Humanoid.JumpHeight 를 사용하여 아바타의 이동을 수정할 수 있습니다.

캐릭터 디스패닝

플레이어의 Humanoid 가 사망하면 신체 부위가 땅에 떨어지고 Humanoid.Died 이벤트가 발생합니다.서버는 특정 시간 후에 Players.Respawntime 속성이 결정하는 문자 모델과 내부의 모든 스크립트를 자동으로 제거합니다.Player.CharacterRemoving 이벤트를 사용하여 캐릭터와 관련된 다른 개체, 예를 들어 운전하는 차량의 네트워크 소유권을 재설정할 수 있습니다.

플레이어 사망 수 계산

Humanoid.Died 이벤트를 사용하여 킬에 대한 점수를 처리하거나 맞춤형 래그돌 모델을 만들 수 있습니다.다음 Script 는 각 사용자의 캐릭터 모델을 검색하기 위해 Player.CharacterAdded 에 연결하고 캐릭터의 Humanoid 개체에 연결합니다.인간형의 이벤트 Humanoid.Died 가 발생하면 스크립트는 사용자의 인간형이 죽은 횟수를 증가시키고 그 수를 출력합니다.

ServerScriptService의 스크립트

game:GetService("Players").PlayerAdded:Connect(function(player)
local deaths = 0
player.CharacterAdded:Connect(function(character)
local humanoid = character:WaitForChild("Humanoid")
humanoid.Died:Connect(function()
deaths += 1
print(player.Name .. " death count: " .. deaths)
end)
end)
end)

사용자 금지

경험에서 질서와 공정한 플레이를 보장하기 위해, 경험 규칙과 커뮤니티 가이드라인을 위반하는 사용자를 금지할 수 있습니다.금지 기간, 금지 메시지 및 심지어 잠재적인 대체 계정에 대한 금지를 수정할 수 있습니다.이 기능을 사용할 때, 금지메시징에 대한 가이드라인도 따라야 합니다.

구현 및 사용 지침은 Players.BanAsync에 참조하십시오.

금지 가이드라인

경험에서 금지를 구현할 때 다음 가이드라인을 따르십시오:

  • 경험 규칙은 Roblox의 커뮤니티 표준 및 사용 조건과 상충되지 않아야 합니다.
  • 크리에이터는 모든 사용자에게 액세스 가능한 곳에서 경험 규칙을 명확하게 명시해야 합니다.
  • 크리에이터는 경험 규칙을 공정하게 적용하고 특정 사용자를 임의로 타겟으로 삼아서는 안됩니다.
  • 사용자는 금지가 잘못되었다고 생각하면 직접 크리에이터에게 항소할 수 있습니다.
    • 사용자가 크리에이터의 경험 규칙이나 규칙 적용이 커뮤니티 표준을 위반한다고 믿지 않는 한 Roblox는 이러한 항소를 중재하지 않습니다.
  • 크리에이터의 경험 규칙이나 규칙 적용이 커뮤니티 표준을 위반한다고 믿을 만한 이유가 있으면 Roblox는 경험을 조정할 수 있습니다 커뮤니티 표준.

메시지 가이드라인

사용자가 금지되면 금지 기간 및 이유와 같은 정보가 표시되는 오류 모달이 표시됩니다.텍스트가 필터링된 메시지에서 Roblox의 커뮤니티 표준을 충족하는 한 항소 또는 연락 정보와 같은 추가 정보를 포함할 수 있습니다.

예를 들어, 금지 메시지에서 브랜드 이름과 플랫폼을 참조할 수 있습니다.

  • “그룹/경험 페이지에서 Discord 방문”
  • “Twitter나 X에서 메시지 보내기”

개인 정보나 직접 링크에 대한 언급은 이 메시지 필드에서 허용되지 않습니다.여기에는 특정 사용자 이름이나 핸들을 게시하거나 Discord 서버나 X 계정에 직접 링크를 제공하는 것이 포함됩니다.

컨테이너

Player 개체는 여러 가지 중요한 컨테이너를 저장합니다:

백팩

Player.Backpack 컨테이너는 사용자의 인벤토리를 저장합니다.사용자의 디스플레이에 있는 개체는 화면 하단에 인벤토리에 표시됩니다.사용자가 인벤토리에서 Tool 를 선택하면 장착되고, Player.Backpack 에서 Player.Character 로 이동합니다.

사용자의 Player.Character 가 생성될 때, StarterPack 서비스의 콘텐츠와 그들의 Player.StarterGear 클론이 그들의 Player.Backpack로 생성됩니다.캐릭터가 사망하면 클라이언트가 그들의 Backpack를 파괴하고 새로운 것으로 교체합니다.

The Backpack 또한 클라이언트와 서버가 모두 액세스할 수 있는 ScriptsLocalScripts을 저장하고 실행합니다.

Roblox는 플레이어가 화면 하단에서 자신의 Backpack 및 인벤토리에 액세스할 수 있는 인터페이스를 제공합니다.기본 Roblox 백팩 GUI를 비활성화하고 보유GUI로 교체하려면 LocalScript에서 StarterGui:SetCoreGuiEnabled()를 호출하십시오.자세한 내용은 StarterGui에 참조하십시오.

스타터 기어

컨테이너 StarterGear 는 캐릭터가 생성될 때 사용자의 Player.Backpack 에 콘텐츠를 복제합니다.또한, 장소가 장비를 허용하고 사용자가 장비를 소유하는 경우, 생성될 때 장비의 Tool 개체가 그들의 Player.StarterGear 에 생성됩니다.

StarterPack 와 달리, Player.StarterGear 는 서비스가 아니라 각 Player 개체의 자식이므로 내용이 사용자 특정입니다.각 사용자는 자신의 내에서 다른 개체를 가질 수 있습니다.사용하려면 Player.StarterGear , 권한 아래에 있는 경험 설정 페이지에서 장비를 활성화하십시오.권한 페이지에서 입력장비를 활성화할 수 있습니다.장비를 비활성화하려면 입력선택 취소합니다.

장비를 추가한 후 항상 게임을 테스트하여 사용자가 거기에서 쉽게 남용할 수 없는지 확인하십시오.장비에는 Script 개체가 포함되어 플레이어가 고려하지 않을 수 있는 작업을 수행할 수 있습니다.예를 들어, 탐색 장비는 플레이어가 원하지 않는 맵의 일부에 액세스할 수 있도록 허용할 수 있습니다.무기는 장비를 가진 플레이어가 다른 플레이어에게 피해를 입히고, 복수나 보복 없이 가능합니다.

PlayerGui

PlayerGui 컨테이너는 플레이어의 GUI를 생성하는 개체를 저장합니다.스크린 가이가 PlayerGui의 후손이면, 스크린 가이 내부의 모든 GuiObject가 플레이어의 화면에 표시됩니다.모든 LocalScript 클론화할 때 실행됩니다. PlayerGui .플레이어의 Player.Character 가 처음 생성될 때, StarterGui의 모든 콘텐츠가 자동으로 플레이어의 PlayerGui 에 복사됩니다.

플레이어.캐릭터 자동 로드가 false로 설정되면 캐릭터가 생성되지 않고 StarterGui 콘텐츠는 Player:LoadCharacter() 호출될 때까지 복사되지 않습니다.StarterGui.ResetPlayerGuiOnSpawn 가 참으로 설정되면 플레이어의 캐릭터가 재생성될 때마다 해당 플레이어의 PlayerGui 의 모든 콘텐츠가 지워지고 StarterGui 의 콘텐츠로 교체됩니다.

플레이어 스크립트

사용자가 경험에 참여하면 StarterPlayer.StarterPlayerScripts 컨테이너의 콘텐츠가 PlayerScripts 로 복제됩니다. 복제할 때 모든 로컬 스크립트와 모듈 스크립트가 실행됩니다.

BackpackPlayerGui 컨테이너와 달리, PlayerScripts 컨테이너는 서버에 액세스할 수 없으며, 사용자의 PlayerScripts 컨테이너는 캐릭터가 죽고 재생성될 때 재설정되지 않습니다.서버 사이드 개체도 부모에게 전달되면 실행되지 않습니다.PlayerScripts 컨테이너는 일반 채팅 시스템이나 플레이어 입력 제어같이 사용자의 캐릭터 수명 주기에 연결되지 않은 스크립트에 유용합니다.