PhotonNetwork 플러그인을 사용하기 위한 메인 클래스. 이 클래스는 static 입니다. More...
Public Member Functions | |
delegate void | EventCallback (byte eventCode, object content, int senderId) |
OnEventCall 에서 사용할 수 있는 delegate 를 정의 합니다. More... | |
Static Public Member Functions | |
static void | SwitchToProtocol (ConnectionProtocol cp) |
오프라인 일때 네트워크 프로토콜이 전환될 수 있습니다 (접속에 사용하는 포트에 영향을 주게 됩니다). More... | |
static bool | ConnectUsingSettings (string gameVersion) |
에디터에서 설정된 Photon 에 연결 (PhotonServerSettings 파일에 저장). More... | |
static bool | ConnectToMaster (string masterServerAddress, int port, string appID, string gameVersion) |
주소,포트,appID 와 게임(클라이언트) 버전을 통해 Photon 마스터 서버에 접속 합니다. More... | |
static bool | Reconnect () |
연결 해제가 된 이후 마스터 서버에 재접속 하기 위해 사용 될 수 있습니다. More... | |
static bool | ReconnectAndRejoin () |
게임플레이 하는 동안 연결이 해제 되었을 때, 이 메소드로 재연결 하여 룸에 참여 합니다. More... | |
static bool | ConnectToBestCloudServer (string gameVersion) |
가장 낮은 Ping 을 가진 Photon 클라우드 지역으로 접속 합니다 (유니티의 Ping 을 지원하는 플랫폼에서만). More... | |
static bool | ConnectToRegion (CloudRegionCode region, string gameVersion) |
선택한 Photon 클라우드 지역으로 접속 합니다. More... | |
static void | OverrideBestCloudServer (CloudRegionCode region) |
ConnectToBestCloudServer(string gameVersion) 에서 사용된 지역으로 덮어 씁니다. More... | |
static void | RefreshCloudServerRating () |
(현재)가장 좋은 핑이 나오는 것을 찾기 위해서 모든 클라우드 서버에 핑을 날립니다. More... | |
static void | NetworkStatisticsReset () |
트래픽 통계를 재설정하고 다시 사용할 수 있도록 합니다. More... | |
static string | NetworkStatisticsToString () |
NetworkStatisticsEnabled 가 사용되었을 때만 통계를 수집하는 것이 가능함. More... | |
static void | InitializeSecurity () |
유니티 네트워킹과만 호환 되도록 사용. 암호화는 접속시 자동적으로 초기화 됩니다. More... | |
static void | Disconnect () |
이 클라이언트를 Photon 서버에서 접속 해제 합니다. 룸을 나가고 완료시 OnDisconnectedFromPhoton 이 호출 됩니다. More... | |
static bool | FindFriends (string[] friendsToFind) |
친구들의 목록에 대한 룸과 온라인 상태를 요청 하고 결과를 PhotonNetwork.Friends 에 저장 합니다. More... | |
static bool | CreateRoom (string roomName) |
주어진 이름으로 룸을 생성하지만 이미 룸 이름이 있는 경우에는 실패 합니다. roomName 을 null 로 하면 무작위로 룸 이름을 생성 합니다. More... | |
static bool | CreateRoom (string roomName, RoomOptions roomOptions, TypedLobby typedLobby) |
룸을 생성하고 만약 기존의 룸이 있으면 실패 합니다. 마스터 서버에서만 호출 될 수 있습니다. More... | |
static bool | CreateRoom (string roomName, RoomOptions roomOptions, TypedLobby typedLobby, string[] expectedUsers) |
룸을 생성하고 이미 존재하고 있다면 실패 합니다. 마스터 서버에서만 호출 될 수 있습니다. More... | |
static bool | JoinRoom (string roomName) |
roomname 으로 룸에 참여 하고 성공시에는 OnJoinedRoom() 이 호출 됩니다. 로비에 영향을 받지 않습니다. More... | |
static bool | JoinRoom (string roomName, string[] expectedUsers) |
roomname 으로 룸에 참여하고 성공시에는 OnJoinedRoom() 이 호출 됩니다. 로비에 영향을 받지 않습니다. More... | |
static bool | JoinOrCreateRoom (string roomName, RoomOptions roomOptions, TypedLobby typedLobby) |
지정된 이름의 룸에 참여하거나 생성 합니다 - 누군가가 룸을 이미 생성했는지에 대해 전혀 신경 쓸 필요가 없습니다. More... | |
static bool | JoinOrCreateRoom (string roomName, RoomOptions roomOptions, TypedLobby typedLobby, string[] expectedUsers) |
지정된 이름의 룸에 참여하거나 생성 합니다 - 누군가가 룸을 이미 생성했는지에 대해 전혀 신경 쓸 필요가 없습니다. More... | |
static bool | JoinRandomRoom () |
현재 사용하고 있는 로비에서 사용할 수 있는 룸에 참여 하고 사용할 수 있는 룸이 없으면 실패 합니다. More... | |
static bool | JoinRandomRoom (Hashtable expectedCustomRoomProperties, byte expectedMaxPlayers) |
커스텀 프로퍼티 조건에 맞는 오픈되어 있는 룸에 참여를 시도 하지만 사용할 수 있는 게 없으면 실패 합니다. More... | |
static bool | JoinRandomRoom (Hashtable expectedCustomRoomProperties, byte expectedMaxPlayers, MatchmakingMode matchingType, TypedLobby typedLobby, string sqlLobbyFilter, string[] expectedUsers=null) |
커스텀 프로퍼티와 맞는 오픈된 룸에 참가를 시도 합니다. 사용할 수 있는 룸이 없으면 실패 합니다. More... | |
static bool | ReJoinRoom (string roomName) |
연결 해제와 재접속 후에 룸에 되돌아 가기 위해 사용할 수 있습니다. More... | |
static bool | JoinLobby () |
마스터 서버에서 사용할 수 있는 룸 리스트를 얻기 위해 로비에 참여 할 수 있습니다. More... | |
static bool | JoinLobby (TypedLobby typedLobby) |
마스터 서버에서 사용할 수 있는 룸 리스트를 얻기 위해 로비에 참여 할 수 있습니다. More... | |
static bool | LeaveLobby () |
사용할 수 있는 룸에 대한 업데이트 수신을 중지 하기 위해서는 로비를 빠져나가십시오. More... | |
static bool | LeaveRoom () |
현재 참여하고 있는 룸을 떠나고 마스터 서버로 되돌아 가서 룸에 참여하거나 생성 할 수 있습니다(주석을 참고 하세요). More... | |
static bool | GetCustomRoomList (TypedLobby typedLobby, string sqlLobbyFilter) |
SQL-과 같은 "where" 조건절에 매칭되는 게임의 커스텀 목록을 서버에서 얻어 오고 OnReceivedRoomListUpdate 콜백을 트리거합니다. More... | |
static RoomInfo[] | GetRoomList () |
RoomInfo 배열로 현재 알고 있는 룸들을 얻습니다. 로비에 있는 동안 사용할 수 있으며 갱신됩니다(insideLobby 값을 체크 하세요). More... | |
static void | SetPlayerCustomProperties (Hashtable customProperties) |
이 (로컬) 플레이어의 프로퍼티를 설정하고 다른 플레이어들에게 동기화 시켜줍니다(직접 변경하지 마세요). More... | |
static void | RemovePlayerCustomProperties (string[] customPropertiesToDelete) |
"this" 플레이어의 커스텀 프로퍼티를 지역적으로 제거 합니다. 중요: 변경사항이 동기화 되지 않습니다! 룸을 전환 할 때 유용 합니다. More... | |
static bool | RaiseEvent (byte eventCode, object eventContent, bool sendReliable, RaiseEventOptions options) |
룸에서 커스터마이징된 이벤트들을 전송 합니다. 이벤트들은 최소 EventCode(0..199)로 구성되어 있어야 하며 내용을 갖고 있을 수 있습니다. More... | |
static int | AllocateViewID () |
현재/로컬 플레이어의 유효한 viewID를 할당 합니다. More... | |
static int | AllocateSceneViewID () |
신 객체들의 유효한 viewID 를 마스터 클라이언트가 할당 하도록 합니다. More... | |
static void | UnAllocateViewID (int viewID) |
(수동으로 인스턴스 생성된)viewID 를 등록해제 하고 네트워크 객체들을 없애 버립니다. More... | |
static GameObject | Instantiate (string prefabName, Vector3 position, Quaternion rotation, int group) |
네트워크 상에서 prefab 의 인스턴스를 생성 합니다. 프리팹은 루트의 "Resources" 폴더에 있어야 합니다. More... | |
static GameObject | Instantiate (string prefabName, Vector3 position, Quaternion rotation, int group, object[] data) |
네트워크 상에서 prefab 의 인스턴스를 생성 합니다. 프리팹은 루트의 "Resources" 폴더에 있어야 합니다. More... | |
static GameObject | InstantiateSceneObject (string prefabName, Vector3 position, Quaternion rotation, int group, object[] data) |
네트워크를 통하여 씬이 소유한 프리팹 인스턴스를 생성 합니다. 마스터 클라이언트가 PhotonView 들을 제어 합니다. 이 프리팹은 루트의 "Resources" 폴더에 있어야 합니다. More... | |
static int | GetPing () |
Photon 서버로의 현재 라운드 트립. More... | |
static void | FetchServerTimestamp () |
서버 타임 스탬프를 갱신 합니다 (오퍼레이션 동기화, 라운드트립을 가져 옵니다). More... | |
static void | SendOutgoingCommands () |
즉시 RPC 전송과 방금 호출된 인스턴스 생성에 사용 할 수 있으므로 다른 플레이어들과 맞추어 진행 할 수 있습니다. More... | |
static bool | CloseConnection (PhotonPlayer kickPlayer) |
클라이언트에게 접속 해제를 요청 합니다.(KICK). 마스터 클라이언트만 이것을 수행 할 수 있습니다. More... | |
static bool | SetMasterClient (PhotonPlayer masterClientPlayer) |
현재 룸의 마스터 클라이언트를 다른 플레이어로 지정해 달라고 서버에게 요청 합니다. More... | |
static void | Destroy (PhotonView targetView) |
PhotonView 가 static 또는 이 클라이언트의 제어하에 있지 않으면 PhotonView와 연관된 게임오브젝트를 네트워크에서 제거 합니다. More... | |
static void | Destroy (GameObject targetGo) |
static 이 아니거나 이 클라이언트의 통제하에 있지 않은 게임오브젝트 네트워크-제거. More... | |
static void | DestroyPlayerObjects (PhotonPlayer targetPlayer) |
모든 게임오브젝트들, PhotonView와 targetPlayer의 RPC들의 네트워크-제거. 로컬 플레이어("자기자신"만) 또는 마스터 클라이언트 (누구나) 만 호출 될 수 있습니다. More... | |
static void | DestroyPlayerObjects (int targetPlayerId) |
모든 게임오브젝트, PhotonView와 이 플레이어(ID를 통해)의 RPC 들을 네트워크-제거. 로컬 플레이어("자기자신"만) 또는 마스터 클라이언트 (누구나) 만 호출 될 수 있습니다. More... | |
static void | DestroyAll () |
룸 안의 모든 게임오브젝트, PhotonView와 RPC들의 네트워크-제거. 서버로 부터 버퍼화된 모든 것을 제거 합니다. 마스터 클라이언트에 의해서만 호출 될 수 있습니다(누구에게나) More... | |
static void | RemoveRPCs (PhotonPlayer targetPlayer) |
targetPlayer부터 전송된 서버의 모든 버퍼된 것을 제거 합니다. 로컬 플레이어("자신"만) 또는 마스터 클라이언트(모두에게)에게만 호출 됩니다. More... | |
static void | RemoveRPCs (PhotonView targetPhotonView) |
targetPhotonView 를 통하여 전송된 모든 버퍼된 RPC 가 서버로 부터 제거 됩니다. 마스터 클라이언트와 targetPhotonView 의 소유자가 호출 할 수 있습니다. More... | |
static void | RemoveRPCsInGroup (int targetGroup) |
마스터 클라이언트이거나 개별 PhotonView 를 제어 한다면 targetGroup 으로 전송된 모든 버퍼된 RPC 가 서버로 부터 제거 됩니다. More... | |
static void | CacheSendMonoMessageTargets (Type type) |
Component 타입을 가지고 있는 현재 존재하는 게임오브젝트들의 SendMonoMessageTargets 를 발생 시킵니다. More... | |
static HashSet< GameObject > | FindGameObjectsWithComponent (Type type) |
지정된 타입의 컴포넌트를 가지고 있는 게임오브젝트를 찾습니다 (FindObjectsOfType 를 사용 함). More... | |
static void | SetReceivingEnabled (int group, bool enabled) |
주어진 그룹의 수신 Enable/disable 설정 (PhotonView 에 적용) More... | |
static void | SetReceivingEnabled (int[] enableGroups, int[] disableGroups) |
주어진 그룹에 수신 Enable/disable 설정 (PhotonView에 적용) More... | |
static void | SetSendingEnabled (int group, bool enabled) |
주어진 그룹으로 전송 Enable/disable 설정 (PhotonView 에 적용) More... | |
static void | SetSendingEnabled (int[] enableGroups, int[] disableGroups) |
주어진 그룹에 전송 Enable/disable 설정 (PhotonView 에 적용) More... | |
static void | SetLevelPrefix (short prefix) |
나중에 인스턴스 생성할 PhtonView 의 레벨 프리픽스를 설정. 하나만 필요 하다면 설정 하지 마세요! More... | |
static void | LoadLevel (int levelNumber) |
메시지 큐를 잠시 멈추기 위하여 로딩 레벨을 Wrap 합니다. 선택적으로 룸 안에서 로드된 레벨과 동기화 합니다. More... | |
static void | LoadLevel (string levelName) |
네트워크 메시지 큐를 잠시 멈추기 위하여 레벨 로딩을 Wrap 합니다. 선택적으로 룸 안의 로드된 레벨과 동기화 합니다. More... | |
static bool | WebRpc (string name, object parameters) |
이 오퍼레이션은 Photon 이 주어진 파라미터를 통해 커스텀 웹 서비스를 이름(path)으로 호출 하도록 하게 합니다. More... | |
Public Attributes | |
const string | versionPUN = "1.81" |
PUN 의 버전 번호. 서로 클라이언트 버전을 분리 하기 위해 GameVersion 에서도 사용됩니다. More... | |
Static Public Attributes | |
static readonly int | MAX_VIEW_IDS = 1000 |
플레이어 (또는 씬)당 지정된 PhotonView 의 최대 개수. 일반 문서 "제약사항" 주제에서 이 제한에 대한 증가 방법을 확인 해 보세요. More... | |
static ServerSettings | PhotonServerSettings = (ServerSettings)Resources.Load(PhotonNetwork.serverSettingsAssetFile, typeof(ServerSettings)) |
시리얼라이즈된 서버 설정, ConnectUsingSettings에서 사용하고 설정 마법사에 의해서 작성. More... | |
static bool | InstantiateInRoomOnly = true |
true 이면, Instantiate 메소드는 룸에 있는지 체크 하여 룸에 있지 않으면 실패 하게 됩니다. More... | |
static PhotonLogLevel | logLevel = PhotonLogLevel.ErrorsOnly |
네트워크 로그 레벨. PUN 에서 발생한 로그를 제어 합니다. More... | |
static float | precisionForVectorSynchronization = 0.000099f |
PhotonView의 OnSerialize/ObservingComponent 로 전송하기전에 Vector2 또는 Vector3 (예, transforms rotation) 의 최소 차이가 변경되어야 합니다. More... | |
static float | precisionForQuaternionSynchronization = 1.0f |
PhotonView의 OnSerialize/ObservingComponent 를 통해 전송 전에 변경이 필요한 최소 회전 각도 입니다. More... | |
static float | precisionForFloatSynchronization = 0.01f |
PhotonView의 OnSerialize/ObservingComponent 를 통해 전송하기전에 float 간 최소 차이 값 입니다. More... | |
static bool | UseRpcMonoBehaviourCache |
사용하도록 설정되면 비용이 많이 드는 GetComponents<MonoBehaviour>() 호출을 피하면서 MonoBehaviour는 RPC 가 캐시됩니다. More... | |
static bool | UsePrefabCache = true |
true 일 때 메모리 내에 게임 오브젝트를 보존 하기 위하여 Instantiate는 PhotonNetwork.PrefabCache를 사용 합니다.(동일한 프리팹의 인스턴스생성 개선). More... | |
static Dictionary< string, GameObject > | PrefabCache = new Dictionary<string, GameObject>() |
빈번히 인스턴스 생성이 되는 게임오브젝트의 레퍼런스를 보관합니다.(리소스 로딩 대신 메모리 부족). More... | |
static HashSet< GameObject > | SendMonoMessageTargets |
null 이 아니면 이것은 (전용) 게임 오브젝트들의 목록으로 PUN SendMonoMessage() 에 의해 호출 됩니다. More... | |
static Type | SendMonoMessageTargetType = typeof(MonoBehaviour) |
어떤 클래스에서 PUN 콜백 구현이 있는지를 정의 합니다. More... | |
static bool | StartRpcsAsCoroutine = true |
성능이슈가 될 수 있는 동시 실행 루틴으로써의 RPC 시작을 스킵하는데 사용할 수 있습니다. More... | |
static int | maxConnections |
Unity Networking 에서만 사용됩니다. PUN 에서는 PhotonNetwork.CreateRoom 에서 플레이어 수를 설정 합니다. More... | |
static float | BackgroundTimeout = 60.0f |
유니티의 OnApplicationPause(true) 호출 이후에 연결을 유지 하기 위한 "fallback thread" 수행 시간을 정의 합니다. More... | |
static EventCallback | OnEventCall |
"+=" 연산자를 사용하여 RaiseEvent 처리 메소드를 등록 합니다. More... | |
Properties | |
static string | gameVersion [get, set] |
이 빌드에 대한 버전 문자열. 호환될 수 없는 클라이언트 분리를 위해 사용 될 수 있습니다. 접속시에 전송 됩니다. More... | |
static string | ServerAddress [get] |
현재 사용되고 있는 서버 주소(마스터 또는 게임서버에 상관없음). More... | |
static bool | connected [get] |
Photon 이 초기 연결 전 까지는 False. 오프라인 모드에서는 True, 서버에 접속하고 있는 동안 서버를 변경하는 동안에도 True. More... | |
static bool | connecting [get] |
ConnectUsingSettings (또는 유사한 메소드)를 호출하여 Photon 저수준 연결이 성립되기 전까지 True. More... | |
static bool | connectedAndReady [get] |
connected 의 정제된 버전으로 서버로의 연결이 Join,leave 와 같은 오퍼레이션을 수용할 준비가 된 경우에만 true 입니다. More... | |
static ConnectionState | connectionState [get] |
간단한 연결 상태 More... | |
static ClientState | connectionStateDetailed [get] |
상세한 연결 상태 (PUN을 모르는, 따라서 서버 전환시에 "disconnected" 로 될 수 있습니다). More... | |
static ServerConnection | Server [get] |
이 클라이언트가 현재 접속해 있거나 접속중인 서버(type) More... | |
static AuthenticationValues | AuthValues [get, set] |
연결시에 사용되는 사용자의 인증 값. More... | |
static Room | room [get] |
현재 참여하고 있는 룸을 얻습니다. 아무방에도 참여하고 있지 않으면 null 을 받게 됩니다. More... | |
static PhotonPlayer | player [get] |
로컬 PhotonPlayer. 항상 사용할 수 있고 이 플레이어를 나타냅니다. 룸에 입장하기전에 커스텀 프로퍼티들이 설정될 수 있으며 동기화도 될 것 입니다. More... | |
static PhotonPlayer | masterClient [get] |
현재 룸의 마스터 클라이언트, 룸 외부이면 null 입니다. More... | |
static string | playerName [get, set] |
룸에 입장한 모든 플레이어들과 플레이어의 별명을 동기화 하기 위해 설정 합니다.PhotonPlayer.name 이 설정됩니다. More... | |
static PhotonPlayer[] | playerList [get] |
현재 룸에 있는 플레이어들의 목록, 로컬 플레이어도 포함되어 있음 More... | |
static PhotonPlayer[] | otherPlayers [get] |
로컬 플레이어를 제외한 현재 룸에 있는 플레이어들의 목록 입니다. More... | |
static List< FriendInfo > | Friends [get, set] |
읽기 전용 친구 목록, 온라인 상태와 참여 하고있는 룸에 대한 정보가 있으며 FindFriends 호출에 의해 초기화 되기 전 까지는 null 입니다. More... | |
static int | FriendsListAge [get] |
친구리스트 정보 시간(1/1000 초 단위). 친구 리스트가 패치되기 전까지 0 입니다. More... | |
static IPunPrefabPool | PrefabPool [get, set] |
인스턴스화된 객체 인스턴스들을 보관하여 재사용 할 수 있는 객체 Pool 입니다. 유니티의 디폴트 Instantiate 와 Destroy 메소드들을 대체 하였습니다. More... | |
static bool | offlineMode [get, set] |
멀티플레이어 코드를 싱글플레이어 게임 모드에 재사용하기 위해서 오프라인 모드가 설정 될 수 있습니다. on 으로 되어있으면 PhotonNetwork 는 어떤 연결도 생성하지 않고 오버헤드가 거의 없게 됩니다. RPC 와 PhotonNetwork.Instantiate 재사용에서 가장 유용 합니다. More... | |
static bool | automaticallySyncScene [get, set] |
마스터 클라이언트와 동일한 레벨로 룸 안의 모든 클라이언트들이 로드 해야하는지를 정의 합니다(PhotonNetwork.LoadLevel 를 사용한 경우) More... | |
static bool | autoCleanUpPlayerObjects [get, set] |
룸에 대한 설정으로 룸 생성자가 룸에서 나갔을 때 네트워크-인스턴스화된 게임오브젝트를 제거 할 것인지의 여부를 정의 합니다. More... | |
static bool | autoJoinLobby [get, set] |
PhotonServerSettings 에셋 내에서 설정합니다. 마스터 서버에 접속 했을 때 "로비"에 참여 해야 하는지 정의 합니다. More... | |
static bool | EnableLobbyStatistics [get, set] |
PhotonServerSettings 에셋 내에서 설정합니다. 마스터 서버에서 활성화 로비들의 목록을 얻을 수 있습니다. More... | |
static List< TypedLobbyInfo > | LobbyStatistics [get] |
켜져 있으면 마스터 서버는 이 어플리케이션의 활성 로비들에 대한 정보를 제공해 줍니다. More... | |
static bool | insideLobby [get] |
이 클라이언트가 로비내에 있는 동안 true 입니다. More... | |
static TypedLobby | lobby [get, set] |
PUN이 로비에 참여 하거나 게임을 생성할 때 로비가 사용될 것 입니다. More... | |
static int | sendRate [get, set] |
초당 몇번이나 PhotonNetwork 가 패키지를 전송 해야 하는지 정의 합니다. 이 값을 변경 하면 'sendRateOnSerialize' 도 변경 해야 하는 것을 잊지 마세요. More... | |
static int | sendRateOnSerialize [get, set] |
PhotonViews 에서 초당 몇 번이나 OnPhotonSerialize 이 호출되어야 하는지를 정의 합니다. More... | |
static bool | isMessageQueueRunning [get, set] |
수신 이벤트(RPC, 인스턴스 생성과 수신되는 모든 것)를 처리하는 것을 잠시 멈추는데 사용 될 수 있습니다. More... | |
static int | unreliableCommandsLimit [get, set] |
채널당 비신뢰 커맨드 제한을 위해서 처리당 한번 사용됨( 정지 후에 많은 채널들이 여전히 수많은 비신뢰 커맨드들의 원인일 수 있습니다) More... | |
static double | time [get] |
Photon 네트워크 시간, 서버와 동기화 됨 More... | |
static int | ServerTimestamp [get] |
현재 서버의 1/1000 초 타임스탬프 More... | |
static bool | isMasterClient [get] |
마스터 클라이언트인가요? More... | |
static bool | inRoom [get] |
룸 안에 있을 때 true 입니다 (connectionStateDetailed == PeerState.Joined). More... | |
static bool | isNonMasterClientInRoom [get] |
룸에 있으면서 룸의 마스터 클라이언트가 아니면 true 입니다. More... | |
static int | countOfPlayersOnMaster [get] |
룸을 찾고 있는 현재 플레이어의 수 (5초 간격으로 마스터서버에서 사용할 수 있음). More... | |
static int | countOfPlayersInRooms [get] |
룸에서 앱으로 게임 하고 있는 사용자의 수 (마스터 서버가 5초마다 전송함). 현재 참여하고 있는 룸의 플레이어 수를 얻으려면 playerList.Count 를 사용 합니다! More... | |
static int | countOfPlayers [get] |
현재 이 어플리케이션을 사용하고 있는 플레이어 수 (5 초 간격으로 마스터서버에서 이용 가능). More... | |
static int | countOfRooms [get] |
현재 사용중인 룸의 개수 (5초 간격으로 마스터 서버에서 사용 가능). More... | |
static bool | NetworkStatisticsEnabled [get, set] |
이 클라이언트 트래픽의 통계 수집 여부를 결정 More... | |
static int | ResentReliableCommands [get] |
반복된 명령의 개수 (ACK 수신 전에 로컬 반복-타이밍 때문). More... | |
static bool | CrcCheckEnabled [get, set] |
Crc check는 깨진 데이터그램을 감지하고 이슈를 피하기 위해 유용하게 사용 할 수 있습니다. 연결되지 않았을 때 enable 될 수 있습니다. More... | |
static int | PacketLossByCrcCheck [get] |
CrcCheckEnabled 되어 있으면 유효한 CRC checksum 이 없고 거부된 수신 패키지들의 건수를 셉니다. More... | |
static int | MaxResendsBeforeDisconnect [get, set] |
연결해제가 트리거 되는 ACK 를 받기 전 신뢰 메시지가 재전송 할 수 있는 횟수를 정의 합니다. 디폴트:5. More... | |
static int | QuickResends [get, set] |
네트워크 손실의 경우에 신뢰 메시지들은 최대 3번 반복 될 수 있습니다. More... | |
PhotonNetwork 플러그인을 사용하기 위한 메인 클래스. 이 클래스는 static 입니다.
|
static |
신 객체들의 유효한 viewID 를 마스터 클라이언트가 할당 하도록 합니다.
|
static |
현재/로컬 플레이어의 유효한 viewID를 할당 합니다.
|
static |
Component 타입을 가지고 있는 현재 존재하는 게임오브젝트들의 SendMonoMessageTargets 를 발생 시킵니다.
type | null 이면, 컴포넌트-타입의 SendMonoMessageTargets 를 사용할 것 입니다 (디폴트로 MonoBehaviour). |
|
static |
클라이언트에게 접속 해제를 요청 합니다.(KICK). 마스터 클라이언트만 이것을 수행 할 수 있습니다.
타겟 플레이어만 이 메시지를 수신 합니다. 플레이어는 자동으로 접속 해제되며 다른 플레이어들은 이것을 감지 하게 될 것 입니다.
kickPlayer | kick 할 PhotonPlayer. |
|
static |
가장 낮은 Ping 을 가진 Photon 클라우드 지역으로 접속 합니다 (유니티의 Ping 을 지원하는 플랫폼에서만).
PlayerPrefs 에 모든 클라우드 서버로 핑 결과가 저장될 것 입니다. 처음 이 메소드를 호출하면 +- 2초 정도 소요 됩니다. 핑 결과는 PhotonNetwork.OverrideBestCloudServer(..) 가 우선 될 수 있습니다. 최초 호출 할 때에는 2초 정도 소요될 수 있습니다. 모든 클라우드 서버들을 Ping 하여 최고의 지역을 찾습니다.
PUN 설정 위자드는 설정 파일에 appID 를 저장하고 서버 주소/포트를 적용 합니다. Photon 클라우드에 접속 하기 위해서, 유효한 AppId 와 설정파일이 반드시 있어야 합니다 (Photon 클라우드 대시보드에서 찾을 수 있습니다). https://www.photonengine.com/ko-kr/dashboard
Photon 클라우드 접속 실패 원인:
연결 제한에 대해서는 다음 링크에서 알아 보세요: http://doc.exitgames.com/ko-kr/pun
gameVersion | 클라이언트의 버전 번호. 게임 버전에 의해 사용자가 분리 됩니다(버전간의 충돌을 방지 해 줍니다). |
|
static |
주소,포트,appID 와 게임(클라이언트) 버전을 통해 Photon 마스터 서버에 접속 합니다.
Photon 클라우드에 접속하기 위해서는 유효한 AppId 가 설정파일에 반드시 있어야 합니다(Photon 클라우드 대시보드에 보여진 AppID). https://www.photonengine.com/dashboard
Photon 클라우드 접속 실패 원인:
연결 제한에 대해서는 다음 링크에서 알아 보세요: http://doc.exitgames.com/ko-kr/pun
|
static |
선택한 Photon 클라우드 지역으로 접속 합니다.
|
static |
에디터에서 설정된 Photon 에 연결 (PhotonServerSettings 파일에 저장).
오프라인 모드에서는 사용 할 수 없습니다 (모든 인스턴스화된 게임오브젝트들을 없애지 않을 것 입니다).
PUN Wizard 에 의해서 서버 환경 설정이 생성되고 AppId 와 Photon 클라우드 게임이 지역 정보를 포함하고 있으며 Photon 호스트를 했다면 서버 주소가 들어 있습니다. 이러한 설정들은 빈번히 변경되지 않습니다.
설정 파일을 무시하고 어디에서던지 접속하려면 PhotonNetwork.ConnectToMaster 를 호출 하세요.
Photon 클라우드에 접속 하기 위해서는 유효한 AppId 가 설정 파일내에 있어야 합니다(Photon 클라우드 대시보드에 보였던). https://www.photonengine.com/dashboard
Photon 클라우드 접속에서 실패하게 되는 원인:
연결 제한에 대해서는 다음 링크에서 알아 보세요: http://doc.exitgames.com/ko-kr/pun
gameVersion | 이 클라이언트의 버전 번호. 게임 버전에 의해 사용자들이 분리 됩니다(버전간의 충돌을 방지 해 줍니다). |
|
static |
주어진 이름으로 룸을 생성하지만 이미 룸 이름이 있는 경우에는 실패 합니다. roomName 을 null 로 하면 무작위로 룸 이름을 생성 합니다.
유일한 이름 생성이 필요 없으면 name 에 null 또는 "" 를 전달하여 서버가 알아서 roomName을 부여하도록 합니다.(GUID 문자열로)
생성된 룸은 자동적으로 현재 로비에 위치하고 있거나 참여할 로비를 명시하지 않았으면 디폴트-로비에 있게 됩니다.
마스터 서버에서만 호출 하세요. 내부적으로 마스터는 서버 주소와 같이 응답할 것입니다(그리고 필요시 roomName 과 같이). 둘 다 지정된 게임서버와 roomName으로 전환하기 위해서 내부적으로 사용합니다.
PhotonNetwork.autoCleanUpPlayerObjects 는 룸의 AutoCleanUp 프로퍼티로 되고 이 룸에 참여하는 모든 클라이언트에의해 사용 됩니다.
roomName | 생성할 유일한 룸의 이름 |
|
static |
룸을 생성하고 만약 기존의 룸이 있으면 실패 합니다. 마스터 서버에서만 호출 될 수 있습니다.
성공하면 OnCreatedRoom 과 OnJoinedRoom 콜백이 호출 됩니다(OnJoinedRoom 은 첫 번째 참가자이기 때문에 발생합니다). 만약 룸을 생성할 수 없으면 (이미 존재하고 있기 때문에), OnPhotonCreateRoomFailed 이 호출 됩니다.
유일한 이름으로 룸 생성을 원하지 않으면 null 또는 "" 을 전달하여 서버가 roomName을 할당합니다(GUID 문자열로).
룸은 어떤 로비에서도 생성할 수 있습니다. 로비는 룸 생성 전에 존재할 필요는 없습니다(로비는 필요에 따라 자동 생성 됩니다) 로비는 서버측에서 룸을 분리하는데 유용하게 사용할 수 있습니다. 이를 통해 로비에 룸 목록을 관리할 수 있을 정도로 짧게 유지 시킬 수 있습니다. typedLobby 파라미터를 설정 했다면 룸은 그 로비에 생성 될 것 입니다. typedLobby 를 설정하지 않았다면 룸은 자동으로 현재 활성화된 로비(있다면) 또는 디폴트 로비에 위치하게 될 것 입니다.
마스터 서버에서만 호출 하세요. 내부적으로 마스터 서버는 서버-주소(그리고 필요시 roomName)로 응답할 것 입니다. 둘 다 지정된 게임서버와 roomName으로 전환하기 위해서 내부적으로 사용합니다.
PhotonNetwork.autoCleanUpPlayerObjects 는 룸의 AutoCleanUp 프로퍼티로 되고 이 룸에 참여하는 모든 클라이언트에의해 사용 됩니다.
roomName | 생성할 유일한 룸 이름. null 또는 "" 를 전달하면 서버가 이름을 생성 해 줍니다. |
roomOptions | maxPlayers, 초기 룸 프로퍼티 등과 같은 일반적인 룸의 옵션.RoomOptions 타입 참조. |
typedLobby | null 이면, 룸은 현재 사용되고 있는 로비에서 자동으로 생성됩니다. (디폴트 값으로 명시적으로 로비에 참여하지 않는 한). |
|
static |
룸을 생성하고 이미 존재하고 있다면 실패 합니다. 마스터 서버에서만 호출 될 수 있습니다.
성공 했을 때 OnCreatedRoom 과 OnJoinedRoom 콜백을 호출 합니다(OnJoinedRoom 은 첫 번째 플레이어인 경우에 호출 됩니다). 룸이 생성 될 수 없으면(이미 룸이 존재하기 때문에), OnPhotonCreateRoomFailed 이 호출 됩니다.
유일한 이름으로 룸을 생성할 필요가 없으면 이름을 null 또는 "" 로 전달하면 서버가 roomName을 지정 할 것 입니다(GUID 문자열로).
룸은 어떤 로비에서도 생성할 수 있습니다. 로비는 룸 생성 전에 존재할 필요는 없습니다(로비는 필요에 따라 자동 생성 됩니다) 로비는 서버측에서 룸을 분리하는데 유용하게 사용할 수 있습니다. 이를 통해 로비에 룸 목록을 관리할 수 있을 정도로 짧게 유지 시킬 수 있습니다. typedLobby 파라미터를 설정 했다면 룸은 그 로비에 생성 될 것 입니다. typedLobby 를 설정하지 않았다면 룸은 자동으로 현재 활성화된 로비(있다면) 또는 디폴트 로비에 위치하게 될 것 입니다.
마스터 서버에서만 호출 하세요. 내부적으로 마스터 서버는 서버-주소(그리고 필요시 roomName)로 응답할 것 입니다. 둘 다 지정된 게임서버와 roomName으로 전환하기 위해서 내부적으로 사용합니다.
PhotonNetwork.autoCleanUpPlayerObjects 는 룸의 AutoCleanUp 프로퍼티로 되고 이 룸에 참여하는 모든 클라이언트에의해 사용 됩니다.
expectedUsers 배열을 정의하여 다른 플레이어가 참여할 수 없도록 이 플레이어들의 슬롯을 예약 할 수 있습니다. Photon 에서 이에 상응하는 기능은 "슬롯 예약" 이라고 하며 도큐먼트 페이지에서 확인하실 수 있습니다.
roomName | 생성할 유일한 룸 이름. null 또는 "" 를 전달하면 서버가 이름을 생성 해 줍니다. |
roomOptions | maxPlayers, 초기 룸 프로퍼티 등과 같은 일반적인 룸의 옵션.RoomOptions 타입 참조. |
typedLobby | null 이면 , 룸은 현재 사용되고 있는 로비에서 자동으로 생성됩니다. (디폴트 값으로 명시적으로 로비에 참여하지 않는 한). |
expectedUsers | UserId의 선택적인 사용자 리스트로 게임에 참여가 예상되고 슬롯을 이 플레이어들에게 부여 함. |
|
static |
PhotonView 가 static 또는 이 클라이언트의 제어하에 있지 않으면 PhotonView와 연관된 게임오브젝트를 네트워크에서 제거 합니다.
룸에 있을 동안 제거되는 네트워크 오브젝트는 다음과 같습니다:
일반적으로 룸을 떠날 때 게임오브젝트들은 자동으로 제거 됩니다. 룸에 있지 않을 동안 게임오브젝트를 제거해야 한다면 Destroy 는 로컬에서만 수행 됩니다.
네트워크 객체들을 제거 하는 것은 PhotonNetwork.Instantiate() 에 의해서 생성된 것에만 동작 합니다. 씬에서 로드된 객체들은 PhotonView 컴포넌트를 가지고 있어도 무시됩니다.
게임 오브젝트는 이 클라이언트의 제어 하에 있어야 합니다:
|
static |
static 이 아니거나 이 클라이언트의 통제하에 있지 않은 게임오브젝트 네트워크-제거.
네트워크 게임오브젝트를 제거하면 다음도 포함됩니다:
일반적으로 룸을 떠날 때 게임오브젝트들은 자동으로 제거 됩니다. 룸에 있지 않을 동안 게임 오브젝트를 제거해야 한다면 Destroy 는 로컬에서만 수행 됩니다.
네트워크 객체들을 제거 하는 것은 PhotonNetwork.Instantiate() 에 의해서 생성된 것에만 동작 합니다. 씬에서 로드된 객체들은 PhotonView 컴포넌트를 가지고 있어도 무시됩니다.
게임오브젝트는 이 클라이언트의 제어하에 있어야 합니다:
|
static |
룸 안의 모든 게임오브젝트, PhotonView와 RPC들의 네트워크-제거. 서버로 부터 버퍼화된 모든 것을 제거 합니다. 마스터 클라이언트에 의해서만 호출 될 수 있습니다(누구에게나)
마스터 클라이언트만 호출 할 수 있습니다 (누구나). Destroy 메소드와는 다르게 이 메소드는 서버의 룸 버퍼에 있는 모든 것을 제거 합니다. 만약 게임 버퍼가 Instantiate 와 RCP 호출 뒤에 있다면 서버로 부터 제거 될 것 입니다.
제거는 다음 사항이 포함됩니다:
네트워크 객체들을 제거 하는 것은 PhotonNetwork.Instantiate() 에 의해서 생성된 것에만 동작 합니다. 씬에서 로드된 객체들은 PhotonView 컴포넌트를 가지고 있어도 무시됩니다.
|
static |
모든 게임오브젝트들, PhotonView와 targetPlayer의 RPC들의 네트워크-제거. 로컬 플레이어("자기자신"만) 또는 마스터 클라이언트 (누구나) 만 호출 될 수 있습니다.
네트워크 게임오브젝트를 제거하면 다음도 포함됩니다:
네트워크 객체들을 제거 하는 것은 PhotonNetwork.Instantiate() 에 의해서 생성된 것에만 동작 합니다. 씬에서 로드된 객체들은 PhotonView 컴포넌트를 가지고 있어도 무시됩니다.
|
static |
모든 게임오브젝트, PhotonView와 이 플레이어(ID를 통해)의 RPC 들을 네트워크-제거. 로컬 플레이어("자기자신"만) 또는 마스터 클라이언트 (누구나) 만 호출 될 수 있습니다.
네트워크 게임오브젝트를 제거하면 다음도 포함됩니다:
네트워크 객체들을 제거 하는 것은 PhotonNetwork.Instantiate() 에 의해서 생성 된 것에만 동작 합니다. 씬에서 로드된 객체들은 PhotonView 컴포넌트를 가지고 있어도 무시됩니다.
|
static |
이 클라이언트를 Photon 서버에서 접속 해제 합니다. 룸을 나가고 완료시 OnDisconnectedFromPhoton 이 호출 됩니다.
접속 해제 되었을 때 클라이언트는 "disconnecting" 메시지를 서버에게 전송 할 것 입니다. 이렇게 하면 동일한 룸에 있는 플레이어들에게 나가기/연결해제 속도를 올려주게 됩니다.(그렇지 않으면 서버가 이 클라이언트 연결이 타임아웃 될 것 입니다). 오프라인 모드에서 사용할 때 , OnDisconnectedFromPhoton 에서 상태-변화와 이벤트-호출은 즉시 일어납니다. 오프라인 모드가 또한 false 로 설정 됩니다. 연결해제 되자마자 클라이언트는 다시 접속 할 수 있습니다. ConnectUsingSettings 를 사용 하세요.
delegate void PhotonNetwork.EventCallback | ( | byte | eventCode, |
object | content, | ||
int | senderId | ||
) |
OnEventCall 에서 사용할 수 있는 delegate 를 정의 합니다.
eventCode < 200 인 모든 것은 delegate 로 포워딩 됩니다.
eventCode | 수신된 이벤트에 지정된 코드. |
content | 전송자가 이벤트에 넣은 내용 |
senderId | 이벤트를 전송한 플레이어의 ID. "룸"이 전송했으면 0 이 될 수 있습니다. |
|
static |
서버 타임 스탬프를 갱신 합니다 (오퍼레이션 동기화, 라운드트립을 가져 옵니다).
연결이 좋지 않은 경우 타임스탬프를 사용할 수 없거나 부정확한 경우에 유용합니다.
|
static |
친구들의 목록에 대한 룸과 온라인 상태를 요청 하고 결과를 PhotonNetwork.Friends 에 저장 합니다.
선택된 사용자들의 목록으로 룸을 찾기 위한 것으로 마스터 서버에서만 동작 합니다.
결과는 PhotonNetwork.Friends 에 저장 됩니다. OpFindFriends 를 사용하여 리스트가 초기화 됩니다(사용전에는 null 입니다). 리스트를 갱신 하려면 FindFriends 를 다시 호출 하세요(5 초 또는 10, 20초).
사용자들은 PhotonNetwork.AuthValues 내의 유일한 userId 를 설정하여 구별 할 수 있습니다. 어떻게 이것이 설정되고 사용하는지에 대해서는 AuthenticationValues 를 참고하시기 바랍니다.
친구들의 목록은 Photon 이 제공하지 않으므로 외부 소스에서 가져와야 합니다.
내부: 서버는 2개의 정보 배열을 포함하여 리턴 해 줍니다 (각 인덱스는 요청된 친구와 일치 합니다): 온라인 상태 ParameterCode.FindFriendsResponseOnlineList = bool[] 룸 이름 ParameterCode.FindFriendsResponseRoomIdList = string[] (빈 문자열은 룸에 없다는 것을 나타냄)
friendsToFind | 친구의 배열 (유일한 playName과 AUthoValues 인지 확인 하세요). |
|
static |
지정된 타입의 컴포넌트를 가지고 있는 게임오브젝트를 찾습니다 (FindObjectsOfType 를 사용 함).
type | 타입은 반드시 Component 이어야 합니다 |
|
static |
SQL-과 같은 "where" 조건절에 매칭되는 게임의 커스텀 목록을 서버에서 얻어 오고 OnReceivedRoomListUpdate 콜백을 트리거합니다.
SqlLobby 타입의 로비에 대해서만 오퍼레이션을 사용할 수 있습니다. 노트: 로비에 참여할 필요는 없습니다. async 요청입니다.
잘 되었으면, OnReceivedRoomListUpdate 가 호출됩니다. GetRoomList() 를 사용하여 접근합니다.
http://doc.photonengine.com/ko-kr/pun/current/manuals-and-demos/matchmaking-and-lobby::sql_lobby_type
typedLobby | 쿼리할 로비. SqlLobby 타입이어야 합니다. |
sqlLobbyFilter | sql 쿼리 문장. |
|
static |
Photon 서버로의 현재 라운드 트립.
|
static |
RoomInfo 배열로 현재 알고 있는 룸들을 얻습니다. 로비에 있는 동안 사용할 수 있으며 갱신됩니다(insideLobby 값을 체크 하세요).
이 리스트는 내부 룸들의 캐시된 복사본 입니다. 따라서 필요시 각 프레임에서 접근 할 수 있습니다. RoomInfo 마다 룸이 가득 차 있는지 playerCount 와 maxPlayers 값을 비교하여 참여 하기 전에 체크 할 수 있습니다.
룸의 이름은 반드시 참여할 때 사용되어야 합니다 (JoinRoom 을 통해서).
폐쇄된 룸들도 로비에 나열 되지만 참여할 수는 없습니다. 어떤 플레이어도 Room.visible 과 Room.open 을 설정하여 매치메이킹에 보여지지 않게 할 수 있으며 폐쇄 할 수 있습니다.
|
static |
유니티 네트워킹과만 호환 되도록 사용. 암호화는 접속시 자동적으로 초기화 됩니다.
|
static |
네트워크 상에서 prefab 의 인스턴스를 생성 합니다. 프리팹은 루트의 "Resources" 폴더에 있어야 합니다.
Resources 폴더에서 프리팹을 사용하는 대신에 수동으로 인스턴스 생성을 하고 PhotonView 를 할당 할 수 있습니다. 문서를 살펴보세요.
prefabName | 인스턴스화 할 프리팹 이름. |
position | 인스턴스에 적용될 Vector3 Position. |
rotation | 인스턴스에 적용될 Rotation Quaternion. |
group | 이 PhotonView 의 그룹. |
|
static |
네트워크 상에서 prefab 의 인스턴스를 생성 합니다. 프리팹은 루트의 "Resources" 폴더에 있어야 합니다.
Resources 폴더에서 프리팹을 사용하는 대신에 수동으로 인스턴스 생성을 하고 PhotonView 를 할당 할 수 있습니다. 문서를 살펴보세요.
prefabName | 인스턴스화 할 프리팹 이름. |
position | 인스턴스에 적용될 Vector3 Position. |
rotation | 인스턴스에 적용될 Rotation Quaternion. |
group | 이 PhotonView 의 그룹. |
data | 선택적인 인스턴스 생성 데이터. PhotonView.instantiationData 에 저장됩니다. |
|
static |
네트워크를 통하여 씬이 소유한 프리팹 인스턴스를 생성 합니다. 마스터 클라이언트가 PhotonView 들을 제어 합니다. 이 프리팹은 루트의 "Resources" 폴더에 있어야 합니다.
마스터 클라이언트 만이 씬 객체 인스턴스를 생성할 수 있습니다. Resources 폴더에서 프리팹을 사용하는 대신에 수동으로 인스턴스 생성을 하고 PhotonView 를 할당 할 수 있습니다. 문서를 살펴보세요.
prefabName | 인스턴스화 할 프리팹 이름. |
position | 인스턴스에 적용될 Vector3 Position. |
rotation | 인스턴스에 적용될 Rotation Quaternion. |
group | 이 PhotonView 의 그룹. |
data | 선택적인 인스턴스 생성 데이터. PhotonView.instantiationData 에 저장됩니다. |
|
static |
마스터 서버에서 사용할 수 있는 룸 리스트를 얻기 위해 로비에 참여 할 수 있습니다.
서버가 룸 목록을 전송하고 갱신 합니다. PhotonNetwork.GetRoomList() 를 통해 캐시된 리스트를 얻을 수 있습니다.
참여하기 전에 룸이 가득 차 있는지 아닌지 체크 해야 합니다. Photon 은 룸을 닫거나 숨기지 않는 한(room.open = false and room.visible = false)
최고의 경우는 여기에 설명된 대로 클라이언트들을 무작위 게임에 참여 하도록 하는 것 입니다. https://doc.photonengine.com/ko-kr/realtime/current/reference/matchmaking-and-lobby
로비에 참여하지 않고 현재 플레이어 수와 룸 개수를 볼 수 있습니다. (하지만 마스터 서버에는 있어야 합니다). countOfPlayers, countOfPlayersOnMaster, countOfPlayersInRooms 와 countOfRooms 를 사용 합니다.
로비안에 룸 갯수를 적게 유지 하기 위해서 하나 이상의 로비를 이용 할 수 있습니다. JoinLobby(TypedLobby lobby) 참조하세요. 새로운 룸을 생성 할 때 현재 사용하고 있는 로비 또는 디폴트 로비에 붙여질 것입니다.
로비내에 없어도 JoinRandomRoom을 사용할 수 있습니다! 로비에 참가 하지 않으려면 연결전에 autoJoinLobby = false 로 설정 하세요. 이 경우에 연결-작업흐름은 완료 되었을 때 OnConnectedToMaster (구현하였다면)를 호출 할 것입니다.
|
static |
마스터 서버에서 사용할 수 있는 룸 리스트를 얻기 위해 로비에 참여 할 수 있습니다.
서버가 룸 목록을 전송하고 갱신 합니다. PhotonNetwork.GetRoomList() 를 통해 캐시된 리스트를 얻을 수 있습니다.
상황에 따라 모든 클라이언트가 로비를 구성 할 수 있습니다. 여러개 로비로 룸을 분리하면 로비의 룸 목록을 짧게 유지 할 수 있습니다. 반면에 로비를 너무 많이 생성하면 매치메이킹이 힘들 수도 있습니다.
최고의 경우는 로비 숫자를 제한하여 생성 하는 것 입니다. 예를 들어 게임모드별로 로비를 생성 합니다. 언덕의 왕에는 "koth"로 모두에게 프리는 "ffa" 로 말이죠.
지금 시점에서는 로비 목록이 없습니다.
Sql-타입 로비들은 무작위 매치메이킹에 대한 다른 필터링 모델을 제공 합니다. 이 사항은 스킬 기반의 게임에 적합 할 것 입니다. SQL-로비의 필터할 수 있는 프로퍼티에 대한 명명법을 따라야 합니다! 아래에 링크되어있는 매치메이킹 문서에 두개 모두 설명 되어 있습니다.
여기에 설명되어 있는 것과 같이 클라이언트들이 무작위로 게임에 참여 하는 것이 최선 입니다: https://doc.photonengine.com/en-us/pun/v2/lobby-and-matchmaking/matchmaking-and-lobby
룸 별로 참여하기전에 가득 차 있는지 아닌지 체크 해야 합니다. Photon 은 룸을 닫거나 숨기지 않는 한(room.open = false and room.visible = false) 가득 차 있는 룸도 나열 할 것 입니다.
로비에 참여하지 않고 현재 플레이어 수와 룸 개수를 볼 수 있습니다. (하지만 마스터 서버에는 있어야 합니다). countOfPlayers, countOfPlayersOnMaster, countOfPlayersInRooms 와 countOfRooms 를 사용 합니다.
새로운 룸을 생성 할 때 룸은 현재 위치하고 있는 로비 또는 디폴트 로비로 붙여 질 것 입니다.
로비내에 없어도 JoinRandomRoom을 사용할 수 있습니다! 로비에 참가 하지 않으려면 연결전에 autoJoinLobby = false 로 설정 하세요. 이 경우에 연결-작업흐름은 완료 되었을 때 OnConnectedToMaster (구현하였다면)를 호출 할 것입니다.
typedLobby | Typed 로비 참여(이름과 타입이 있어야 합니다). |
|
static |
지정된 이름의 룸에 참여하거나 생성 합니다 - 누군가가 룸을 이미 생성했는지에 대해 전혀 신경 쓸 필요가 없습니다.
플레이어들의 그룹을 동일한 룸에 입장 시키기 위한 것을 쉽게 처리 해 줍니다. 그룹이 roomName 을 교환하기만 하면 어떤 플레이어라도 JoinOrCreateRoom 를 호출 할 수 있고 누가 룸을 생성했고 참여 한 것인지에 대한 것은 문제가 되지 않습니다.
roomOptions 과 typedLobby 파라미터는 클라이언트가 룸을 생성 할 경우에만 사용 됩니다. OnCreatedRoom 콜백을 받았으면 이 클라이언트가 룸을 생성 한 클라이언트라는 것을 알 수 있습니다(OnJoinedRoom 도 나중에 호출 됩니다).
roomName | 참여할 유일한 룸 이름. |
roomOptions | maxPlayers, 초기 룸 프로퍼티 등과 같은 일반적인 룸의 옵션. RoomOptions 타입 참조. |
typedLobby | null 이면, 룸은 현재 사용되고 있는 로비에서 자동으로 생성됩니다. (디폴트 값으로 명시적으로 로비에 참여하지 않는 한). |
|
static |
지정된 이름의 룸에 참여하거나 생성 합니다 - 누군가가 룸을 이미 생성했는지에 대해 전혀 신경 쓸 필요가 없습니다.
플레이어들의 그룹을 동일한 룸에 입장 시키기 위한 것을 쉽게 처리 해 줍니다. 그룹이 roomName 을 교환하기만 하면 어떤 플레이어라도 JoinOrCreateRoom 를 호출 할 수 있고 누가 룸을 생성했고 참여 한 것인지에 대한 것은 문제가 되지 않습니다.
roomOptions 과 typedLobby 파라미터는 클라이언트가 룸을 생성 할 경우에만 사용 됩니다. OnCreatedRoom 콜백을 받았으면 이 클라이언트가 룸을 생성 한 클라이언트라는 것을 알 수 있습니다(OnJoinedRoom 도 나중에 호출 됩니다).
expectedUsers 배열을 정의하여 다른 플레이어가 참여할 수 없도록 이 플레이어들의 슬롯을 예약 할 수 있습니다. Photon 에서 상응하는 기능은 "슬롯 예약" 이라고 하며 문서 페이지에서 찾을 수 있습니다.
roomName | 참여할 유일한 룸 이름. |
roomOptions | maxPlayers, 초기 룸 프로퍼티 등과 같은 일반적인 룸의 옵션.RoomOptions 타입 참조. |
typedLobby | null 이면, 룸은 현재 사용되고 있는 로비에서 자동으로 생성됩니다. (디폴트 값으로 명시적으로 로비에 참여하지 않는 한). |
expectedUsers | UserId의 선택적인 사용자 리스트로 게임에 참여가 예상되고 슬롯을 이 플레이어들에게 부여 함. |
|
static |
현재 사용하고 있는 로비에서 사용할 수 있는 룸에 참여 하고 사용할 수 있는 룸이 없으면 실패 합니다.
룸은 필요에 의해서 생성 되어지는 로비에 생성 될 수 있습니다. 실제 로비에 참여하지 않고 룸에 참가 할 수 있습니다. TypedLobby 파라미터를 가진 JoinRandomRoom 를 오버로드 하여 사용하세요.
이 메소드는 하나의 로비에 붙여진 룸들을 매치할 것 입니다! 로비를 많이 사용하고 있다면 맞는 룸을 찾기 위하여 JoinRandomRoom 메소드를 반복 해야 할 것 입니다. 이 메소드는 현재 활성화된 로비내의 룸을 찾거나 (참여한 로비가 없으면) 디폴트 로비에서 찾습니다.
실패하면 룸을 생성 할 수 있습니다(그리고 이 룸을 다음 사용자가 JoinRandomRoom 에서 사용합니다) 선택적으로, 잠시 후에 다시 시도해 봅니다.
|
static |
커스텀 프로퍼티 조건에 맞는 오픈되어 있는 룸에 참여를 시도 하지만 사용할 수 있는 게 없으면 실패 합니다.
룸은 필요에 의해서 생성되어지는 로비에 생성 될 수 있습니다. 실제 로비에 참여하지 않고 룸에 참가 할 수 있습니다. TypedLobby 파라미터를 가진 JoinRandomRoom 를 오버로드 하여 사용하세요.
이 메소드는 하나의 로비에 붙여진 룸들을 매치할 것 입니다! 로비를 많이 사용하고 있다면 맞는 룸을 찾기 위하여 JoinRandomRoom 메소드를 반복 해야 할 것 입니다. 이 메소드는 현재 활성화된 로비내의 룸을 찾거나 (참여한 로비가 없으면) 디폴트 로비에서 찾습니다.
실패하면 룸을 생성 할 수 있습니다(그리고 이 룸을 다음 사용자가 JoinRandomRoom 에서 사용합니다) 선택적으로, 잠시 후에 다시 시도해 봅니다.
expectedCustomRoomProperties | 커스텀 프로퍼티들과 매치하는 룸의 필터들 (문자열 키들과 값들). 무시하려면 null 을 전달 하세요 |
expectedMaxPlayers | 특정 maxplayer 설정 필터. 모든 maxPlayer 값을 수용하려면 0 으로 설정합니다. |
|
static |
커스텀 프로퍼티와 맞는 오픈된 룸에 참가를 시도 합니다. 사용할 수 있는 룸이 없으면 실패 합니다.
룸은 필요에 의해서 생성되어지는 로비에 생성 될 수 있습니다. 이 오버로드를 통하여 실제 로비에 참여하지 않고 룸에 참가 할 수 있습니다.
이 메소드는 하나의 로비에 붙여진 룸들을 매치할 것 입니다! 로비를 많이 사용하고 있다면 맞는 룸을 찾기 위하여 JoinRandomRoom 메소드를 반복 해야 할 것 입니다. 이 메소드는 현재 활성화된 로비내의 룸을 찾거나 (참여한 로비가 없으면) 디폴트 로비에서 찾습니다.
실패하면 룸을 생성 할 수 있습니다(그리고 이 룸을 다음 사용자가 JoinRandomRoom 에서 사용합니다) 선택적으로, 잠시 후에 다시 시도해 봅니다.
오프라인 모드에서 룸은 생성되지만 JoinRandomRoom 을 호출 한 모든 파라미터들은 설정되지 않고 무시 됩니다.OnJoinedRoom 이벤트/콜백이 호출 됩니다 (enum PhotonNetworkingMessage 를 참고 하세요).
expectedUsers 배열을 정의하여 다른 플레이어가 참여할 수 없도록 이 플레이어들의 슬롯을 예약 할 수 있습니다. Photon 에서 상응하는 기능은 "슬롯 예약" 이라고 하며 문서 페이지에서 찾을 수 있습니다.
expectedCustomRoomProperties | 커스텀 프로퍼티들과 매치하는 룸의 필터들 (문자열 키들과 값들). 무시하려면 null 을 전달 하세요 |
expectedMaxPlayers | 특정 maxplayer 설정 필터. 모든 maxPlayer 값을 수용하려면 0 으로 설정합니다. |
matchingType | 사용할 수 있는 매칭 알고리즘에서 선택. MatchmakingMode enum 을 참고 해 보세요. |
typedLobby | null 이면 , 룸은 현재 사용되고 있는 로비에서 자동으로 생성됩니다. (디폴트 값으로 명시적으로 로비에 참여하지 않는 한). |
sqlLobbyFilter | SQL-타입 로비의 필터-문자열. |
expectedUsers | UserId의 선택적인 사용자 리스트로 게임에 참여가 예상되고 슬롯을 이 플레이어들에게 부여 함. |
|
static |
roomname 으로 룸에 참여 하고 성공시에는 OnJoinedRoom() 이 호출 됩니다. 로비에 영향을 받지 않습니다.
성공하면 OnJoinedRoom() 이 호출 됩니다. 이 콜백에서 룸에 참여하는 것에 대한 것을 구현 할 수 있습니다.
룸이 꽉 찼거나 룸이 유효하지 않는다면(참여를 시도 했을 때 비어 있을 수 도 있습니다) JoinRoom이 실패합니다. 오류가 발생한 경우는 OnPhotonJoinRoomFailed() 콜백을 구현 하여 처리 합니다.
로비 목록에서 룸에 참여 하기 위해서는 roomName 으로 RoomInfo.name 를 사용 하세요. 여러 개의 로비를 사용함에도 불구 하고 roomName 은 어플리케이션에서 항상 "전역"에서 사용할 수 있으므로 특정 로비를 지정할 필요가 없습니다. 마스터 서버가 룸을 찾을 것 입니다. Photon 클라우드에서 어플리케이션은 AppId, Game버전과 PUN 버전으로 정의 됩니다.
PhotonNetworkingMessage.OnPhotonJoinRoomFailed PhotonNetworkingMessage.OnJoinedRoom
roomName | 참여할 유일한 룸 이름. |
|
static |
roomname 으로 룸에 참여하고 성공시에는 OnJoinedRoom() 이 호출 됩니다. 로비에 영향을 받지 않습니다.
성공하면 OnJoinedRoom() 이 호출 됩니다. 이 콜백에서 룸에 참여하는 것에 대한 것을 구현 할 수 있습니다.
룸이 꽉 찼거나 룸이 유효하지 않는다면(참여를 시도 했을 때 비어 있을 수 도 있습니다) JoinRoom이 실패합니다. 오류가 발생한 경우에 대해서는 OnPhotonJoinRoomFailed() 콜백을 구현 하여 처리 합니다.
로비 목록에서 룸에 참여 하기 위해서는 roomName 으로 RoomInfo.name 를 사용 하세요. 여러개의 로비를 사용함에도 불구 하고 roomName 은 어플리케이션에서 항상 "전역"에서 사용할 수 있으므로 특정 로비를 지정할 필요가 없습니다. 마스터 서버가 룸을 찾을 것 입니다. Photon 클라우드에서 어플리케이션은 AppId, Game버전과 PUN 버전으로 정의 됩니다.
expectedUsers 배열을 정의하여 다른 플레이어가 참여할 수 없도록 이 플레이어들의 슬롯을 예약 할 수 있습니다. Photon 에서 상응하는 기능은 "슬롯 예약" 이라고 하며 문서 페이지에서 찾을 수 있습니다.
PhotonNetworkingMessage.OnPhotonJoinRoomFailed PhotonNetworkingMessage.OnJoinedRoom
roomName | 참여할 유일한 룸 이름. |
expectedUsers | UserId의 선택적인 사용자 리스트로 게임에 참여가 예상되고 슬롯을 이 플레이어들에게 부여 함. |
|
static |
사용할 수 있는 룸에 대한 업데이트 수신을 중지 하기 위해서는 로비를 빠져나가십시오.
이것은 PhotonNetwork.lobby 를 리셋 하지는 않습니다! 나중에 특정한 로비에 참여 할 수 있도록 해주게 됩니다.
countOfPlayers, countOfPlayersOnMaster, countOfPlayersInRooms 와 countOfRooms 값들은 로비에 있지 않아도 수신받을 수 있습니다.
로비 내에 없어도 JoinRandomRoom을 사용할 수 있습니다! 연결 할 때 로비에 참가하지 않으려면 autoJoinLobby 를 이용 합니다.
|
static |
현재 참여하고 있는 룸을 떠나고 마스터 서버로 되돌아 가서 룸에 참여하거나 생성 할 수 있습니다(주석을 참고 하세요).
이 메소드는 autoCleanUp 을 false 로 설정하지 않았으면 PhotonView 의 모든 (네트워크) 게임오브젝트들을 제거 합니다. 마스터 서버도 되돌아 갑니다.
오프라인 모드에서는 로칼의 "fake" 룸은 제거되고 OnLeftRoom 이 곧바로 호출 됩니다.
|
static |
메시지 큐를 잠시 멈추기 위하여 로딩 레벨을 Wrap 합니다. 선택적으로 룸 안에서 로드된 레벨과 동기화 합니다.
룸 내의 로드된 레벨과 동기화를 위해서 PhotonNetwork.automaticallySyncScene 을 true 로 설정 하세요. 룸의 마스터 클라이언트는 룸 내의 다른 플레이어와 로드된 레벨을 동기화 할 것 입니다.
레벨을 로드하고 있는 동안에 다른 플레이어에 의해 수신된 메시지를 처리 하지 않는 것이 합리적 입니다. 이 메소드는 PhotonNetwork.isMessageQueueRunning = false 로 설정하고 레벨이 로드되었을 때 큐를 enable 하여 관리 합니다.
다른 신을 로드 하기전에 RCP 를 발생 시키지 않는지 검토 해 주세요 ( 동일한 게임오브젝트와 PhotonView 를 가지고 있지 않는 씬 입니다). OnJoinedRoom 에서 RPC를 호출 할 수 있습니다.
Application.LoadLevel 을 사용 합니다.
levelNumber | 로드할 레벨 번호. 레벨 번호를 사용 할 때 모든 클라이언트가 동일한 값인지 확인 해 주시기 바랍니다. |
|
static |
네트워크 메시지 큐를 잠시 멈추기 위하여 레벨 로딩을 Wrap 합니다. 선택적으로 룸 안의 로드된 레벨과 동기화 합니다.
레벨을 로드하고 있는 동안에 다른 플레이어에 의해 수신된 메시지를 처리 하지 않는 것이 합리적 입니다. 이 메소드는 PhotonNetwork.isMessageQueueRunning = false 로 설정하고 레벨이 로드되었을 때 큐를 enable 하여 관리 합니다.
룸 내의 로드된 레벨과 동기화를 위해서 PhotonNetwork.automaticallySyncScene 을 true 로 설정 하세요. 룸의 마스터 클라이언트는 룸 내의 다른 플레이어와 로드된 레벨을 동기화 할 것 입니다.
다른 씬을 로드 하기전에 RCP 를 발생 시키지 않는지 검토 해 주세요 ( 동일한 게임오브젝트와 PhotonView 를 가지고 있지 않는 씬 입니다). OnJoinedRoom 에서 RPC를 호출 할 수 있습니다.
Application.LoadLevel 을 사용 합니다.
levelName | 로드할 레벨 번호. 레벨 번호를 사용 할 때 모든 클라이언트가 동일한 값인지 확인 해 주시기 바랍니다. |
|
static |
트래픽 통계를 재설정하고 다시 사용할 수 있도록 합니다.
|
static |
NetworkStatisticsEnabled 가 사용되었을 때만 통계를 수집하는 것이 가능함.
|
static |
ConnectToBestCloudServer(string gameVersion) 에서 사용된 지역으로 덮어 씁니다.
모든 클라우드 서버 지역의 핑 결과로 덮어 쓰게 될 것 입니다.
플레이어 preferences 에서 선택된 지역을 수동으로 저장 할 수 있도록 사용 하세요.
노트: PhotonNetwork.ConnectToRegion 을 사용하여 (임시로) 특정 지역에 접속할 수 있습니다.
|
static |
룸에서 커스터마이징된 이벤트들을 전송 합니다. 이벤트들은 최소 EventCode(0..199)로 구성되어 있어야 하며 내용을 갖고 있을 수 있습니다.
누군가가 보낸 이벤트들을 수신하려면 PhotonNetwork.OnEventCall 에서 처리 메소드를 등록 해야 합니다.
예: private void OnEventHandler(byte eventCode, object content, int senderId) { Debug.Log("OnEventHandler"); }
PhotonNetwork.OnEventCall += this.OnEventHandler;
senderId 에는 누가 이벤트를 전송 했는지에 대한 PhotonPlayer 를 찾을 수 있습니다. 다른 내용과 액션에 대해서 다른 eventCode 를 부여하는 것이 좋습니다. 내용은 캐스트 해야만 합니다.
eventContent는 선택사항입니다. 무엇인가를 보내기 위해서는 "시리얼라이즈 할 수 있는 타입" 이어야 하며 기본적으로 클라이언트가 byte[] 로 변환 할 수 있어야 합니다. 유니티의 Vector2 , Vector3 , Qaternion 을 포함한 대부분의 기본 타입과 기본 타입의 배열이 지원됩니다. Transform과 프로젝트에서 정의한 클래스들은 지원 되지 않습니다. CustomTypes.cs 에 있는 것처럼 자신의 클래스를 "serializable type" 으로 만들 수 있습니다.
RaiseEventOptions 에는 (직관적이지 않은) 조합 규칙이 있습니다: targetActors (PhotonPlayer.ID 값들의 배열)를 설정 했으면 receivers 파라미터는 무시 됩니다. 이벤트 캐싱을 사용하고 있을 때 targetActors, receivers와 interestGroup 은 사용 될 수 없습니다. 버퍼화된 이벤트들이 모두에게로 전달 됩니다. cachingOption 을 사용 할 때는 removeFromRoomCache , eventCode 와 content 가 전송되지는 않지만 필터로 사용 됩니다.
eventCode | 이벤트 타입을 식별하는 byte. 액션별 또는 시그널별로 코드를 사용하기 원할 수 있으며 이 때는 내용을 예상 할 수 있습니다. 허용값:0 부터 199. |
eventContent | 문자열, 바이트, 정수, 실수 그리고 이러한 타입의 배열과 같이 직렬화 할 수 있는 객체 입니다. 바이트 키를 가지고 있는 해시테이블이 내용으로 전송하기 좋은 변수 입니다. |
sendReliable | 모든 플레이어에게 이 이벤트가 전송되는 것을 보증 합니다. ACK 를 받을 것이고 일정 수준의 대역폭이 필요하며 스킵될 수 없습니다(손실이 발생된 경우 lag 가 발생될 수 있습니다. |
options | 이벤트를 좀 더 복잡하게 사용 할 수 있습니다. 만약 null 이면 RaiseEventOptions.Default 가 사용 될 것 입니다(이대로 사용하셔도 좋습니다). |
|
static |
연결 해제가 된 이후 마스터 서버에 재접속 하기 위해 사용 될 수 있습니다.
접속이 해제 된 이후 클라이언트에서 지역 마스터 서버에 다시 접속 하기 위해 사용 할 수 있습니다. 참여했었던 룸 이름을 캐시하고 Rejoin(roomname)을 이용하여 게임으로 되돌아 갑니다. 일반적인 유즈 케이스: iOS 단말에서 잠금버튼을 누르면 즉시 접속이 해제 됩니다.
|
static |
게임플레이 하는 동안 연결이 해제 되었을 때, 이 메소드로 재연결 하여 룸에 참여 합니다.
이 메소드는 룸을 호스팅 하고 있었던 전에 참여 했던 게임서버로 직접 재접속 합니다. 룸이 닫혀 있다면 PUN 은 OnPhotonJoinRoomFailed 를 호출하고 이 클라이언트를 마스터 서버로 보낼 것 입니다.
만약 이 클라이언트가 재연결과 재참여를 시도했으면 리턴 값을 확인합니다. (조건이 맞는다면) ReconnectAndRejoin 가 false를 리턴하면 재연결과 재참여를 여전히 시도할 수 있습니다.
PhotonNetwork.ReJoin과 유사하게 이 메소드는 플레이어마다 유일한 ID (사용자ID) 가 필요 합니다.
|
static |
(현재)가장 좋은 핑이 나오는 것을 찾기 위해서 모든 클라우드 서버에 핑을 날립니다.
|
static |
연결 해제와 재접속 후에 룸에 되돌아 가기 위해 사용할 수 있습니다.
연결이 끊어진 이후 플레이를 계속 하기 위해서 룸으로 다시 되돌아 갈 수 있습니다. 만약 클라이언트가 빨리 재접속 할 수 있으면 Reconnect() 와 이 메소드를 사용하세요. 전에 있었던 룸 이름을 캐시하고 게임에 되돌아 가기 위해 ReJoin(roomname) 을 사용 합니다.
노트: 어떤 룸에도 재참여를 할 수 있도록 하려면 UserID를 사용해야 합니다! 그리고 RoomOptions.PlayerTtl 로 설정 해야 합니다.
중요: Instantiate() 와 RPC 사용은 아직 지원 되지 않습니다. PhotonView 의 소유자 규칙은 부드러운 게임으로의 복귀를 방해하는 요소 입니다. 대신 커스텀 프로퍼티와 이벤트 캐싱을 통한 RaiseEvent 를 사용하세요.
일반적인 유즈케이스: iOS 에서 잠금 버튼을 누르면 즉시 연결 해제가 됩니다.
|
static |
"this" 플레이어의 커스텀 프로퍼티를 지역적으로 제거 합니다. 중요: 변경사항이 동기화 되지 않습니다! 룸을 전환 할 때 유용 합니다.
조심해서 이 메소드를 사용 하세요. 플레이어 사이에서 상태의 비일관성이 만들어 질 수 있습니다. 지역적으로 player.customProperties 만 변경 합니다. 게임 사이에서 커스텀 프로퍼티를 없앨 때 유용하게 사용 될 수 있습니다( 말하자면 턴, 킬수 등을 저장합니다).
SetPlayerCustomProperties() 동기화하고 룸에 있을 때 null 로 값을 설정하는데 사용될 수 있습니다. 룸에 있는 동안 "removed" 된 것으로 간주 됩니다.
customPropertiesToDelete 가 널이거나 항목이 0 개 이면 모든 커스텀 프로퍼티들은 삭제 됩니다 (새로운 해시테이블로 교체 됩니다). 제거할 키를 지정하면 지정된 것들은 해시테이블에서 제거 되지만 나머지 키들은 영향을 받지 않습니다.
customPropertiesToDelete | 제거할 커스텀 프로퍼티의 키들. 주석을 참조 하세요. |
|
static |
targetPlayer부터 전송된 서버의 모든 버퍼된 것을 제거 합니다. 로컬 플레이어("자신"만) 또는 마스터 클라이언트(모두에게)에게만 호출 됩니다.
이 메소드는 다음이 필요 합니다:
만약 targetPlayer 가 동시에 RPC 를 호출하면 이것이 호출 됩니다. 네트워크 lag 는 이러한 것들이 나머지와 같이 버퍼화 되거나 제거되면 결정 됩니다.
targetPlayer | 이 플레이어의 버퍼된 RPC 가 서버 버퍼에서 제거 됩니다. |
|
static |
targetPhotonView 를 통하여 전송된 모든 버퍼된 RPC 가 서버로 부터 제거 됩니다. 마스터 클라이언트와 targetPhotonView 의 소유자가 호출 할 수 있습니다.
이 메소드는 다음이 필요 합니다:
targetPhotonView | 이 PhotonView 의 버퍼화된 RPC 들이 서버 버퍼에서 제거 됩니다. |
|
static |
마스터 클라이언트이거나 개별 PhotonView 를 제어 한다면 targetGroup 으로 전송된 모든 버퍼된 RPC 가 서버로 부터 제거 됩니다.
이 메소드는 다음이 필요 합니다:
targetGroup | 관심 그룹의 모든 RPC 들이 제거 됩니다. |
|
static |
즉시 RPC 전송과 방금 호출된 인스턴스 생성에 사용 할 수 있으므로 다른 플레이어들과 맞추어 진행 할 수 있습니다.
레벨을 로드 하기 위하여 RPC 를 사용하여 직접 로드 할 때 유용할 수 있습니다. 로딩 할 때 RPC 는 다른 플레이어에게 전송되지 않으므로 "load" RPC 가 지연 될 수 있습니다. 이 메소드를 사용하여 "다른 플레이어들" 에게 RPC 를 전송 할 수 있습니다. 메시지큐를 disable (isMessageQueueRunning 을 통하여) 하고 로드 합니다.
|
static |
나중에 인스턴스 생성할 PhtonView 의 레벨 프리픽스를 설정. 하나만 필요 하다면 설정 하지 마세요!
중요: 멀티 레벨 프리픽스를 사용하지 않는 다면 이 값을 설정하지 마시기 바랍니다. 디폴트 값은 트래픽에 최적화 되어 있도록 설정 되어 있습니다.
기존에 존재하고 있는 PhotonView 에는 영향을 주지 않습니다. (기존 존재하는 PhotonView 를 변경 할 수 없습니다).
다른 레벨 프리픽스로 전송되어진 메시지 들은 수신은 되나 실행은 되지 않습니다. 이것은 RPC, Instantiate 와 동기화에 영향을 줍니다.
PUN 은 절대 이 값을 리셋 하지 않는 다는 것을 주의 하세요. 스스로 해주셔야 합니다.
prefix | 최대값은 short.MaxValue = 32767 입니다. |
|
static |
현재 룸의 마스터 클라이언트를 다른 플레이어로 지정해 달라고 서버에게 요청 합니다.
RPCs 와 RaiseEvent 에는 룸의 마스터 클라이언트에만 보낼 수 있는 옵션이 있습니다. SetMasterClient 는 이러한 메시지를 받는 클라이언트에게 영향을 줍니다.
새로운 마스터 클라이언트를 설정하기 위해서 서버의 오퍼레이션을 호출 하는데 라운드 트립이 걸리게 됩니다. 성공한 경우에 이 클라이언트와 다른 클라이언트들은 서버에서 새로운 마스터 클라이언트를 얻게 됩니다.
SetMasterClient 로 현재 마스터 클라이언트가 누구 이고 교체할 마스터 클라이언트는 누구인가를 알려 주게 됩니다. 만약 이전에 마스터 클라이언트를 변경한 것이 있다면 실패 할 것입니다. 이 오류에 대한 콜백은 없습니다. 모든 클라이언트들이 서버에 의해 지정된 새로운 마스터 클라이언트를 얻어와야 합니다.
추가참고: PhotonNetwork.masterClient
v3 서버에서: ReceiverGroup.MasterClient (RPCs에서 사용가능)는 이것에 영향을 받지 않습니다 (룸에서 가장 낮은 값의 player.ID를 여전히 지정). 대신 이 열거값을 피하기 위해서 지정한 플레이어를 전송 합니다.
현재 마스터 클라이언트가 나가게 되면, PUN 은 새로운 마스터 클라이언트를 "가장 낮은 player ID"로 감지 할 것 입니다. OnMasterClientSwitched 를 구현하여 이 경우에 대한 콜백을 받습니다. PUN이 선택한 마스터 클라이언트는 새로운 것으로 지정할 수 있습니다.
마스터 클라이언트를 지정 할 때 무한 루프가 되지 않는지 확인 해 주세요! 커스텀 마스터 클라이언트를 선택 할 때 누가 이 플레이어를 지정 한 것에 관계 없이 모든 클라이언트들이 동일한 클라이언트를 가르키고 있어야 합니다.
지역적으로 마스터 클라이언트는 즉시 교체 되는 반면 리모트 클라이언트들은 이벤트를 받습니다. 이 의미는 현재 마스터 클라이언트가 떠날 때 처럼 임시적으로 마스터 클라이언트가 없어 진다는 의미 입니다.
수동으로 마스터 클라이언트를 교체 할 때, 이 사용자가 떠날 수도 있으며 다른 마스터 클라이언트처럼 작업을 하지 않습니다.
masterClientPlayer | 다음에 마스터 클라이언트가 될 플레이어. |
|
static |
이 (로컬) 플레이어의 프로퍼티를 설정하고 다른 플레이어들에게 동기화 시켜줍니다(직접 변경하지 마세요).
룸 안에 있을 때 프로퍼티들은 다른 플레이어들과 동기화 됩니다. CreateRoom, JoinRoom 과 JoinRandomRoom 은 룸에 들어 갔을 때 플레이어의 커스텀 프로퍼티를 적용 할 것 입니다. 전체 해시테이블이 전송 될 것 입니다. 트래픽 최소화를 위해 변경된 키/값만을 설정 하세요.
해시테이블이 null 이면 커스텀 프로퍼티들이 없어질 것 입니다. 커스텀 프로퍼티는 절대 자동으로 없어지지 않습니다. 따라서 변경하지 않으면 다음 룸으로 따라가게 됩니다.
PhotonNetwork.player.customProperties 를 변경하여 프로퍼티를 설정하지 마시기 바랍니다!
customProperties | 이 해시테이블에서 문자열-타입의 키만 사용 됩니다. null 이면 커스텀 프로퍼티가 모두 삭제됩니다. |
|
static |
주어진 그룹의 수신 Enable/disable 설정 (PhotonView 에 적용)
group | 영향 받는 관심 그룹. |
enabled | 그룹으로 부터의 수신 여부 설정. |
|
static |
주어진 그룹에 수신 Enable/disable 설정 (PhotonView에 적용)
enableGroups | Enable 할 관심 그룹 ( 또는 null). |
disableGroups | Disable 할 관심 그룹 (또는 null). |
|
static |
주어진 그룹으로 전송 Enable/disable 설정 (PhotonView 에 적용)
group | 영향을 받는 관심그룹. |
enabled | 그룹 전송 여부를 설정 |
|
static |
주어진 그룹에 전송 Enable/disable 설정 (PhotonView 에 적용)
enableGroups | 전송을 Enable 로 설정할 관심 그룹 (또는 null). |
disableGroups | 전송을 Disable 로 설정할 관심 그룹 (또는 null). |
|
static |
오프라인 일때 네트워크 프로토콜이 전환될 수 있습니다 (접속에 사용하는 포트에 영향을 주게 됩니다).
프로토콜을 변경할 때 마스터서버의 포트로 변경 해야 합니다. 디폴트 포트: TCP: 4530 UDP: 5055
다음과 같이 보일 수 있습니다:
Connect(serverAddress, <udpport|tcpport>, appID, gameVersion)
또는 ConnectUsingSettings() 를 사용할 때 포트는 설정에서 다음처럼 변경 될 수 있습니다:
PhotonNetwork.PhotonServerSettings.ServerPort = 4530;
현재 프로토콜은 다음으로 얻을 수 있습니다:
PhotonNetwork.networkingPeer.UsedProtocol
모바일에서 PUN+의 Native 소켓 플러그인에서는 동작 하지 않습니다!
cp | 저수준 연결에서 사용되는 네트워크 프로토콜. UDP 가 디폴트입니다. 모든 플랫폼에서 TCP 를 사용할 수 없습니다(주석을 보세요). |
|
static |
(수동으로 인스턴스 생성된)viewID 를 등록해제 하고 네트워크 객체들을 없애 버립니다.
viewID | 이 플레이어에 수동으로 할당된 viewID. |
|
static |
이 오퍼레이션은 Photon 이 주어진 파라미터를 통해 커스텀 웹 서비스를 이름(path)으로 호출 하도록 하게 합니다.
이 메소드는 서버측 기능으로 사용하기 전에 Photon 클라우드 대시보드에서 설정되어 있어야 합니다.
간단한 소개에 대해서는 턴기반 기능 개요를 참고 하시기 바랍니다.
http://doc.photonengine.com/ko-kr/turnbased/current/getting-started/feature-overview br/> 파라미터들은 JSON 포맷으로 변환 될 것 이므로 파라미터가 호환 되는지 확인 해 주세요.
응답을 어떻게 얻는지에 대해서는 PhotonNetworkingMessage.OnWebRpcResponse 를 참고 하세요.
OperationResponse 이 WebRPC 가 호출 할 수 있을 지에 대한 여부만 알려준다는 것을 이해 하는 것이 중요 합니다. 응답 내용에는 웹 서비스에서 보낸 모든 값과 오류/성공 코드가 포함됩니다. 웹 서비스가 실패한 경우에 에러 코드와 디버그 메시지가 일반적으로 OperationResponse 내부에 있습니다.
WebRpcResponse 클래스는 헬퍼 클래스로 WebRPC 응답에서 가장 중요한 내용을 발췌 합니다.
콜백 구현 예제:
public void OnWebRpcResponse(OperationResponse response) { WebRpcResponse webResponse = new WebRpcResponse(operationResponse); if (webResponse.ReturnCode != 0) { //... }
switch (webResponse.Name) { //... } // and so on }
|
static |
유니티의 OnApplicationPause(true) 호출 이후에 연결을 유지 하기 위한 "fallback thread" 수행 시간을 정의 합니다.
앱이 비활성 된 후 잠시 후에 타임아웃이 발생 되도록 하지만 호출을 받을 수 있도록 합니다. 따라서 합리적인 값을 찾아 주셔야 합니다. 60 초가 적정하다고 생각 합니다.
타임아웃 처리를 위해서는 OnConnectionFail() 을 구현 합니다. 어플리케이션이 재활성 될 때 타임아웃이 발생 했다는 것을 알 수 있을 것 입니다.
이 경우를 다른것과 분리하고 싶으면, 앱이 백그라운드에 있었는지를 추적해야 합니다. (PUN 에는 특별한 콜백은 없습니다).
0.1 보다 작은 값은 이 타임아웃에 사용할 수 없을 것 입니다 (주의: 연결은 무한정으로 유지 될 수 있습니다).
정보: PUN 은 주기적으로 유니티가 Update()를 호출 하지 않아도 서버에 ACK 를 전송하기 위해 "fallback thread"를 수행하고 있습니다. 이 스레드는 씬과 에셋을 로드 하거나 앱이 백그라운드에 있어도 연결을 유지 할 수 있도록 해 줍니다.
노트: 일부 플랫폼 (예. iOS)에서는 앱이 백그라운드로 들어갔을 때 연결 유지를 허용해 주지 않습니다. 이런 경우에는 값이 아무런 변화를 주지 않으며 백그라운드에서 앱은 즉시 연결을 잃어 버리게 됩니다.
유니티의 OnApplicationPause() 콜백은 일부 유니티 버전의 내보내기(Android) 에서 동작 하지 않습니다. 타겟 플랫폼에서 OnApplicationPause() 가 예측 한대로 콜백 되는지 확인 해 주세요! 구현을 보시려면 PhotonHandler.OnApplicationPause(bool pause) 를 확인 해 보세요.
|
static |
true 이면, Instantiate 메소드는 룸에 있는지 체크 하여 룸에 있지 않으면 실패 하게 됩니다.
지정한 룸 외부에서 인스턴스를 생성하는 것은 매우 규칙에 위반되는 것 입니다. 정확히 무엇을 하고 있는지 아는 경우에만 off 로 해주세요.
|
static |
네트워크 로그 레벨. PUN 에서 발생한 로그를 제어 합니다.
|
static |
플레이어 (또는 씬)당 지정된 PhotonView 의 최대 개수. 일반 문서 "제약사항" 주제에서 이 제한에 대한 증가 방법을 확인 해 보세요.
|
static |
Unity Networking 에서만 사용됩니다. PUN 에서는 PhotonNetwork.CreateRoom 에서 플레이어 수를 설정 합니다.
|
static |
|
static |
시리얼라이즈된 서버 설정, ConnectUsingSettings에서 사용하고 설정 마법사에 의해서 작성.
|
static |
PhotonView의 OnSerialize/ObservingComponent 를 통해 전송하기전에 float 간 최소 차이 값 입니다.
|
static |
PhotonView의 OnSerialize/ObservingComponent 를 통해 전송 전에 변경이 필요한 최소 회전 각도 입니다.
|
static |
PhotonView의 OnSerialize/ObservingComponent 로 전송하기전에 Vector2 또는 Vector3 (예, transforms rotation) 의 최소 차이가 변경되어야 합니다.
sqrMagnitude 라는 것에 주의 하세요. 예, Y-축의 0.01 을 변경 후 전송하기 위해서는 0.01f*0.01f=0.0001f 를 사용 합니다. float 부정확성으로 인하여 0.0001f 대신 0.000099f 를 사용 합니다.
|
static |
빈번히 인스턴스 생성이 되는 게임오브젝트의 레퍼런스를 보관합니다.(리소스 로딩 대신 메모리 부족).
Instantiate 가 사용되는 경우를 제외하면 언제든지 캐시를 변경 할 수 있어야만 합니다. 메인 스레드에서만 사용하는 것이 가장 좋습니다.
|
static |
null 이 아니면 이것은 (전용) 게임 오브젝트들의 목록으로 PUN SendMonoMessage() 에 의해 호출 됩니다.
모든 콜백에 대해서 PhotonNetworkingMessage 에 정의 되어 있으며, PUN 은 SendMonoMessage 와 PUN 에 의해 콜백 받기를 원하는 모든 스크립트와 게임오브젝트 검색인 FindObjectsOfType() 호출에 사용 합니다.
PUN 콜백은 매우 자주 되지는 않으나(게임내, 프로퍼티 업데이트가 가장 빈번합니다) FindObjectsOfType 은 많은 게임 오브젝트에 있어서 시간이 많이 소요되고 성능에 문제가 될 수 있습니다.
선택적으로 SendMonoMessageTargets 은 타겟 게임오브젝트들의 목록을 제공하기 위해서 사용 될 수 있습니다. FindObjectsOfType()을 건너띄지만 콜백이 필요한 모든 게임오브젝트 이 리스트에 자체를 추가할 것 입니다.
만약 null이면 기본 행위는 MonoBehaviour 로 각 게임오브젝트에 SendMessage 를 할 것 입니다.
|
static |
어떤 클래스에서 PUN 콜백 구현이 있는지를 정의 합니다.
속도를 위해 런타임의 최적화 옵션을 제공 합니다.
이 타입을 좀더 세분화 할 수록 더 적은 클래스가 콜백 메소드에 반영되었는지 체크 될 것 입니다.
|
static |
성능이슈가 될 수 있는 동시 실행 루틴으로써의 RPC 시작을 스킵하는데 사용할 수 있습니다.
|
static |
true 일 때 메모리 내에 게임 오브젝트를 보존 하기 위하여 Instantiate는 PhotonNetwork.PrefabCache를 사용 합니다.(동일한 프리팹의 인스턴스생성 개선).
런타임에 UsePrefabCache 를 false로 설정하더라도 PrefabCache 가 클리어 되지 않지만 즉시 무시 될 것 입니다. 스스로 캐시를 깨끗하게 하고 변경할 수 있습니다. 설명을 읽어 보세요.
|
static |
사용하도록 설정되면 비용이 많이 드는 GetComponents<MonoBehaviour>() 호출을 피하면서 MonoBehaviour는 RPC 가 캐시됩니다.
RPCs는 타겟 PhotonView의 MonoHehaviour에게 호출 됩니다. 이러한 것들은 GetComponents 를 통해 찾아야 합니다.
이 값이 true 로 설정되었을 때 MonoBehaviours 의 목록이 각 PhotonView에서 캐시됩니다. 필요에 따라 PhotonView 의 MonoBehaviours 목록을 수동으로 갱신하기 위해서 photonView.RefreshRpcMonoBehaviourCache() 를 사용할 수 있습니다. (새로운 MonoBehaviour 가 네트워크 게임 오브젝트에 추가 되었을 때 등).
const string PhotonNetwork.versionPUN = "1.81" |
PUN 의 버전 번호. 서로 클라이언트 버전을 분리 하기 위해 GameVersion 에서도 사용됩니다.
|
staticgetset |
연결시에 사용되는 사용자의 인증 값.
커스텀 인증 사용시에는 Connect 호출 전에 이 값들을 설정하세요. userId 가 인증을 받고 어떻게 받는 것이라면 이러한 값에는 userId 를 설정합니다.
어떤 값으로 인하여 인증이 실패한 경우이면 PUN 은 구현해 놓은 OnCustomAuthenticationFailed(string debugMsg) 를 호출하게 될 것 입니다. 참조: PhotonNetworkingMessage.OnCustomAuthenticationFailed
|
staticgetset |
룸에 대한 설정으로 룸 생성자가 룸에서 나갔을 때 네트워크-인스턴스화된 게임오브젝트를 제거 할 것인지의 여부를 정의 합니다.
룸당 설정되며 룸에서 변경될 수 없으며 개별 클라이언트들의 설정에 오버라이드 될 것 입니다.
만약 룸에서 room.AutoCleanUp 사용할 수 있도록 되어 있으면 PUN 클라이언트들은 플레이어가 떠났을 때 플레이어의 게임오브젝트를 없애 버릴 것 입니다. 여기에는 수동으로 인스턴스 생성 된(예를 들어 RPC 로 생성) 게임오브젝트들도 포함됩니다. 사용하도록 되어 있을 때 서버는 RPC, 인스턴스화된 게임오브젝트들과 떠나는 플레이어의 PhotonView들을 역시 깨끗하게 없앨 것 입니다. 누군가 떠난 후 참여한 플레이어들은 떠난 플레이어의 이벤트를 더이상 수신하지 않을 것 입니다.
내부적으로 이 설정은 커스텀 룸 프로퍼티에 저장됩니다. 디폴트는 사용할 수 있도록 설정되어 있습니다.
|
staticgetset |
PhotonServerSettings 에셋 내에서 설정합니다. 마스터 서버에 접속 했을 때 "로비"에 참여 해야 하는지 정의 합니다.
만약 false 이면 마스터를 접속했을 때 OnConnectedToMaster() 가 호출 될 것 입니다. 이 값이 false 이면 OnJoinedLobby() 는 호출 되지 않을 것 입니다.
디폴트는 사용할 수 있도록 설정되어 있습니다.
룸 리스팅은 사용할 수 없습니다. 룸들은 로비에 참여하지 않고 (무작위로) 생성되어 참여 될 수 있습니다.
|
staticgetset |
마스터 클라이언트와 동일한 레벨로 룸 안의 모든 클라이언트들이 로드 해야하는지를 정의 합니다(PhotonNetwork.LoadLevel 를 사용한 경우)
로드된 레벨을 동기화 해야 하면 마스터 클라이언트는 PhotonNetwork.LoadLevel 을 사용해야 합니다. 모든 클라이언트는 갱신을 받거나 참여했을 때 새로운 씬을 로드하게 될 것 입니다.
내부적으로 로드된 씬에 커스텀 룸 프로퍼티가 설정 됩니다. 클라이언트가 이 프로퍼티를 읽을 때 아직 동일한 씬에 있지 않은 경우에 즉시 메시지큐를 잠시 멈추고 (PhotonNetwork.isMessageQueueRunning = false) 로드 합니다. 씬 로드가 완료 될 때, PUN 은 자동적으로 메시지 큐를 사용하도록 설정할 것 입니다.
|
staticget |
Photon 이 초기 연결 전 까지는 False. 오프라인 모드에서는 True, 서버에 접속하고 있는 동안 서버를 변경하는 동안에도 True.
|
staticget |
connected 의 정제된 버전으로 서버로의 연결이 Join,leave 와 같은 오퍼레이션을 수용할 준비가 된 경우에만 true 입니다.
|
staticget |
ConnectUsingSettings (또는 유사한 메소드)를 호출하여 Photon 저수준 연결이 성립되기 전까지 True.
|
staticget |
간단한 연결 상태
|
staticget |
상세한 연결 상태 (PUN을 모르는, 따라서 서버 전환시에 "disconnected" 로 될 수 있습니다).
OfflineMode 에서, PeerState.Joined (생성/참여 후) 이거나 or 모든 경우에 있어서 ConnectedToMaster 입니다.
|
staticget |
현재 이 어플리케이션을 사용하고 있는 플레이어 수 (5 초 간격으로 마스터서버에서 이용 가능).
|
staticget |
룸에서 앱으로 게임 하고 있는 사용자의 수 (마스터 서버가 5초마다 전송함). 현재 참여하고 있는 룸의 플레이어 수를 얻으려면 playerList.Count 를 사용 합니다!
|
staticget |
룸을 찾고 있는 현재 플레이어의 수 (5초 간격으로 마스터서버에서 사용할 수 있음).
|
staticget |
현재 사용중인 룸의 개수 (5초 간격으로 마스터 서버에서 사용 가능).
로비 내에 있는 동안 PhotonNetwork.GetRoomList().Length 로 룸 갯수를 체크 할 수 있습니다. PUN v1.25 부터 Photon 이 전송하는 통계 이벤트를 기반으로 한 것 입니다 (모든 룸의 개수를 세어서).
|
staticgetset |
Crc check는 깨진 데이터그램을 감지하고 이슈를 피하기 위해 유용하게 사용 할 수 있습니다. 연결되지 않았을 때 enable 될 수 있습니다.
|
staticgetset |
PhotonServerSettings 에셋 내에서 설정합니다. 마스터 서버에서 활성화 로비들의 목록을 얻을 수 있습니다.
게임에서 여러개의 로비를 사용하고 있고 각 플레이어들의 활동을 보려고 하면 로비 통계를 유용하게 사용할 수 있습니다.
이 값은 PhotonServerSettings 내에 저장되어 있습니다.
PhotonNetwork.LobbyStatistics 은 마스터 서버에 접속 할 때 갱신됩니다. 콜백 PunBehaviour 가 있습니다.
|
staticgetset |
읽기 전용 친구 목록, 온라인 상태와 참여 하고있는 룸에 대한 정보가 있으며 FindFriends 호출에 의해 초기화 되기 전 까지는 null 입니다.
이 목록은 변경하지 마세요! FindFriends 내부적으로 관리되며 값을 읽을 수만 있습니다. FriendsListAge 의 값으로 1/1000 초 단위로 데이터가 얼마나 오래 되었는지 파악 할 수 있습니다.
유용한 시간 간격(>10 초) 보다 더 자주 리스트를 얻지 마세요. 최고의 경우에 있어서는 정말 빠르게 리스트를 유지 합니다. 한 번만 전체 목록을 얻고 나서 온라인 상태에 있는 친구들의 변경 사항만 요청 합니다. 잠시 후(예 1분)에 다시 전체 리스트를 얻을 수 있습니다.(온라인 상태 갱신을 위해서)
|
staticget |
친구리스트 정보 시간(1/1000 초 단위). 친구 리스트가 패치되기 전까지 0 입니다.
|
staticgetset |
이 빌드에 대한 버전 문자열. 호환될 수 없는 클라이언트 분리를 위해 사용 될 수 있습니다. 접속시에 전송 됩니다.
연결 시에만 전송되므로 일반적으로 설정하는 곳에서 전송 됩니다(예, ConnectUsingSettings 에서).
|
staticget |
룸 안에 있을 때 true 입니다 (connectionStateDetailed == PeerState.Joined).
인스턴스 생성 또는 나가기 등 룸 안에서만 실행 될 수 있는 수많은 액션들이 있습니다. 오프라인 모드에서도 룸에 참여 할 수 있습니다.
|
staticget |
이 클라이언트가 로비내에 있는 동안 true 입니다.
룸 목록을 사용할 수 있거나 갱신될 때 IPunCallbacks.OnReceivedRoomListUpdate() 를 구현하여 통지를 받습니다.
룸에 참여 할 때 자동적으로 로비에서 나가게 됩니다! 로비는 마스터 서버에만 존재 합니다.(반면 게임서버가 룸을 관리합니다).
|
staticget |
마스터 클라이언트인가요?
|
staticgetset |
수신 이벤트(RPC, 인스턴스 생성과 수신되는 모든 것)를 처리하는 것을 잠시 멈추는데 사용 될 수 있습니다.
IsMessageQueueRunning == false 이면 OnPhotonSerializeView 호출이 수행되지 않고 클라이언트는 아무것도 전송 하지 않습니다. 또한 수신 메시지들은 메시지 큐를 재활성화 할 때 까지 큐에 쌓이게 될 것 입니다.
레벨 로드 후 PhotonView의 데이터와 RPC 수신을 계속 원하면 매우 유용 합니다. 클라이언트는 계속 수신하고 수신된 패키지와 RCP/이벤트에 대한 ACK 를 전송 할 것 입니다. "lag" 가 더해지고 멈추는 것이 길어지게 되면 모든 수신 메시지가 큐에 쌓이기 때문에 이슈가 발생할 수 있습니다.
|
staticget |
룸에 있으면서 룸의 마스터 클라이언트가 아니면 true 입니다.
|
staticgetset |
PUN이 로비에 참여 하거나 게임을 생성할 때 로비가 사용될 것 입니다.
디폴트 로비의 이름으로 빈 문자열을 사용합니다. autoJoinLobby 설정이 true 이면 PUN 은 마스터 서버의 로비로 입장할 것 입니다. 따라서 접속 또는 룸을 떠날 때 PUN 은 자동적으로 다시 로비로 들어가게 합니다.
클라이언트가 로비에 있는지 PhotonNetwork.insideLobby 를 체크 하시기 바랍니다. (마스터 서버와 로비)
|
staticget |
켜져 있으면 마스터 서버는 이 어플리케이션의 활성 로비들에 대한 정보를 제공해 줍니다.
게임에서 여러개의 로비를 사용하고 있고 각 플레이어들의 활동을 볼 때 로비 통계를 유용하게 사용할 수 있습니다. 로비별로 이름,타입,룸- 과 플레이어- 수를 얻게 됩니다.
PhotonNetwork.LobbyStatistics 은 마스터 서버에 접속 할 때 갱신됩니다. PunBehaviour.OnLobbyStatisticsUpdate에 콜백이 있으며 UI 업데이트를 위해서 구현 해야 합니다.
Lobby Statistics 는 디폴트로 켜져 있습니다. 프로젝트의 PhotonServerSettings 파일에서 사용하도록 설정합니다.
|
staticget |
현재 룸의 마스터 클라이언트, 룸 외부이면 null 입니다.
의사결정, AI 수행등을 위해 클라이언트/플레이어의 "권한자" 가 될 수 있습니다.
마스터 클라이언트가 룸을 떠나면(leave/disconnect) 서버는 곧바로 누군가에게 마스터 클라이언트를 부여 하게 됩니다. 마스터 클라이언트가 타임아웃이 걸리면(앱 종료, 연결 분실등) 이 클라이언트로 전송된 메시지들은 모든 사용자가 알 수 없게 됩니다! 유효한 마스터 클라이언트가 없는 상태로 약 10 초 동안 타임아웃이 발생하게 됩니다.
마스터 클라이언트가 전환되었을 때 IPunCallbacks.OnMasterClientSwitched 메소드를 구현하여 호출 해야 합니다.
PhotonNetwork.SetMasterClient 를 사용하여 수동으로 다른 플레이어/사용자로 변환해야 합니다.
offlineMode == true 인 경우에 항상 the PhotonNetwork.player를 리턴 합니다.
|
staticgetset |
연결해제가 트리거 되는 ACK 를 받기 전 신뢰 메시지가 재전송 할 수 있는 횟수를 정의 합니다. 디폴트:5.
재전송 횟수가 적으면 더 빠르게 접속해제가 되고 너무 많으면 큰 Lag 가 발생됩니다. 최소:3. 최대 :10.
|
staticgetset |
이 클라이언트 트래픽의 통계 수집 여부를 결정
클라이언트에서 이슈가 발생 했을 경우 트래픽 통계가 해법을 찾기 위한 좋은 시작 지점 입니다. 사용으로 설정 되어 있을 때만 GetVitalStats를 사용할 수 있습니다.
|
staticgetset |
멀티플레이어 코드를 싱글플레이어 게임 모드에 재사용하기 위해서 오프라인 모드가 설정 될 수 있습니다. on 으로 되어있으면 PhotonNetwork 는 어떤 연결도 생성하지 않고 오버헤드가 거의 없게 됩니다. RPC 와 PhotonNetwork.Instantiate 재사용에서 가장 유용 합니다.
|
staticget |
로컬 플레이어를 제외한 현재 룸에 있는 플레이어들의 목록 입니다.
클라이언트가 룸에 있을 때만 유효한 목록 입니다. 누군가가 참여하거나 떠나면 자동적으로 갱신됩니다.
룸 내에 모든 플레이어의 목록을 얻을 때 사용할 수 있습니다. 각 플레이어의 PhotonPlayer.customProperties 에 접근할 수 있습니다. (PhotonPlayer.SetCustomProperties 에 의해 설정 및 동기화).
PhotonPlayer.TagObject 에는 참조를 위한 임시 객체를 저장 하는데 사용할 수 있습니다. 네트워크를 통해 동기화 되지는 않습니다.
|
staticget |
CrcCheckEnabled 되어 있으면 유효한 CRC checksum 이 없고 거부된 수신 패키지들의 건수를 셉니다.
|
staticget |
로컬 PhotonPlayer. 항상 사용할 수 있고 이 플레이어를 나타냅니다. 룸에 입장하기전에 커스텀 프로퍼티들이 설정될 수 있으며 동기화도 될 것 입니다.
|
staticget |
현재 룸에 있는 플레이어들의 목록, 로컬 플레이어도 포함되어 있음
클라이언트가 룸에 있을 때만 유효한 목록 입니다. 누군가가 참여하거나 떠나면 자동적으로 갱신됩니다.
룸 내에 모든 플레이어의 목록을 얻을 때 사용할 수 있습니다. 각 플레이어의 PhotonPlayer.customProperties 에 접근할 수 있습니다. (PhotonPlayer.SetCustomProperties 에 의해 설정 및 동기화).
PhotonPlayer.TagObject 에는 참조를 위한 임시 객체를 저장 하는데 사용할 수 있습니다. 네트워크를 통해 동기화 되지는 않습니다.
|
staticgetset |
룸에 입장한 모든 플레이어들과 플레이어의 별명을 동기화 하기 위해 설정 합니다.PhotonPlayer.name 이 설정됩니다.
playerName 은 별명과 같은 것으로 유일할 필요는 없으며 계정을 대체 하지는 않습니다.
언제라로 값을 설정하고 (예, 연결전) 같이 플레이하는 모든 플레이어들이 이용할 수 있습니다.
플레이어 이름을 접근 하는 것은 PhotonPlayer.name 입니다.
PhotonNetwork.otherPlayers 에는 원격 플레이어가 설정한 playerName을 가지고 있는 다른 플레이어들의 목록 입니다.
|
staticgetset |
인스턴스화된 객체 인스턴스들을 보관하여 재사용 할 수 있는 객체 Pool 입니다. 유니티의 디폴트 Instantiate 와 Destroy 메소드들을 대체 하였습니다.
GameObject pool 을 사용하기 위해서는 IPunPrefabPool 를 구현하고 여기에 할당 하세요. Prefabs 은 이름으로 식별 됩니다.
|
staticgetset |
네트워크 손실의 경우에 신뢰 메시지들은 최대 3번 반복 될 수 있습니다.
신뢰 메시지가 한번 이상 손실 되었을 때, 다음 전송 메시지는 네트워크 복구를 위해 약간 지연된 후에 반복됩니다.
이 옵션으로 반복 2와 3의 속도를 높일 수 있습니다. 타임아웃을 방지 하지만 간격이 좁혀지는 스피드를 증가 시키기도 합니다.
이 값을 설정할 때 PhotonNetwork.MaxResendsBeforeDisconnect 를 6 또는 7 로 증가시켜 주세요.
|
staticget |
반복된 명령의 개수 (ACK 수신 전에 로컬 반복-타이밍 때문).
이 값이 많이 증가 되면 연결이 좋지 않아 타임아웃 연결 해제가 발생될 확률이 높습니다.
|
staticget |
현재 참여하고 있는 룸을 얻습니다. 아무방에도 참여하고 있지 않으면 null 을 받게 됩니다.
|
staticgetset |
초당 몇번이나 PhotonNetwork 가 패키지를 전송 해야 하는지 정의 합니다. 이 값을 변경 하면 'sendRateOnSerialize' 도 변경 해야 하는 것을 잊지 마세요.
적은 패키지는 오버헤드가 적으나 지연이 더 발생 합니다. sendRate 를 50으로 설정하면 초당 50 개 패키지가 생성된다는 것입니다.(좀 많습니다!). 타겟 플랫폼에 따라서 조정 해야 합니다: 모바일 네트워크는 늦고 좀더 신뢰성이 낮습니다.
|
staticgetset |
PhotonViews 에서 초당 몇 번이나 OnPhotonSerialize 이 호출되어야 하는지를 정의 합니다.
PhotonNetwork.sendRate 와 연계하여 이 값을 선택하세요.OnPhotonSerialize 는 전송 할 갱신내용과 메시지를 생성 할 것 입니다.
낮은 비율은 성능이 좋아 지지만 더 많은 지역을 초래 하게 됩니다.
|
staticget |
이 클라이언트가 현재 접속해 있거나 접속중인 서버(type)
Photon 3 에서는 세 가지의 서버 역할이 있습니다: Name Server, Master Server 와 Game Server.
|
staticget |
현재 사용되고 있는 서버 주소(마스터 또는 게임서버에 상관없음).
|
staticget |
현재 서버의 1/1000 초 타임스탬프
룸 내의 모든 클라이언트에게 액션과 이벤트를 동기화 하는데 유용합니다. 타임스탬프는 서버의 Environment.TickCount 기준 입니다.
양수값에서 음수값으로 종종 오버플로우 될 것 입니다. 어떤 사항이 발생하면 두 시간의 차이 체크를 위해서만 사용하도록 주의 하세요.
PhotonNetwork.time 의 기본 입니다.
|
staticget |
Photon 네트워크 시간, 서버와 동기화 됨
v1.55
이 시간값은 서버의 Environment.TickCount 에 따라 달라집니다. 서버 마다 다른 값이지만 룸 내에서는 모든 클라이언트들이 동일 한 값을 가지고 있어야 합니다(룸은 하나의 서먼에만 존재 합니다).
일자시간이 아닙니다!
이 값을 주의 해서 사용하세요:
어떤 양의 정수로 시작 될 수 있습니다.
4294967.295 부터 0 까지 회전하는 숫자 입니다!
|
staticgetset |
채널당 비신뢰 커맨드 제한을 위해서 처리당 한번 사용됨( 정지 후에 많은 채널들이 여전히 수많은 비신뢰 커맨드들의 원인일 수 있습니다)