Photon Unity Networking  v1.81
English | 日本語 | 한국
Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | Properties | List of all members
PhotonNetwork Class Reference

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< FriendInfoFriends [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< TypedLobbyInfoLobbyStatistics [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...
 

Detailed Description

PhotonNetwork 플러그인을 사용하기 위한 메인 클래스. 이 클래스는 static 입니다.

Member Function Documentation

static int PhotonNetwork.AllocateSceneViewID ( )
static

신 객체들의 유효한 viewID 를 마스터 클라이언트가 할당 하도록 합니다.

Returns
new PhotonView 에서 viewID 를 리턴하며 오류의 경우에는 -1 을 리턴 합니다.
static int PhotonNetwork.AllocateViewID ( )
static

현재/로컬 플레이어의 유효한 viewID를 할당 합니다.

Returns
new PhotonView 에서 viewID 를 사용 할 수 있습니다.
static void PhotonNetwork.CacheSendMonoMessageTargets ( Type  type)
static

Component 타입을 가지고 있는 현재 존재하는 게임오브젝트들의 SendMonoMessageTargets 를 발생 시킵니다.

Parameters
typenull 이면, 컴포넌트-타입의 SendMonoMessageTargets 를 사용할 것 입니다 (디폴트로 MonoBehaviour).
static bool PhotonNetwork.CloseConnection ( PhotonPlayer  kickPlayer)
static

클라이언트에게 접속 해제를 요청 합니다.(KICK). 마스터 클라이언트만 이것을 수행 할 수 있습니다.

타겟 플레이어만 이 메시지를 수신 합니다. 플레이어는 자동으로 접속 해제되며 다른 플레이어들은 이것을 감지 하게 될 것 입니다.

Parameters
kickPlayerkick 할 PhotonPlayer.
static bool PhotonNetwork.ConnectToBestCloudServer ( string  gameVersion)
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

Parameters
gameVersion클라이언트의 버전 번호. 게임 버전에 의해 사용자가 분리 됩니다(버전간의 충돌을 방지 해 줍니다).
Returns
핑 기반으로 클라우드 서버에 접속 할 것 입니다. 만약 true 일지라도 연결이 보장 되지는 않지만 시도가 됩니다.
static bool PhotonNetwork.ConnectToMaster ( string  masterServerAddress,
int  port,
string  appID,
string  gameVersion 
)
static

주소,포트,appID 와 게임(클라이언트) 버전을 통해 Photon 마스터 서버에 접속 합니다.

Photon 클라우드에 접속하기 위해서는 유효한 AppId 가 설정파일에 반드시 있어야 합니다(Photon 클라우드 대시보드에 보여진 AppID). https://www.photonengine.com/dashboard

Photon 클라우드 접속 실패 원인:

연결 제한에 대해서는 다음 링크에서 알아 보세요: http://doc.exitgames.com/ko-kr/pun

Parameters
masterServerAddress서버의 주소 (자신의 서버 주소 또는 Photon 클라우드 주소).
port연결할 서버의 포트
appID어플리케이션 ID (Photon 클라우드는 게임에 대해 GUID 를 제공 합니다).
gameVersion클라이언트의 버전 번호. 게임 버전에 의해 사용자가 분리 됩니다(버전간의 충돌을 방지 해 줍니다).
static bool PhotonNetwork.ConnectToRegion ( CloudRegionCode  region,
string  gameVersion 
)
static

선택한 Photon 클라우드 지역으로 접속 합니다.

static bool PhotonNetwork.ConnectUsingSettings ( string  gameVersion)
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

Parameters
gameVersion이 클라이언트의 버전 번호. 게임 버전에 의해 사용자들이 분리 됩니다(버전간의 충돌을 방지 해 줍니다).
static bool PhotonNetwork.CreateRoom ( string  roomName)
static

주어진 이름으로 룸을 생성하지만 이미 룸 이름이 있는 경우에는 실패 합니다. roomName 을 null 로 하면 무작위로 룸 이름을 생성 합니다.

유일한 이름 생성이 필요 없으면 name 에 null 또는 "" 를 전달하여 서버가 알아서 roomName을 부여하도록 합니다.(GUID 문자열로)

생성된 룸은 자동적으로 현재 로비에 위치하고 있거나 참여할 로비를 명시하지 않았으면 디폴트-로비에 있게 됩니다.

마스터 서버에서만 호출 하세요. 내부적으로 마스터는 서버 주소와 같이 응답할 것입니다(그리고 필요시 roomName 과 같이). 둘 다 지정된 게임서버와 roomName으로 전환하기 위해서 내부적으로 사용합니다.

PhotonNetwork.autoCleanUpPlayerObjects 는 룸의 AutoCleanUp 프로퍼티로 되고 이 룸에 참여하는 모든 클라이언트에의해 사용 됩니다.

Parameters
roomName생성할 유일한 룸의 이름
Returns
오퍼레이션이 큐에 들어갔으면 전송될 것 입니다.
static bool PhotonNetwork.CreateRoom ( string  roomName,
RoomOptions  roomOptions,
TypedLobby  typedLobby 
)
static

룸을 생성하고 만약 기존의 룸이 있으면 실패 합니다. 마스터 서버에서만 호출 될 수 있습니다.

성공하면 OnCreatedRoom 과 OnJoinedRoom 콜백이 호출 됩니다(OnJoinedRoom 은 첫 번째 참가자이기 때문에 발생합니다). 만약 룸을 생성할 수 없으면 (이미 존재하고 있기 때문에), OnPhotonCreateRoomFailed 이 호출 됩니다.

유일한 이름으로 룸 생성을 원하지 않으면 null 또는 "" 을 전달하여 서버가 roomName을 할당합니다(GUID 문자열로).

룸은 어떤 로비에서도 생성할 수 있습니다. 로비는 룸 생성 전에 존재할 필요는 없습니다(로비는 필요에 따라 자동 생성 됩니다) 로비는 서버측에서 룸을 분리하는데 유용하게 사용할 수 있습니다. 이를 통해 로비에 룸 목록을 관리할 수 있을 정도로 짧게 유지 시킬 수 있습니다. typedLobby 파라미터를 설정 했다면 룸은 그 로비에 생성 될 것 입니다. typedLobby 를 설정하지 않았다면 룸은 자동으로 현재 활성화된 로비(있다면) 또는 디폴트 로비에 위치하게 될 것 입니다.

마스터 서버에서만 호출 하세요. 내부적으로 마스터 서버는 서버-주소(그리고 필요시 roomName)로 응답할 것 입니다. 둘 다 지정된 게임서버와 roomName으로 전환하기 위해서 내부적으로 사용합니다.

PhotonNetwork.autoCleanUpPlayerObjects 는 룸의 AutoCleanUp 프로퍼티로 되고 이 룸에 참여하는 모든 클라이언트에의해 사용 됩니다.

Parameters
roomName생성할 유일한 룸 이름. null 또는 "" 를 전달하면 서버가 이름을 생성 해 줍니다.
roomOptionsmaxPlayers, 초기 룸 프로퍼티 등과 같은 일반적인 룸의 옵션.RoomOptions 타입 참조.
typedLobbynull 이면, 룸은 현재 사용되고 있는 로비에서 자동으로 생성됩니다. (디폴트 값으로 명시적으로 로비에 참여하지 않는 한).
Returns
오퍼레이션이 큐에 들어가면 전송 됩니다.
static bool PhotonNetwork.CreateRoom ( string  roomName,
RoomOptions  roomOptions,
TypedLobby  typedLobby,
string[]  expectedUsers 
)
static

룸을 생성하고 이미 존재하고 있다면 실패 합니다. 마스터 서버에서만 호출 될 수 있습니다.

성공 했을 때 OnCreatedRoom 과 OnJoinedRoom 콜백을 호출 합니다(OnJoinedRoom 은 첫 번째 플레이어인 경우에 호출 됩니다). 룸이 생성 될 수 없으면(이미 룸이 존재하기 때문에), OnPhotonCreateRoomFailed 이 호출 됩니다.

유일한 이름으로 룸을 생성할 필요가 없으면 이름을 null 또는 "" 로 전달하면 서버가 roomName을 지정 할 것 입니다(GUID 문자열로).

룸은 어떤 로비에서도 생성할 수 있습니다. 로비는 룸 생성 전에 존재할 필요는 없습니다(로비는 필요에 따라 자동 생성 됩니다) 로비는 서버측에서 룸을 분리하는데 유용하게 사용할 수 있습니다. 이를 통해 로비에 룸 목록을 관리할 수 있을 정도로 짧게 유지 시킬 수 있습니다. typedLobby 파라미터를 설정 했다면 룸은 그 로비에 생성 될 것 입니다. typedLobby 를 설정하지 않았다면 룸은 자동으로 현재 활성화된 로비(있다면) 또는 디폴트 로비에 위치하게 될 것 입니다.

마스터 서버에서만 호출 하세요. 내부적으로 마스터 서버는 서버-주소(그리고 필요시 roomName)로 응답할 것 입니다. 둘 다 지정된 게임서버와 roomName으로 전환하기 위해서 내부적으로 사용합니다.

PhotonNetwork.autoCleanUpPlayerObjects 는 룸의 AutoCleanUp 프로퍼티로 되고 이 룸에 참여하는 모든 클라이언트에의해 사용 됩니다.

expectedUsers 배열을 정의하여 다른 플레이어가 참여할 수 없도록 이 플레이어들의 슬롯을 예약 할 수 있습니다. Photon 에서 이에 상응하는 기능은 "슬롯 예약" 이라고 하며 도큐먼트 페이지에서 확인하실 수 있습니다.

Parameters
roomName생성할 유일한 룸 이름. null 또는 "" 를 전달하면 서버가 이름을 생성 해 줍니다.
roomOptionsmaxPlayers, 초기 룸 프로퍼티 등과 같은 일반적인 룸의 옵션.RoomOptions 타입 참조.
typedLobbynull 이면 , 룸은 현재 사용되고 있는 로비에서 자동으로 생성됩니다. (디폴트 값으로 명시적으로 로비에 참여하지 않는 한).
expectedUsersUserId의 선택적인 사용자 리스트로 게임에 참여가 예상되고 슬롯을 이 플레이어들에게 부여 함.
Returns
오퍼레이션이 큐에 들어 갔으면 전송 됩니다.
static void PhotonNetwork.Destroy ( PhotonView  targetView)
static

PhotonView 가 static 또는 이 클라이언트의 제어하에 있지 않으면 PhotonView와 연관된 게임오브젝트를 네트워크에서 제거 합니다.

룸에 있을 동안 제거되는 네트워크 오브젝트는 다음과 같습니다:

  • 서버의 룸 버퍼로 부터 오는 인스턴스 생성 호출 제거.
  • PhotonNetwork.Instantiate 호출로 비간접적으로 생성된 PhotonViews의 RPC 버퍼 제거.
  • 다른 클라이언트들에게 게임 오브젝트 제거 하라는 메시지 전송(네트워크 Lag 에 영향을 미침).

일반적으로 룸을 떠날 때 게임오브젝트들은 자동으로 제거 됩니다. 룸에 있지 않을 동안 게임오브젝트를 제거해야 한다면 Destroy 는 로컬에서만 수행 됩니다.

네트워크 객체들을 제거 하는 것은 PhotonNetwork.Instantiate() 에 의해서 생성된 것에만 동작 합니다. 씬에서 로드된 객체들은 PhotonView 컴포넌트를 가지고 있어도 무시됩니다.

게임 오브젝트는 이 클라이언트의 제어 하에 있어야 합니다:

  • 이 클라이언트에 의해 인스턴스가 생성되고 소유 됨.
  • 룸을 나간 플레이어들의 인스턴스생성된 객체들은 마스터 클라이언트에 의해 제어 됩니다.
  • 씬이 소유한 게임 오브젝트들은 마스터 클라이언트에 의해 제어 됩니다.
  • 클라이언트가 룸에 없는 동안 게임오브젝트는 제거 될 수 있습니다.
Returns
없습니다. 이슈가 발생 했을 때 에러 디버그 로그를 확인 해 주세요.
static void PhotonNetwork.Destroy ( GameObject  targetGo)
static

static 이 아니거나 이 클라이언트의 통제하에 있지 않은 게임오브젝트 네트워크-제거.

네트워크 게임오브젝트를 제거하면 다음도 포함됩니다:

  • 서버의 룸 버퍼로 부터 오는 인스턴스생성 호출 제거.
  • PhotonNetwork.Instantiate 호출로 비간접적으로 생성된 PhotonViews의 RPC 버퍼 제거.
  • 다른 클라이언트들에게 게임 오브젝트를 제거 하라는 메시지 전송(네트워크 Lag 에 영향을 미침).

일반적으로 룸을 떠날 때 게임오브젝트들은 자동으로 제거 됩니다. 룸에 있지 않을 동안 게임 오브젝트를 제거해야 한다면 Destroy 는 로컬에서만 수행 됩니다.

네트워크 객체들을 제거 하는 것은 PhotonNetwork.Instantiate() 에 의해서 생성된 것에만 동작 합니다. 씬에서 로드된 객체들은 PhotonView 컴포넌트를 가지고 있어도 무시됩니다.

게임오브젝트는 이 클라이언트의 제어하에 있어야 합니다:

  • 이 클라이언트에 의해 인스턴스가 생성되고 소유 됨.
  • 룸을 나간 플레이어들의 인스턴스생성된 객체들은 마스터 클라이언트에 의해 제어 됩니다.
  • 씬이 소유한 게임오브젝트들은 마스터 클라이언트에 의해 제어 됩니다.
  • 클라이언트가 룸에 없는 동안 게임오브젝트는 제거 될 수 있습니다.
Returns
없습니다. 이슈가 발생 했을 때 에러 디버그 로그를 확인 해 주세요.
static void PhotonNetwork.DestroyAll ( )
static

룸 안의 모든 게임오브젝트, PhotonView와 RPC들의 네트워크-제거. 서버로 부터 버퍼화된 모든 것을 제거 합니다. 마스터 클라이언트에 의해서만 호출 될 수 있습니다(누구에게나)

마스터 클라이언트만 호출 할 수 있습니다 (누구나). Destroy 메소드와는 다르게 이 메소드는 서버의 룸 버퍼에 있는 모든 것을 제거 합니다. 만약 게임 버퍼가 Instantiate 와 RCP 호출 뒤에 있다면 서버로 부터 제거 될 것 입니다.

제거는 다음 사항이 포함됩니다:

  • 서버의 룸 버퍼로 부터 오는 모든 것을 제거 (Instantiate, RPCs, 버퍼된 모든 것).
  • 다른 클라이언트들에게 게임 오브젝트 제거 하라는 메시지 전송(네트워크 Lag 에 영향을 미침).

네트워크 객체들을 제거 하는 것은 PhotonNetwork.Instantiate() 에 의해서 생성된 것에만 동작 합니다. 씬에서 로드된 객체들은 PhotonView 컴포넌트를 가지고 있어도 무시됩니다.

Returns
없습니다. 이슈가 발생 했을 때 에러 디버그 로그를 확인 해 주세요.
static void PhotonNetwork.DestroyPlayerObjects ( PhotonPlayer  targetPlayer)
static

모든 게임오브젝트들, PhotonView와 targetPlayer의 RPC들의 네트워크-제거. 로컬 플레이어("자기자신"만) 또는 마스터 클라이언트 (누구나) 만 호출 될 수 있습니다.

네트워크 게임오브젝트를 제거하면 다음도 포함됩니다:

  • 서버의 룸 버퍼로 부터 오는 인스턴스생성 호출 제거.
  • PhotonNetwork.Instantiate 호출로 비간접적으로 생성된 PhotonViews의 RPC 버퍼 제거.
  • 다른 클라이언트들에게 게임 오브젝트를 제거 하라는 메시지 전송(네트워크 Lag 에 영향을 미침).

네트워크 객체들을 제거 하는 것은 PhotonNetwork.Instantiate() 에 의해서 생성된 것에만 동작 합니다. 씬에서 로드된 객체들은 PhotonView 컴포넌트를 가지고 있어도 무시됩니다.

Returns
없습니다. 이슈가 발생 했을 때 에러 디버그 로그를 확인 해 주세요.
static void PhotonNetwork.DestroyPlayerObjects ( int  targetPlayerId)
static

모든 게임오브젝트, PhotonView와 이 플레이어(ID를 통해)의 RPC 들을 네트워크-제거. 로컬 플레이어("자기자신"만) 또는 마스터 클라이언트 (누구나) 만 호출 될 수 있습니다.

네트워크 게임오브젝트를 제거하면 다음도 포함됩니다:

  • 서버의 룸 버퍼로 부터 오는 인스턴스생성 호출 제거.
  • PhotonNetwork.Instantiate 호출로 비간접적으로 생성된 PhotonViews의 RPC 버퍼 제거.
  • 다른 클라이언트들에게 게임 오브젝트 제거 하라는 메시지 전송(네트워크 Lag 에 영향을 미침).

네트워크 객체들을 제거 하는 것은 PhotonNetwork.Instantiate() 에 의해서 생성 된 것에만 동작 합니다. 씬에서 로드된 객체들은 PhotonView 컴포넌트를 가지고 있어도 무시됩니다.

Returns
없습니다. 이슈가 발생 했을 때 에러 디버그 로그를 확인 해 주세요.
static void PhotonNetwork.Disconnect ( )
static

이 클라이언트를 Photon 서버에서 접속 해제 합니다. 룸을 나가고 완료시 OnDisconnectedFromPhoton 이 호출 됩니다.

접속 해제 되었을 때 클라이언트는 "disconnecting" 메시지를 서버에게 전송 할 것 입니다. 이렇게 하면 동일한 룸에 있는 플레이어들에게 나가기/연결해제 속도를 올려주게 됩니다.(그렇지 않으면 서버가 이 클라이언트 연결이 타임아웃 될 것 입니다). 오프라인 모드에서 사용할 때 , OnDisconnectedFromPhoton 에서 상태-변화와 이벤트-호출은 즉시 일어납니다. 오프라인 모드가 또한 false 로 설정 됩니다. 연결해제 되자마자 클라이언트는 다시 접속 할 수 있습니다. ConnectUsingSettings 를 사용 하세요.

delegate void PhotonNetwork.EventCallback ( byte  eventCode,
object  content,
int  senderId 
)

OnEventCall 에서 사용할 수 있는 delegate 를 정의 합니다.

eventCode < 200 인 모든 것은 delegate 로 포워딩 됩니다.

Parameters
eventCode수신된 이벤트에 지정된 코드.
content전송자가 이벤트에 넣은 내용
senderId이벤트를 전송한 플레이어의 ID. "룸"이 전송했으면 0 이 될 수 있습니다.
static void PhotonNetwork.FetchServerTimestamp ( )
static

서버 타임 스탬프를 갱신 합니다 (오퍼레이션 동기화, 라운드트립을 가져 옵니다).

연결이 좋지 않은 경우 타임스탬프를 사용할 수 없거나 부정확한 경우에 유용합니다.

static bool PhotonNetwork.FindFriends ( string[]  friendsToFind)
static

친구들의 목록에 대한 룸과 온라인 상태를 요청 하고 결과를 PhotonNetwork.Friends 에 저장 합니다.

선택된 사용자들의 목록으로 룸을 찾기 위한 것으로 마스터 서버에서만 동작 합니다.

결과는 PhotonNetwork.Friends 에 저장 됩니다. OpFindFriends 를 사용하여 리스트가 초기화 됩니다(사용전에는 null 입니다). 리스트를 갱신 하려면 FindFriends 를 다시 호출 하세요(5 초 또는 10, 20초).

사용자들은 PhotonNetwork.AuthValues 내의 유일한 userId 를 설정하여 구별 할 수 있습니다. 어떻게 이것이 설정되고 사용하는지에 대해서는 AuthenticationValues 를 참고하시기 바랍니다.

친구들의 목록은 Photon 이 제공하지 않으므로 외부 소스에서 가져와야 합니다.

내부: 서버는 2개의 정보 배열을 포함하여 리턴 해 줍니다 (각 인덱스는 요청된 친구와 일치 합니다): 온라인 상태 ParameterCode.FindFriendsResponseOnlineList = bool[] 룸 이름 ParameterCode.FindFriendsResponseRoomIdList = string[] (빈 문자열은 룸에 없다는 것을 나타냄)

Parameters
friendsToFind친구의 배열 (유일한 playName과 AUthoValues 인지 확인 하세요).
Returns
오퍼레이션이 전송 될 수 있다면 (연결 필요, 한번에 하나의 요청만 허용 됩니다). 오프라인 모드에서는 항상 false 입니다.
static HashSet<GameObject> PhotonNetwork.FindGameObjectsWithComponent ( Type  type)
static

지정된 타입의 컴포넌트를 가지고 있는 게임오브젝트를 찾습니다 (FindObjectsOfType 를 사용 함).

Parameters
type타입은 반드시 Component 이어야 합니다
Returns
지정된 컴포넌트 타입을 가지고 있는 게임오브젝트들의 HashSet
static bool PhotonNetwork.GetCustomRoomList ( TypedLobby  typedLobby,
string  sqlLobbyFilter 
)
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

Parameters
typedLobby쿼리할 로비. SqlLobby 타입이어야 합니다.
sqlLobbyFiltersql 쿼리 문장.
Returns
오퍼레이션이 전송될 수 있으면 (연결되어 있어야 합니다).
static int PhotonNetwork.GetPing ( )
static

Photon 서버로의 현재 라운드 트립.

Returns
라운드 트립 타임 (서버로 가서 되돌아오는 시간).
static RoomInfo [] PhotonNetwork.GetRoomList ( )
static

RoomInfo 배열로 현재 알고 있는 룸들을 얻습니다. 로비에 있는 동안 사용할 수 있으며 갱신됩니다(insideLobby 값을 체크 하세요).

이 리스트는 내부 룸들의 캐시된 복사본 입니다. 따라서 필요시 각 프레임에서 접근 할 수 있습니다. RoomInfo 마다 룸이 가득 차 있는지 playerCount 와 maxPlayers 값을 비교하여 참여 하기 전에 체크 할 수 있습니다.

룸의 이름은 반드시 참여할 때 사용되어야 합니다 (JoinRoom 을 통해서).

폐쇄된 룸들도 로비에 나열 되지만 참여할 수는 없습니다. 어떤 플레이어도 Room.visibleRoom.open 을 설정하여 매치메이킹에 보여지지 않게 할 수 있으며 폐쇄 할 수 있습니다.

Returns
로비내의 현재 룸들의 RoomInfo[].
static void PhotonNetwork.InitializeSecurity ( )
static

유니티 네트워킹과만 호환 되도록 사용. 암호화는 접속시 자동적으로 초기화 됩니다.

static GameObject PhotonNetwork.Instantiate ( string  prefabName,
Vector3  position,
Quaternion  rotation,
int  group 
)
static

네트워크 상에서 prefab 의 인스턴스를 생성 합니다. 프리팹은 루트의 "Resources" 폴더에 있어야 합니다.

Resources 폴더에서 프리팹을 사용하는 대신에 수동으로 인스턴스 생성을 하고 PhotonView 를 할당 할 수 있습니다. 문서를 살펴보세요.

Parameters
prefabName인스턴스화 할 프리팹 이름.
position인스턴스에 적용될 Vector3 Position.
rotation인스턴스에 적용될 Rotation Quaternion.
groupPhotonView 의 그룹.
Returns
PhotonView 가 초기화된 새로운 게임오브젝트의 인스턴스.
static GameObject PhotonNetwork.Instantiate ( string  prefabName,
Vector3  position,
Quaternion  rotation,
int  group,
object[]  data 
)
static

네트워크 상에서 prefab 의 인스턴스를 생성 합니다. 프리팹은 루트의 "Resources" 폴더에 있어야 합니다.

Resources 폴더에서 프리팹을 사용하는 대신에 수동으로 인스턴스 생성을 하고 PhotonView 를 할당 할 수 있습니다. 문서를 살펴보세요.

Parameters
prefabName인스턴스화 할 프리팹 이름.
position인스턴스에 적용될 Vector3 Position.
rotation인스턴스에 적용될 Rotation Quaternion.
groupPhotonView 의 그룹.
data선택적인 인스턴스 생성 데이터. PhotonView.instantiationData 에 저장됩니다.
Returns
PhotonView 가 초기화된 새로운 게임오브젝트의 인스턴스.
static GameObject PhotonNetwork.InstantiateSceneObject ( string  prefabName,
Vector3  position,
Quaternion  rotation,
int  group,
object[]  data 
)
static

네트워크를 통하여 씬이 소유한 프리팹 인스턴스를 생성 합니다. 마스터 클라이언트가 PhotonView 들을 제어 합니다. 이 프리팹은 루트의 "Resources" 폴더에 있어야 합니다.

마스터 클라이언트 만이 씬 객체 인스턴스를 생성할 수 있습니다. Resources 폴더에서 프리팹을 사용하는 대신에 수동으로 인스턴스 생성을 하고 PhotonView 를 할당 할 수 있습니다. 문서를 살펴보세요.

Parameters
prefabName인스턴스화 할 프리팹 이름.
position인스턴스에 적용될 Vector3 Position.
rotation인스턴스에 적용될 Rotation Quaternion.
groupPhotonView 의 그룹.
data선택적인 인스턴스 생성 데이터. PhotonView.instantiationData 에 저장됩니다.
Returns
PhotonView 가 초기화된 새로운 게임오브젝트의 인스턴스.
static bool PhotonNetwork.JoinLobby ( )
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 bool PhotonNetwork.JoinLobby ( TypedLobby  typedLobby)
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 (구현하였다면)를 호출 할 것입니다.

Parameters
typedLobbyTyped 로비 참여(이름과 타입이 있어야 합니다).
static bool PhotonNetwork.JoinOrCreateRoom ( string  roomName,
RoomOptions  roomOptions,
TypedLobby  typedLobby 
)
static

지정된 이름의 룸에 참여하거나 생성 합니다 - 누군가가 룸을 이미 생성했는지에 대해 전혀 신경 쓸 필요가 없습니다.

플레이어들의 그룹을 동일한 룸에 입장 시키기 위한 것을 쉽게 처리 해 줍니다. 그룹이 roomName 을 교환하기만 하면 어떤 플레이어라도 JoinOrCreateRoom 를 호출 할 수 있고 누가 룸을 생성했고 참여 한 것인지에 대한 것은 문제가 되지 않습니다.

roomOptions 과 typedLobby 파라미터는 클라이언트가 룸을 생성 할 경우에만 사용 됩니다. OnCreatedRoom 콜백을 받았으면 이 클라이언트가 룸을 생성 한 클라이언트라는 것을 알 수 있습니다(OnJoinedRoom 도 나중에 호출 됩니다).

Parameters
roomName참여할 유일한 룸 이름.
roomOptionsmaxPlayers, 초기 룸 프로퍼티 등과 같은 일반적인 룸의 옵션. RoomOptions 타입 참조.
typedLobbynull 이면, 룸은 현재 사용되고 있는 로비에서 자동으로 생성됩니다. (디폴트 값으로 명시적으로 로비에 참여하지 않는 한).
Returns
오퍼레이션이 큐에 들어 갔을 때 전송 됩니다.
static bool PhotonNetwork.JoinOrCreateRoom ( string  roomName,
RoomOptions  roomOptions,
TypedLobby  typedLobby,
string[]  expectedUsers 
)
static

지정된 이름의 룸에 참여하거나 생성 합니다 - 누군가가 룸을 이미 생성했는지에 대해 전혀 신경 쓸 필요가 없습니다.

플레이어들의 그룹을 동일한 룸에 입장 시키기 위한 것을 쉽게 처리 해 줍니다. 그룹이 roomName 을 교환하기만 하면 어떤 플레이어라도 JoinOrCreateRoom 를 호출 할 수 있고 누가 룸을 생성했고 참여 한 것인지에 대한 것은 문제가 되지 않습니다.

roomOptions 과 typedLobby 파라미터는 클라이언트가 룸을 생성 할 경우에만 사용 됩니다. OnCreatedRoom 콜백을 받았으면 이 클라이언트가 룸을 생성 한 클라이언트라는 것을 알 수 있습니다(OnJoinedRoom 도 나중에 호출 됩니다).

expectedUsers 배열을 정의하여 다른 플레이어가 참여할 수 없도록 이 플레이어들의 슬롯을 예약 할 수 있습니다. Photon 에서 상응하는 기능은 "슬롯 예약" 이라고 하며 문서 페이지에서 찾을 수 있습니다.

Parameters
roomName참여할 유일한 룸 이름.
roomOptionsmaxPlayers, 초기 룸 프로퍼티 등과 같은 일반적인 룸의 옵션.RoomOptions 타입 참조.
typedLobbynull 이면, 룸은 현재 사용되고 있는 로비에서 자동으로 생성됩니다. (디폴트 값으로 명시적으로 로비에 참여하지 않는 한).
expectedUsersUserId의 선택적인 사용자 리스트로 게임에 참여가 예상되고 슬롯을 이 플레이어들에게 부여 함.
Returns
오퍼레이션이 큐에 들어 갔을 때 전송 됩니다.
static bool PhotonNetwork.JoinRandomRoom ( )
static

현재 사용하고 있는 로비에서 사용할 수 있는 룸에 참여 하고 사용할 수 있는 룸이 없으면 실패 합니다.

룸은 필요에 의해서 생성 되어지는 로비에 생성 될 수 있습니다. 실제 로비에 참여하지 않고 룸에 참가 할 수 있습니다. TypedLobby 파라미터를 가진 JoinRandomRoom 를 오버로드 하여 사용하세요.

이 메소드는 하나의 로비에 붙여진 룸들을 매치할 것 입니다! 로비를 많이 사용하고 있다면 맞는 룸을 찾기 위하여 JoinRandomRoom 메소드를 반복 해야 할 것 입니다. 이 메소드는 현재 활성화된 로비내의 룸을 찾거나 (참여한 로비가 없으면) 디폴트 로비에서 찾습니다.

실패하면 룸을 생성 할 수 있습니다(그리고 이 룸을 다음 사용자가 JoinRandomRoom 에서 사용합니다) 선택적으로, 잠시 후에 다시 시도해 봅니다.

static bool PhotonNetwork.JoinRandomRoom ( Hashtable  expectedCustomRoomProperties,
byte  expectedMaxPlayers 
)
static

커스텀 프로퍼티 조건에 맞는 오픈되어 있는 룸에 참여를 시도 하지만 사용할 수 있는 게 없으면 실패 합니다.

룸은 필요에 의해서 생성되어지는 로비에 생성 될 수 있습니다. 실제 로비에 참여하지 않고 룸에 참가 할 수 있습니다. TypedLobby 파라미터를 가진 JoinRandomRoom 를 오버로드 하여 사용하세요.

이 메소드는 하나의 로비에 붙여진 룸들을 매치할 것 입니다! 로비를 많이 사용하고 있다면 맞는 룸을 찾기 위하여 JoinRandomRoom 메소드를 반복 해야 할 것 입니다. 이 메소드는 현재 활성화된 로비내의 룸을 찾거나 (참여한 로비가 없으면) 디폴트 로비에서 찾습니다.

실패하면 룸을 생성 할 수 있습니다(그리고 이 룸을 다음 사용자가 JoinRandomRoom 에서 사용합니다) 선택적으로, 잠시 후에 다시 시도해 봅니다.

Parameters
expectedCustomRoomProperties커스텀 프로퍼티들과 매치하는 룸의 필터들 (문자열 키들과 값들). 무시하려면 null 을 전달 하세요
expectedMaxPlayers특정 maxplayer 설정 필터. 모든 maxPlayer 값을 수용하려면 0 으로 설정합니다.
Returns
오퍼레이션이 큐에 들어 갔을 때 전송 됩니다.
static bool PhotonNetwork.JoinRandomRoom ( Hashtable  expectedCustomRoomProperties,
byte  expectedMaxPlayers,
MatchmakingMode  matchingType,
TypedLobby  typedLobby,
string  sqlLobbyFilter,
string[]  expectedUsers = null 
)
static

커스텀 프로퍼티와 맞는 오픈된 룸에 참가를 시도 합니다. 사용할 수 있는 룸이 없으면 실패 합니다.

룸은 필요에 의해서 생성되어지는 로비에 생성 될 수 있습니다. 이 오버로드를 통하여 실제 로비에 참여하지 않고 룸에 참가 할 수 있습니다.

이 메소드는 하나의 로비에 붙여진 룸들을 매치할 것 입니다! 로비를 많이 사용하고 있다면 맞는 룸을 찾기 위하여 JoinRandomRoom 메소드를 반복 해야 할 것 입니다. 이 메소드는 현재 활성화된 로비내의 룸을 찾거나 (참여한 로비가 없으면) 디폴트 로비에서 찾습니다.

실패하면 룸을 생성 할 수 있습니다(그리고 이 룸을 다음 사용자가 JoinRandomRoom 에서 사용합니다) 선택적으로, 잠시 후에 다시 시도해 봅니다.

오프라인 모드에서 룸은 생성되지만 JoinRandomRoom 을 호출 한 모든 파라미터들은 설정되지 않고 무시 됩니다.OnJoinedRoom 이벤트/콜백이 호출 됩니다 (enum PhotonNetworkingMessage 를 참고 하세요).

expectedUsers 배열을 정의하여 다른 플레이어가 참여할 수 없도록 이 플레이어들의 슬롯을 예약 할 수 있습니다. Photon 에서 상응하는 기능은 "슬롯 예약" 이라고 하며 문서 페이지에서 찾을 수 있습니다.

Parameters
expectedCustomRoomProperties커스텀 프로퍼티들과 매치하는 룸의 필터들 (문자열 키들과 값들). 무시하려면 null 을 전달 하세요
expectedMaxPlayers특정 maxplayer 설정 필터. 모든 maxPlayer 값을 수용하려면 0 으로 설정합니다.
matchingType사용할 수 있는 매칭 알고리즘에서 선택. MatchmakingMode enum 을 참고 해 보세요.
typedLobbynull 이면 , 룸은 현재 사용되고 있는 로비에서 자동으로 생성됩니다. (디폴트 값으로 명시적으로 로비에 참여하지 않는 한).
sqlLobbyFilterSQL-타입 로비의 필터-문자열.
expectedUsersUserId의 선택적인 사용자 리스트로 게임에 참여가 예상되고 슬롯을 이 플레이어들에게 부여 함.
Returns
오퍼레이션이 큐에 들어 갔을 때 전송 됩니다.
static bool PhotonNetwork.JoinRoom ( string  roomName)
static

roomname 으로 룸에 참여 하고 성공시에는 OnJoinedRoom() 이 호출 됩니다. 로비에 영향을 받지 않습니다.

성공하면 OnJoinedRoom() 이 호출 됩니다. 이 콜백에서 룸에 참여하는 것에 대한 것을 구현 할 수 있습니다.

룸이 꽉 찼거나 룸이 유효하지 않는다면(참여를 시도 했을 때 비어 있을 수 도 있습니다) JoinRoom이 실패합니다. 오류가 발생한 경우는 OnPhotonJoinRoomFailed() 콜백을 구현 하여 처리 합니다.

로비 목록에서 룸에 참여 하기 위해서는 roomName 으로 RoomInfo.name 를 사용 하세요. 여러 개의 로비를 사용함에도 불구 하고 roomName 은 어플리케이션에서 항상 "전역"에서 사용할 수 있으므로 특정 로비를 지정할 필요가 없습니다. 마스터 서버가 룸을 찾을 것 입니다. Photon 클라우드에서 어플리케이션은 AppId, Game버전과 PUN 버전으로 정의 됩니다.

PhotonNetworkingMessage.OnPhotonJoinRoomFailed PhotonNetworkingMessage.OnJoinedRoom

Parameters
roomName참여할 유일한 룸 이름.
Returns
오퍼레이션이 큐에 들어 갔을 때 전송 됩니다.
static bool PhotonNetwork.JoinRoom ( string  roomName,
string[]  expectedUsers 
)
static

roomname 으로 룸에 참여하고 성공시에는 OnJoinedRoom() 이 호출 됩니다. 로비에 영향을 받지 않습니다.

성공하면 OnJoinedRoom() 이 호출 됩니다. 이 콜백에서 룸에 참여하는 것에 대한 것을 구현 할 수 있습니다.

룸이 꽉 찼거나 룸이 유효하지 않는다면(참여를 시도 했을 때 비어 있을 수 도 있습니다) JoinRoom이 실패합니다. 오류가 발생한 경우에 대해서는 OnPhotonJoinRoomFailed() 콜백을 구현 하여 처리 합니다.

로비 목록에서 룸에 참여 하기 위해서는 roomName 으로 RoomInfo.name 를 사용 하세요. 여러개의 로비를 사용함에도 불구 하고 roomName 은 어플리케이션에서 항상 "전역"에서 사용할 수 있으므로 특정 로비를 지정할 필요가 없습니다. 마스터 서버가 룸을 찾을 것 입니다. Photon 클라우드에서 어플리케이션은 AppId, Game버전과 PUN 버전으로 정의 됩니다.

expectedUsers 배열을 정의하여 다른 플레이어가 참여할 수 없도록 이 플레이어들의 슬롯을 예약 할 수 있습니다. Photon 에서 상응하는 기능은 "슬롯 예약" 이라고 하며 문서 페이지에서 찾을 수 있습니다.

PhotonNetworkingMessage.OnPhotonJoinRoomFailed PhotonNetworkingMessage.OnJoinedRoom

Parameters
roomName참여할 유일한 룸 이름.
expectedUsersUserId의 선택적인 사용자 리스트로 게임에 참여가 예상되고 슬롯을 이 플레이어들에게 부여 함.
Returns
오퍼레이션이 큐에 들어 갔을 때 전송 됩니다.
static bool PhotonNetwork.LeaveLobby ( )
static

사용할 수 있는 룸에 대한 업데이트 수신을 중지 하기 위해서는 로비를 빠져나가십시오.

이것은 PhotonNetwork.lobby 를 리셋 하지는 않습니다! 나중에 특정한 로비에 참여 할 수 있도록 해주게 됩니다.

countOfPlayers, countOfPlayersOnMaster, countOfPlayersInRooms 와 countOfRooms 값들은 로비에 있지 않아도 수신받을 수 있습니다.

로비 내에 없어도 JoinRandomRoom을 사용할 수 있습니다! 연결 할 때 로비에 참가하지 않으려면 autoJoinLobby 를 이용 합니다.

static bool PhotonNetwork.LeaveRoom ( )
static

현재 참여하고 있는 룸을 떠나고 마스터 서버로 되돌아 가서 룸에 참여하거나 생성 할 수 있습니다(주석을 참고 하세요).

이 메소드는 autoCleanUp 을 false 로 설정하지 않았으면 PhotonView 의 모든 (네트워크) 게임오브젝트들을 제거 합니다. 마스터 서버도 되돌아 갑니다.

오프라인 모드에서는 로칼의 "fake" 룸은 제거되고 OnLeftRoom 이 곧바로 호출 됩니다.

static void PhotonNetwork.LoadLevel ( int  levelNumber)
static

메시지 큐를 잠시 멈추기 위하여 로딩 레벨을 Wrap 합니다. 선택적으로 룸 안에서 로드된 레벨과 동기화 합니다.

룸 내의 로드된 레벨과 동기화를 위해서 PhotonNetwork.automaticallySyncScene 을 true 로 설정 하세요. 룸의 마스터 클라이언트는 룸 내의 다른 플레이어와 로드된 레벨을 동기화 할 것 입니다.

레벨을 로드하고 있는 동안에 다른 플레이어에 의해 수신된 메시지를 처리 하지 않는 것이 합리적 입니다. 이 메소드는 PhotonNetwork.isMessageQueueRunning = false 로 설정하고 레벨이 로드되었을 때 큐를 enable 하여 관리 합니다.

다른 신을 로드 하기전에 RCP 를 발생 시키지 않는지 검토 해 주세요 ( 동일한 게임오브젝트와 PhotonView 를 가지고 있지 않는 씬 입니다). OnJoinedRoom 에서 RPC를 호출 할 수 있습니다.

Application.LoadLevel 을 사용 합니다.

Parameters
levelNumber로드할 레벨 번호. 레벨 번호를 사용 할 때 모든 클라이언트가 동일한 값인지 확인 해 주시기 바랍니다.
static void PhotonNetwork.LoadLevel ( string  levelName)
static

네트워크 메시지 큐를 잠시 멈추기 위하여 레벨 로딩을 Wrap 합니다. 선택적으로 룸 안의 로드된 레벨과 동기화 합니다.

레벨을 로드하고 있는 동안에 다른 플레이어에 의해 수신된 메시지를 처리 하지 않는 것이 합리적 입니다. 이 메소드는 PhotonNetwork.isMessageQueueRunning = false 로 설정하고 레벨이 로드되었을 때 큐를 enable 하여 관리 합니다.

룸 내의 로드된 레벨과 동기화를 위해서 PhotonNetwork.automaticallySyncScene 을 true 로 설정 하세요. 룸의 마스터 클라이언트는 룸 내의 다른 플레이어와 로드된 레벨을 동기화 할 것 입니다.

다른 씬을 로드 하기전에 RCP 를 발생 시키지 않는지 검토 해 주세요 ( 동일한 게임오브젝트와 PhotonView 를 가지고 있지 않는 씬 입니다). OnJoinedRoom 에서 RPC를 호출 할 수 있습니다.

Application.LoadLevel 을 사용 합니다.

Parameters
levelName로드할 레벨 번호. 레벨 번호를 사용 할 때 모든 클라이언트가 동일한 값인지 확인 해 주시기 바랍니다.
static void PhotonNetwork.NetworkStatisticsReset ( )
static

트래픽 통계를 재설정하고 다시 사용할 수 있도록 합니다.

static string PhotonNetwork.NetworkStatisticsToString ( )
static

NetworkStatisticsEnabled 가 사용되었을 때만 통계를 수집하는 것이 가능함.

Returns
필수 네트워킹 통계를 가진 문자열.
static void PhotonNetwork.OverrideBestCloudServer ( CloudRegionCode  region)
static

ConnectToBestCloudServer(string gameVersion) 에서 사용된 지역으로 덮어 씁니다.

모든 클라우드 서버 지역의 핑 결과로 덮어 쓰게 될 것 입니다.
플레이어 preferences 에서 선택된 지역을 수동으로 저장 할 수 있도록 사용 하세요.
노트: PhotonNetwork.ConnectToRegion 을 사용하여 (임시로) 특정 지역에 접속할 수 있습니다.

static bool PhotonNetwork.RaiseEvent ( byte  eventCode,
object  eventContent,
bool  sendReliable,
RaiseEventOptions  options 
)
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 가 전송되지는 않지만 필터로 사용 됩니다.

Parameters
eventCode이벤트 타입을 식별하는 byte. 액션별 또는 시그널별로 코드를 사용하기 원할 수 있으며 이 때는 내용을 예상 할 수 있습니다. 허용값:0 부터 199.
eventContent문자열, 바이트, 정수, 실수 그리고 이러한 타입의 배열과 같이 직렬화 할 수 있는 객체 입니다. 바이트 키를 가지고 있는 해시테이블이 내용으로 전송하기 좋은 변수 입니다.
sendReliable모든 플레이어에게 이 이벤트가 전송되는 것을 보증 합니다. ACK 를 받을 것이고 일정 수준의 대역폭이 필요하며 스킵될 수 없습니다(손실이 발생된 경우 lag 가 발생될 수 있습니다.
options이벤트를 좀 더 복잡하게 사용 할 수 있습니다. 만약 null 이면 RaiseEventOptions.Default 가 사용 될 것 입니다(이대로 사용하셔도 좋습니다).
Returns
이벤트를 전송할 수 없을 때 false 를 리턴 합니다.
static bool PhotonNetwork.Reconnect ( )
static

연결 해제가 된 이후 마스터 서버에 재접속 하기 위해 사용 될 수 있습니다.

접속이 해제 된 이후 클라이언트에서 지역 마스터 서버에 다시 접속 하기 위해 사용 할 수 있습니다. 참여했었던 룸 이름을 캐시하고 Rejoin(roomname)을 이용하여 게임으로 되돌아 갑니다. 일반적인 유즈 케이스: iOS 단말에서 잠금버튼을 누르면 즉시 접속이 해제 됩니다.

static bool PhotonNetwork.ReconnectAndRejoin ( )
static

게임플레이 하는 동안 연결이 해제 되었을 때, 이 메소드로 재연결 하여 룸에 참여 합니다.

이 메소드는 룸을 호스팅 하고 있었던 전에 참여 했던 게임서버로 직접 재접속 합니다. 룸이 닫혀 있다면 PUN 은 OnPhotonJoinRoomFailed 를 호출하고 이 클라이언트를 마스터 서버로 보낼 것 입니다.

만약 이 클라이언트가 재연결과 재참여를 시도했으면 리턴 값을 확인합니다. (조건이 맞는다면) ReconnectAndRejoin 가 false를 리턴하면 재연결과 재참여를 여전히 시도할 수 있습니다.

PhotonNetwork.ReJoin과 유사하게 이 메소드는 플레이어마다 유일한 ID (사용자ID) 가 필요 합니다.

Returns
다시 돌아갈 룸이나 게임 서버를 알 수 없으면 fasle를 리턴 합니다. 그리고 이 클라이언트는 ReconnectAndRejoin 을 다시 시도 하지 않습니다.
static void PhotonNetwork.RefreshCloudServerRating ( )
static

(현재)가장 좋은 핑이 나오는 것을 찾기 위해서 모든 클라우드 서버에 핑을 날립니다.

static bool PhotonNetwork.ReJoinRoom ( string  roomName)
static

연결 해제와 재접속 후에 룸에 되돌아 가기 위해 사용할 수 있습니다.

연결이 끊어진 이후 플레이를 계속 하기 위해서 룸으로 다시 되돌아 갈 수 있습니다. 만약 클라이언트가 빨리 재접속 할 수 있으면 Reconnect() 와 이 메소드를 사용하세요. 전에 있었던 룸 이름을 캐시하고 게임에 되돌아 가기 위해 ReJoin(roomname) 을 사용 합니다.

노트: 어떤 룸에도 재참여를 할 수 있도록 하려면 UserID를 사용해야 합니다! 그리고 RoomOptions.PlayerTtl 로 설정 해야 합니다.

중요: Instantiate() 와 RPC 사용은 아직 지원 되지 않습니다. PhotonView 의 소유자 규칙은 부드러운 게임으로의 복귀를 방해하는 요소 입니다. 대신 커스텀 프로퍼티와 이벤트 캐싱을 통한 RaiseEvent 를 사용하세요.

일반적인 유즈케이스: iOS 에서 잠금 버튼을 누르면 즉시 연결 해제가 됩니다.

static void PhotonNetwork.RemovePlayerCustomProperties ( string[]  customPropertiesToDelete)
static

"this" 플레이어의 커스텀 프로퍼티를 지역적으로 제거 합니다. 중요: 변경사항이 동기화 되지 않습니다! 룸을 전환 할 때 유용 합니다.

조심해서 이 메소드를 사용 하세요. 플레이어 사이에서 상태의 비일관성이 만들어 질 수 있습니다. 지역적으로 player.customProperties 만 변경 합니다. 게임 사이에서 커스텀 프로퍼티를 없앨 때 유용하게 사용 될 수 있습니다( 말하자면 턴, 킬수 등을 저장합니다).

SetPlayerCustomProperties() 동기화하고 룸에 있을 때 null 로 값을 설정하는데 사용될 수 있습니다. 룸에 있는 동안 "removed" 된 것으로 간주 됩니다.

customPropertiesToDelete 가 널이거나 항목이 0 개 이면 모든 커스텀 프로퍼티들은 삭제 됩니다 (새로운 해시테이블로 교체 됩니다). 제거할 키를 지정하면 지정된 것들은 해시테이블에서 제거 되지만 나머지 키들은 영향을 받지 않습니다.

Parameters
customPropertiesToDelete제거할 커스텀 프로퍼티의 키들. 주석을 참조 하세요.
static void PhotonNetwork.RemoveRPCs ( PhotonPlayer  targetPlayer)
static

targetPlayer부터 전송된 서버의 모든 버퍼된 것을 제거 합니다. 로컬 플레이어("자신"만) 또는 마스터 클라이언트(모두에게)에게만 호출 됩니다.

이 메소드는 다음이 필요 합니다:

  • targetPlayer의 클라이언트 입니다.
  • 이 클라이언트가 마스터 클라이언트 입니다 (모든 PhotonPlayer 의 RPC 들을 제거 할 수 있습니다).

만약 targetPlayer 가 동시에 RPC 를 호출하면 이것이 호출 됩니다. 네트워크 lag 는 이러한 것들이 나머지와 같이 버퍼화 되거나 제거되면 결정 됩니다.

Parameters
targetPlayer이 플레이어의 버퍼된 RPC 가 서버 버퍼에서 제거 됩니다.
static void PhotonNetwork.RemoveRPCs ( PhotonView  targetPhotonView)
static

targetPhotonView 를 통하여 전송된 모든 버퍼된 RPC 가 서버로 부터 제거 됩니다. 마스터 클라이언트와 targetPhotonView 의 소유자가 호출 할 수 있습니다.

이 메소드는 다음이 필요 합니다:

  • 이 클라이언트가 targetPhotonView 의 소유자 입니다 (이 클라이언트에 의해 인스턴스 생성 됨 ).
  • 이 클라이언트가 마스터 클라이언트 입니다 (모든 PhotonPlayer 의 RPC 들을 제거 할 수 있습니다).
Parameters
targetPhotonViewPhotonView 의 버퍼화된 RPC 들이 서버 버퍼에서 제거 됩니다.
static void PhotonNetwork.RemoveRPCsInGroup ( int  targetGroup)
static

마스터 클라이언트이거나 개별 PhotonView 를 제어 한다면 targetGroup 으로 전송된 모든 버퍼된 RPC 가 서버로 부터 제거 됩니다.

이 메소드는 다음이 필요 합니다:

  • 이 클라이언트가 마스터 클라이언트 입니다 (그룹의 모든 RPC 들을 제거 할 수 있습니다).
  • 다른 모든 클라이언트: 각 PhotonView 는 이 클라이언트가 제어 하는지 체크 됩니다. 이러한 RPC 들만 제거 됩니다.
Parameters
targetGroup관심 그룹의 모든 RPC 들이 제거 됩니다.
static void PhotonNetwork.SendOutgoingCommands ( )
static

즉시 RPC 전송과 방금 호출된 인스턴스 생성에 사용 할 수 있으므로 다른 플레이어들과 맞추어 진행 할 수 있습니다.

레벨을 로드 하기 위하여 RPC 를 사용하여 직접 로드 할 때 유용할 수 있습니다. 로딩 할 때 RPC 는 다른 플레이어에게 전송되지 않으므로 "load" RPC 가 지연 될 수 있습니다. 이 메소드를 사용하여 "다른 플레이어들" 에게 RPC 를 전송 할 수 있습니다. 메시지큐를 disable (isMessageQueueRunning 을 통하여) 하고 로드 합니다.

static void PhotonNetwork.SetLevelPrefix ( short  prefix)
static

나중에 인스턴스 생성할 PhtonView 의 레벨 프리픽스를 설정. 하나만 필요 하다면 설정 하지 마세요!

중요: 멀티 레벨 프리픽스를 사용하지 않는 다면 이 값을 설정하지 마시기 바랍니다. 디폴트 값은 트래픽에 최적화 되어 있도록 설정 되어 있습니다.

기존에 존재하고 있는 PhotonView 에는 영향을 주지 않습니다. (기존 존재하는 PhotonView 를 변경 할 수 없습니다).

다른 레벨 프리픽스로 전송되어진 메시지 들은 수신은 되나 실행은 되지 않습니다. 이것은 RPC, Instantiate 와 동기화에 영향을 줍니다.

PUN 은 절대 이 값을 리셋 하지 않는 다는 것을 주의 하세요. 스스로 해주셔야 합니다.

Parameters
prefix최대값은 short.MaxValue = 32767 입니다.
static bool PhotonNetwork.SetMasterClient ( PhotonPlayer  masterClientPlayer)
static

현재 룸의 마스터 클라이언트를 다른 플레이어로 지정해 달라고 서버에게 요청 합니다.

RPCs 와 RaiseEvent 에는 룸의 마스터 클라이언트에만 보낼 수 있는 옵션이 있습니다. SetMasterClient 는 이러한 메시지를 받는 클라이언트에게 영향을 줍니다.

새로운 마스터 클라이언트를 설정하기 위해서 서버의 오퍼레이션을 호출 하는데 라운드 트립이 걸리게 됩니다. 성공한 경우에 이 클라이언트와 다른 클라이언트들은 서버에서 새로운 마스터 클라이언트를 얻게 됩니다.

SetMasterClient 로 현재 마스터 클라이언트가 누구 이고 교체할 마스터 클라이언트는 누구인가를 알려 주게 됩니다. 만약 이전에 마스터 클라이언트를 변경한 것이 있다면 실패 할 것입니다. 이 오류에 대한 콜백은 없습니다. 모든 클라이언트들이 서버에 의해 지정된 새로운 마스터 클라이언트를 얻어와야 합니다.

추가참고: PhotonNetwork.masterClient

v3 서버에서: ReceiverGroup.MasterClient (RPCs에서 사용가능)는 이것에 영향을 받지 않습니다 (룸에서 가장 낮은 값의 player.ID를 여전히 지정). 대신 이 열거값을 피하기 위해서 지정한 플레이어를 전송 합니다.

현재 마스터 클라이언트가 나가게 되면, PUN 은 새로운 마스터 클라이언트를 "가장 낮은 player ID"로 감지 할 것 입니다. OnMasterClientSwitched 를 구현하여 이 경우에 대한 콜백을 받습니다. PUN이 선택한 마스터 클라이언트는 새로운 것으로 지정할 수 있습니다.

마스터 클라이언트를 지정 할 때 무한 루프가 되지 않는지 확인 해 주세요! 커스텀 마스터 클라이언트를 선택 할 때 누가 이 플레이어를 지정 한 것에 관계 없이 모든 클라이언트들이 동일한 클라이언트를 가르키고 있어야 합니다.

지역적으로 마스터 클라이언트는 즉시 교체 되는 반면 리모트 클라이언트들은 이벤트를 받습니다. 이 의미는 현재 마스터 클라이언트가 떠날 때 처럼 임시적으로 마스터 클라이언트가 없어 진다는 의미 입니다.

수동으로 마스터 클라이언트를 교체 할 때, 이 사용자가 떠날 수도 있으며 다른 마스터 클라이언트처럼 작업을 하지 않습니다.

Parameters
masterClientPlayer다음에 마스터 클라이언트가 될 플레이어.
Returns
오퍼레이션이 완료 될 수 없을 때 false 를 리턴 합니다. 반드시 룸에 있어야 합니다 (오프라인 모드가 아닙니다).
static void PhotonNetwork.SetPlayerCustomProperties ( Hashtable  customProperties)
static

이 (로컬) 플레이어의 프로퍼티를 설정하고 다른 플레이어들에게 동기화 시켜줍니다(직접 변경하지 마세요).

룸 안에 있을 때 프로퍼티들은 다른 플레이어들과 동기화 됩니다. CreateRoom, JoinRoom 과 JoinRandomRoom 은 룸에 들어 갔을 때 플레이어의 커스텀 프로퍼티를 적용 할 것 입니다. 전체 해시테이블이 전송 될 것 입니다. 트래픽 최소화를 위해 변경된 키/값만을 설정 하세요.

해시테이블이 null 이면 커스텀 프로퍼티들이 없어질 것 입니다. 커스텀 프로퍼티는 절대 자동으로 없어지지 않습니다. 따라서 변경하지 않으면 다음 룸으로 따라가게 됩니다.

PhotonNetwork.player.customProperties 를 변경하여 프로퍼티를 설정하지 마시기 바랍니다!

Parameters
customProperties이 해시테이블에서 문자열-타입의 키만 사용 됩니다. null 이면 커스텀 프로퍼티가 모두 삭제됩니다.
static void PhotonNetwork.SetReceivingEnabled ( int  group,
bool  enabled 
)
static

주어진 그룹의 수신 Enable/disable 설정 (PhotonView 에 적용)

Parameters
group영향 받는 관심 그룹.
enabled그룹으로 부터의 수신 여부 설정.
static void PhotonNetwork.SetReceivingEnabled ( int[]  enableGroups,
int[]  disableGroups 
)
static

주어진 그룹에 수신 Enable/disable 설정 (PhotonView에 적용)

Parameters
enableGroupsEnable 할 관심 그룹 ( 또는 null).
disableGroupsDisable 할 관심 그룹 (또는 null).
static void PhotonNetwork.SetSendingEnabled ( int  group,
bool  enabled 
)
static

주어진 그룹으로 전송 Enable/disable 설정 (PhotonView 에 적용)

Parameters
group영향을 받는 관심그룹.
enabled그룹 전송 여부를 설정
static void PhotonNetwork.SetSendingEnabled ( int[]  enableGroups,
int[]  disableGroups 
)
static

주어진 그룹에 전송 Enable/disable 설정 (PhotonView 에 적용)

Parameters
enableGroups전송을 Enable 로 설정할 관심 그룹 (또는 null).
disableGroups전송을 Disable 로 설정할 관심 그룹 (또는 null).
static void PhotonNetwork.SwitchToProtocol ( ConnectionProtocol  cp)
static

오프라인 일때 네트워크 프로토콜이 전환될 수 있습니다 (접속에 사용하는 포트에 영향을 주게 됩니다).

프로토콜을 변경할 때 마스터서버의 포트로 변경 해야 합니다. 디폴트 포트: TCP: 4530 UDP: 5055

다음과 같이 보일 수 있습니다:
Connect(serverAddress, <udpport|tcpport>, appID, gameVersion)

또는 ConnectUsingSettings() 를 사용할 때 포트는 설정에서 다음처럼 변경 될 수 있습니다:
PhotonNetwork.PhotonServerSettings.ServerPort = 4530;

현재 프로토콜은 다음으로 얻을 수 있습니다:
PhotonNetwork.networkingPeer.UsedProtocol

모바일에서 PUN+의 Native 소켓 플러그인에서는 동작 하지 않습니다!

Parameters
cp저수준 연결에서 사용되는 네트워크 프로토콜. UDP 가 디폴트입니다. 모든 플랫폼에서 TCP 를 사용할 수 없습니다(주석을 보세요).
static void PhotonNetwork.UnAllocateViewID ( int  viewID)
static

(수동으로 인스턴스 생성된)viewID 를 등록해제 하고 네트워크 객체들을 없애 버립니다.

Parameters
viewID이 플레이어에 수동으로 할당된 viewID.
static bool PhotonNetwork.WebRpc ( string  name,
object  parameters 
)
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
}

Member Data Documentation

float PhotonNetwork.BackgroundTimeout = 60.0f
static

유니티의 OnApplicationPause(true) 호출 이후에 연결을 유지 하기 위한 "fallback thread" 수행 시간을 정의 합니다.

앱이 비활성 된 후 잠시 후에 타임아웃이 발생 되도록 하지만 호출을 받을 수 있도록 합니다. 따라서 합리적인 값을 찾아 주셔야 합니다. 60 초가 적정하다고 생각 합니다.

타임아웃 처리를 위해서는 OnConnectionFail() 을 구현 합니다. 어플리케이션이 재활성 될 때 타임아웃이 발생 했다는 것을 알 수 있을 것 입니다.

이 경우를 다른것과 분리하고 싶으면, 앱이 백그라운드에 있었는지를 추적해야 합니다. (PUN 에는 특별한 콜백은 없습니다).

0.1 보다 작은 값은 이 타임아웃에 사용할 수 없을 것 입니다 (주의: 연결은 무한정으로 유지 될 수 있습니다).

정보: PUN 은 주기적으로 유니티가 Update()를 호출 하지 않아도 서버에 ACK 를 전송하기 위해 "fallback thread"를 수행하고 있습니다. 이 스레드는 씬과 에셋을 로드 하거나 앱이 백그라운드에 있어도 연결을 유지 할 수 있도록 해 줍니다.

노트: 일부 플랫폼 (예. iOS)에서는 앱이 백그라운드로 들어갔을 때 연결 유지를 허용해 주지 않습니다. 이런 경우에는 값이 아무런 변화를 주지 않으며 백그라운드에서 앱은 즉시 연결을 잃어 버리게 됩니다.

유니티의 OnApplicationPause() 콜백은 일부 유니티 버전의 내보내기(Android) 에서 동작 하지 않습니다. 타겟 플랫폼에서 OnApplicationPause() 가 예측 한대로 콜백 되는지 확인 해 주세요! 구현을 보시려면 PhotonHandler.OnApplicationPause(bool pause) 를 확인 해 보세요.

bool PhotonNetwork.InstantiateInRoomOnly = true
static

true 이면, Instantiate 메소드는 룸에 있는지 체크 하여 룸에 있지 않으면 실패 하게 됩니다.

지정한 룸 외부에서 인스턴스를 생성하는 것은 매우 규칙에 위반되는 것 입니다. 정확히 무엇을 하고 있는지 아는 경우에만 off 로 해주세요.

PhotonLogLevel PhotonNetwork.logLevel = PhotonLogLevel.ErrorsOnly
static

네트워크 로그 레벨. PUN 에서 발생한 로그를 제어 합니다.

readonly int PhotonNetwork.MAX_VIEW_IDS = 1000
static

플레이어 (또는 씬)당 지정된 PhotonView 의 최대 개수. 일반 문서 "제약사항" 주제에서 이 제한에 대한 증가 방법을 확인 해 보세요.

int PhotonNetwork.maxConnections
static

Unity Networking 에서만 사용됩니다. PUN 에서는 PhotonNetwork.CreateRoom 에서 플레이어 수를 설정 합니다.

EventCallback PhotonNetwork.OnEventCall
static

"+=" 연산자를 사용하여 RaiseEvent 처리 메소드를 등록 합니다.

eventCode < 200 는 delegate 로 포워드 될 것 입니다.

RaiseEvent

ServerSettings PhotonNetwork.PhotonServerSettings = (ServerSettings)Resources.Load(PhotonNetwork.serverSettingsAssetFile, typeof(ServerSettings))
static

시리얼라이즈된 서버 설정, ConnectUsingSettings에서 사용하고 설정 마법사에 의해서 작성.

float PhotonNetwork.precisionForFloatSynchronization = 0.01f
static

PhotonView의 OnSerialize/ObservingComponent 를 통해 전송하기전에 float 간 최소 차이 값 입니다.

float PhotonNetwork.precisionForQuaternionSynchronization = 1.0f
static

PhotonView의 OnSerialize/ObservingComponent 를 통해 전송 전에 변경이 필요한 최소 회전 각도 입니다.

float PhotonNetwork.precisionForVectorSynchronization = 0.000099f
static

PhotonView의 OnSerialize/ObservingComponent 로 전송하기전에 Vector2 또는 Vector3 (예, transforms rotation) 의 최소 차이가 변경되어야 합니다.

sqrMagnitude 라는 것에 주의 하세요. 예, Y-축의 0.01 을 변경 후 전송하기 위해서는 0.01f*0.01f=0.0001f 를 사용 합니다. float 부정확성으로 인하여 0.0001f 대신 0.000099f 를 사용 합니다.

Dictionary<string, GameObject> PhotonNetwork.PrefabCache = new Dictionary<string, GameObject>()
static

빈번히 인스턴스 생성이 되는 게임오브젝트의 레퍼런스를 보관합니다.(리소스 로딩 대신 메모리 부족).

Instantiate 가 사용되는 경우를 제외하면 언제든지 캐시를 변경 할 수 있어야만 합니다. 메인 스레드에서만 사용하는 것이 가장 좋습니다.

HashSet<GameObject> PhotonNetwork.SendMonoMessageTargets
static

null 이 아니면 이것은 (전용) 게임 오브젝트들의 목록으로 PUN SendMonoMessage() 에 의해 호출 됩니다.

모든 콜백에 대해서 PhotonNetworkingMessage 에 정의 되어 있으며, PUN 은 SendMonoMessage 와 PUN 에 의해 콜백 받기를 원하는 모든 스크립트와 게임오브젝트 검색인 FindObjectsOfType() 호출에 사용 합니다.

PUN 콜백은 매우 자주 되지는 않으나(게임내, 프로퍼티 업데이트가 가장 빈번합니다) FindObjectsOfType 은 많은 게임 오브젝트에 있어서 시간이 많이 소요되고 성능에 문제가 될 수 있습니다.

선택적으로 SendMonoMessageTargets 은 타겟 게임오브젝트들의 목록을 제공하기 위해서 사용 될 수 있습니다. FindObjectsOfType()을 건너띄지만 콜백이 필요한 모든 게임오브젝트 이 리스트에 자체를 추가할 것 입니다.

만약 null이면 기본 행위는 MonoBehaviour 로 각 게임오브젝트에 SendMessage 를 할 것 입니다.

Type PhotonNetwork.SendMonoMessageTargetType = typeof(MonoBehaviour)
static

어떤 클래스에서 PUN 콜백 구현이 있는지를 정의 합니다.

속도를 위해 런타임의 최적화 옵션을 제공 합니다.
이 타입을 좀더 세분화 할 수록 더 적은 클래스가 콜백 메소드에 반영되었는지 체크 될 것 입니다.

bool PhotonNetwork.StartRpcsAsCoroutine = true
static

성능이슈가 될 수 있는 동시 실행 루틴으로써의 RPC 시작을 스킵하는데 사용할 수 있습니다.

bool PhotonNetwork.UsePrefabCache = true
static

true 일 때 메모리 내에 게임 오브젝트를 보존 하기 위하여 Instantiate는 PhotonNetwork.PrefabCache를 사용 합니다.(동일한 프리팹의 인스턴스생성 개선).

런타임에 UsePrefabCache 를 false로 설정하더라도 PrefabCache 가 클리어 되지 않지만 즉시 무시 될 것 입니다. 스스로 캐시를 깨끗하게 하고 변경할 수 있습니다. 설명을 읽어 보세요.

bool PhotonNetwork.UseRpcMonoBehaviourCache
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 에서도 사용됩니다.

Property Documentation

AuthenticationValues PhotonNetwork.AuthValues
staticgetset

연결시에 사용되는 사용자의 인증 값.

커스텀 인증 사용시에는 Connect 호출 전에 이 값들을 설정하세요. userId 가 인증을 받고 어떻게 받는 것이라면 이러한 값에는 userId 를 설정합니다.

어떤 값으로 인하여 인증이 실패한 경우이면 PUN 은 구현해 놓은 OnCustomAuthenticationFailed(string debugMsg) 를 호출하게 될 것 입니다. 참조: PhotonNetworkingMessage.OnCustomAuthenticationFailed

bool PhotonNetwork.autoCleanUpPlayerObjects
staticgetset

룸에 대한 설정으로 룸 생성자가 룸에서 나갔을 때 네트워크-인스턴스화된 게임오브젝트를 제거 할 것인지의 여부를 정의 합니다.

룸당 설정되며 룸에서 변경될 수 없으며 개별 클라이언트들의 설정에 오버라이드 될 것 입니다.

만약 룸에서 room.AutoCleanUp 사용할 수 있도록 되어 있으면 PUN 클라이언트들은 플레이어가 떠났을 때 플레이어의 게임오브젝트를 없애 버릴 것 입니다. 여기에는 수동으로 인스턴스 생성 된(예를 들어 RPC 로 생성) 게임오브젝트들도 포함됩니다. 사용하도록 되어 있을 때 서버는 RPC, 인스턴스화된 게임오브젝트들과 떠나는 플레이어의 PhotonView들을 역시 깨끗하게 없앨 것 입니다. 누군가 떠난 후 참여한 플레이어들은 떠난 플레이어의 이벤트를 더이상 수신하지 않을 것 입니다.

내부적으로 이 설정은 커스텀 룸 프로퍼티에 저장됩니다. 디폴트는 사용할 수 있도록 설정되어 있습니다.

bool PhotonNetwork.autoJoinLobby
staticgetset

PhotonServerSettings 에셋 내에서 설정합니다. 마스터 서버에 접속 했을 때 "로비"에 참여 해야 하는지 정의 합니다.

만약 false 이면 마스터를 접속했을 때 OnConnectedToMaster() 가 호출 될 것 입니다. 이 값이 false 이면 OnJoinedLobby() 는 호출 되지 않을 것 입니다.

디폴트는 사용할 수 있도록 설정되어 있습니다.

룸 리스팅은 사용할 수 없습니다. 룸들은 로비에 참여하지 않고 (무작위로) 생성되어 참여 될 수 있습니다.

bool PhotonNetwork.automaticallySyncScene
staticgetset

마스터 클라이언트와 동일한 레벨로 룸 안의 모든 클라이언트들이 로드 해야하는지를 정의 합니다(PhotonNetwork.LoadLevel 를 사용한 경우)

로드된 레벨을 동기화 해야 하면 마스터 클라이언트는 PhotonNetwork.LoadLevel 을 사용해야 합니다. 모든 클라이언트는 갱신을 받거나 참여했을 때 새로운 씬을 로드하게 될 것 입니다.

내부적으로 로드된 씬에 커스텀 룸 프로퍼티가 설정 됩니다. 클라이언트가 이 프로퍼티를 읽을 때 아직 동일한 씬에 있지 않은 경우에 즉시 메시지큐를 잠시 멈추고 (PhotonNetwork.isMessageQueueRunning = false) 로드 합니다. 씬 로드가 완료 될 때, PUN 은 자동적으로 메시지 큐를 사용하도록 설정할 것 입니다.

bool PhotonNetwork.connected
staticget

Photon 이 초기 연결 전 까지는 False. 오프라인 모드에서는 True, 서버에 접속하고 있는 동안 서버를 변경하는 동안에도 True.

bool PhotonNetwork.connectedAndReady
staticget

connected 의 정제된 버전으로 서버로의 연결이 Join,leave 와 같은 오퍼레이션을 수용할 준비가 된 경우에만 true 입니다.

bool PhotonNetwork.connecting
staticget

ConnectUsingSettings (또는 유사한 메소드)를 호출하여 Photon 저수준 연결이 성립되기 전까지 True.

ConnectionState PhotonNetwork.connectionState
staticget

간단한 연결 상태

ClientState PhotonNetwork.connectionStateDetailed
staticget

상세한 연결 상태 (PUN을 모르는, 따라서 서버 전환시에 "disconnected" 로 될 수 있습니다).

OfflineMode 에서, PeerState.Joined (생성/참여 후) 이거나 or 모든 경우에 있어서 ConnectedToMaster 입니다.

int PhotonNetwork.countOfPlayers
staticget

현재 이 어플리케이션을 사용하고 있는 플레이어 수 (5 초 간격으로 마스터서버에서 이용 가능).

int PhotonNetwork.countOfPlayersInRooms
staticget

룸에서 앱으로 게임 하고 있는 사용자의 수 (마스터 서버가 5초마다 전송함). 현재 참여하고 있는 룸의 플레이어 수를 얻으려면 playerList.Count 를 사용 합니다!

int PhotonNetwork.countOfPlayersOnMaster
staticget

룸을 찾고 있는 현재 플레이어의 수 (5초 간격으로 마스터서버에서 사용할 수 있음).

int PhotonNetwork.countOfRooms
staticget

현재 사용중인 룸의 개수 (5초 간격으로 마스터 서버에서 사용 가능).

로비 내에 있는 동안 PhotonNetwork.GetRoomList().Length 로 룸 갯수를 체크 할 수 있습니다. PUN v1.25 부터 Photon 이 전송하는 통계 이벤트를 기반으로 한 것 입니다 (모든 룸의 개수를 세어서).

bool PhotonNetwork.CrcCheckEnabled
staticgetset

Crc check는 깨진 데이터그램을 감지하고 이슈를 피하기 위해 유용하게 사용 할 수 있습니다. 연결되지 않았을 때 enable 될 수 있습니다.

bool PhotonNetwork.EnableLobbyStatistics
staticgetset

PhotonServerSettings 에셋 내에서 설정합니다. 마스터 서버에서 활성화 로비들의 목록을 얻을 수 있습니다.

게임에서 여러개의 로비를 사용하고 있고 각 플레이어들의 활동을 보려고 하면 로비 통계를 유용하게 사용할 수 있습니다.

이 값은 PhotonServerSettings 내에 저장되어 있습니다.

PhotonNetwork.LobbyStatistics 은 마스터 서버에 접속 할 때 갱신됩니다. 콜백 PunBehaviour 가 있습니다.

List<FriendInfo> PhotonNetwork.Friends
staticgetset

읽기 전용 친구 목록, 온라인 상태와 참여 하고있는 룸에 대한 정보가 있으며 FindFriends 호출에 의해 초기화 되기 전 까지는 null 입니다.

이 목록은 변경하지 마세요! FindFriends 내부적으로 관리되며 값을 읽을 수만 있습니다. FriendsListAge 의 값으로 1/1000 초 단위로 데이터가 얼마나 오래 되었는지 파악 할 수 있습니다.

유용한 시간 간격(>10 초) 보다 더 자주 리스트를 얻지 마세요. 최고의 경우에 있어서는 정말 빠르게 리스트를 유지 합니다. 한 번만 전체 목록을 얻고 나서 온라인 상태에 있는 친구들의 변경 사항만 요청 합니다. 잠시 후(예 1분)에 다시 전체 리스트를 얻을 수 있습니다.(온라인 상태 갱신을 위해서)

int PhotonNetwork.FriendsListAge
staticget

친구리스트 정보 시간(1/1000 초 단위). 친구 리스트가 패치되기 전까지 0 입니다.

string PhotonNetwork.gameVersion
staticgetset

이 빌드에 대한 버전 문자열. 호환될 수 없는 클라이언트 분리를 위해 사용 될 수 있습니다. 접속시에 전송 됩니다.

연결 시에만 전송되므로 일반적으로 설정하는 곳에서 전송 됩니다(예, ConnectUsingSettings 에서).

bool PhotonNetwork.inRoom
staticget

룸 안에 있을 때 true 입니다 (connectionStateDetailed == PeerState.Joined).

인스턴스 생성 또는 나가기 등 룸 안에서만 실행 될 수 있는 수많은 액션들이 있습니다. 오프라인 모드에서도 룸에 참여 할 수 있습니다.

bool PhotonNetwork.insideLobby
staticget

이 클라이언트가 로비내에 있는 동안 true 입니다.

룸 목록을 사용할 수 있거나 갱신될 때 IPunCallbacks.OnReceivedRoomListUpdate() 를 구현하여 통지를 받습니다.

룸에 참여 할 때 자동적으로 로비에서 나가게 됩니다! 로비는 마스터 서버에만 존재 합니다.(반면 게임서버가 룸을 관리합니다).

bool PhotonNetwork.isMasterClient
staticget

마스터 클라이언트인가요?

bool PhotonNetwork.isMessageQueueRunning
staticgetset

수신 이벤트(RPC, 인스턴스 생성과 수신되는 모든 것)를 처리하는 것을 잠시 멈추는데 사용 될 수 있습니다.

IsMessageQueueRunning == false 이면 OnPhotonSerializeView 호출이 수행되지 않고 클라이언트는 아무것도 전송 하지 않습니다. 또한 수신 메시지들은 메시지 큐를 재활성화 할 때 까지 큐에 쌓이게 될 것 입니다.

레벨 로드 후 PhotonView의 데이터와 RPC 수신을 계속 원하면 매우 유용 합니다. 클라이언트는 계속 수신하고 수신된 패키지와 RCP/이벤트에 대한 ACK 를 전송 할 것 입니다. "lag" 가 더해지고 멈추는 것이 길어지게 되면 모든 수신 메시지가 큐에 쌓이기 때문에 이슈가 발생할 수 있습니다.

bool PhotonNetwork.isNonMasterClientInRoom
staticget

룸에 있으면서 룸의 마스터 클라이언트가 아니면 true 입니다.

TypedLobby PhotonNetwork.lobby
staticgetset

PUN이 로비에 참여 하거나 게임을 생성할 때 로비가 사용될 것 입니다.

디폴트 로비의 이름으로 빈 문자열을 사용합니다. autoJoinLobby 설정이 true 이면 PUN 은 마스터 서버의 로비로 입장할 것 입니다. 따라서 접속 또는 룸을 떠날 때 PUN 은 자동적으로 다시 로비로 들어가게 합니다.

클라이언트가 로비에 있는지 PhotonNetwork.insideLobby 를 체크 하시기 바랍니다. (마스터 서버와 로비)

List<TypedLobbyInfo> PhotonNetwork.LobbyStatistics
staticget

켜져 있으면 마스터 서버는 이 어플리케이션의 활성 로비들에 대한 정보를 제공해 줍니다.

게임에서 여러개의 로비를 사용하고 있고 각 플레이어들의 활동을 볼 때 로비 통계를 유용하게 사용할 수 있습니다. 로비별로 이름,타입,룸- 과 플레이어- 수를 얻게 됩니다.

PhotonNetwork.LobbyStatistics 은 마스터 서버에 접속 할 때 갱신됩니다. PunBehaviour.OnLobbyStatisticsUpdate에 콜백이 있으며 UI 업데이트를 위해서 구현 해야 합니다.

Lobby Statistics 는 디폴트로 켜져 있습니다. 프로젝트의 PhotonServerSettings 파일에서 사용하도록 설정합니다.

PhotonPlayer PhotonNetwork.masterClient
staticget

현재 룸의 마스터 클라이언트, 룸 외부이면 null 입니다.

의사결정, AI 수행등을 위해 클라이언트/플레이어의 "권한자" 가 될 수 있습니다.

마스터 클라이언트가 룸을 떠나면(leave/disconnect) 서버는 곧바로 누군가에게 마스터 클라이언트를 부여 하게 됩니다. 마스터 클라이언트가 타임아웃이 걸리면(앱 종료, 연결 분실등) 이 클라이언트로 전송된 메시지들은 모든 사용자가 알 수 없게 됩니다! 유효한 마스터 클라이언트가 없는 상태로 약 10 초 동안 타임아웃이 발생하게 됩니다.

마스터 클라이언트가 전환되었을 때 IPunCallbacks.OnMasterClientSwitched 메소드를 구현하여 호출 해야 합니다.

PhotonNetwork.SetMasterClient 를 사용하여 수동으로 다른 플레이어/사용자로 변환해야 합니다.

offlineMode == true 인 경우에 항상 the PhotonNetwork.player를 리턴 합니다.

int PhotonNetwork.MaxResendsBeforeDisconnect
staticgetset

연결해제가 트리거 되는 ACK 를 받기 전 신뢰 메시지가 재전송 할 수 있는 횟수를 정의 합니다. 디폴트:5.

재전송 횟수가 적으면 더 빠르게 접속해제가 되고 너무 많으면 큰 Lag 가 발생됩니다. 최소:3. 최대 :10.

bool PhotonNetwork.NetworkStatisticsEnabled
staticgetset

이 클라이언트 트래픽의 통계 수집 여부를 결정

클라이언트에서 이슈가 발생 했을 경우 트래픽 통계가 해법을 찾기 위한 좋은 시작 지점 입니다. 사용으로 설정 되어 있을 때만 GetVitalStats를 사용할 수 있습니다.

bool PhotonNetwork.offlineMode
staticgetset

멀티플레이어 코드를 싱글플레이어 게임 모드에 재사용하기 위해서 오프라인 모드가 설정 될 수 있습니다. on 으로 되어있으면 PhotonNetwork 는 어떤 연결도 생성하지 않고 오버헤드가 거의 없게 됩니다. RPC 와 PhotonNetwork.Instantiate 재사용에서 가장 유용 합니다.

PhotonPlayer [] PhotonNetwork.otherPlayers
staticget

로컬 플레이어를 제외한 현재 룸에 있는 플레이어들의 목록 입니다.

클라이언트가 룸에 있을 때만 유효한 목록 입니다. 누군가가 참여하거나 떠나면 자동적으로 갱신됩니다.

룸 내에 모든 플레이어의 목록을 얻을 때 사용할 수 있습니다. 각 플레이어의 PhotonPlayer.customProperties 에 접근할 수 있습니다. (PhotonPlayer.SetCustomProperties 에 의해 설정 및 동기화).

PhotonPlayer.TagObject 에는 참조를 위한 임시 객체를 저장 하는데 사용할 수 있습니다. 네트워크를 통해 동기화 되지는 않습니다.

int PhotonNetwork.PacketLossByCrcCheck
staticget

CrcCheckEnabled 되어 있으면 유효한 CRC checksum 이 없고 거부된 수신 패키지들의 건수를 셉니다.

PhotonPlayer PhotonNetwork.player
staticget

로컬 PhotonPlayer. 항상 사용할 수 있고 이 플레이어를 나타냅니다. 룸에 입장하기전에 커스텀 프로퍼티들이 설정될 수 있으며 동기화도 될 것 입니다.

PhotonPlayer [] PhotonNetwork.playerList
staticget

현재 룸에 있는 플레이어들의 목록, 로컬 플레이어도 포함되어 있음

클라이언트가 룸에 있을 때만 유효한 목록 입니다. 누군가가 참여하거나 떠나면 자동적으로 갱신됩니다.

룸 내에 모든 플레이어의 목록을 얻을 때 사용할 수 있습니다. 각 플레이어의 PhotonPlayer.customProperties 에 접근할 수 있습니다. (PhotonPlayer.SetCustomProperties 에 의해 설정 및 동기화).

PhotonPlayer.TagObject 에는 참조를 위한 임시 객체를 저장 하는데 사용할 수 있습니다. 네트워크를 통해 동기화 되지는 않습니다.

string PhotonNetwork.playerName
staticgetset

룸에 입장한 모든 플레이어들과 플레이어의 별명을 동기화 하기 위해 설정 합니다.PhotonPlayer.name 이 설정됩니다.

playerName 은 별명과 같은 것으로 유일할 필요는 없으며 계정을 대체 하지는 않습니다.
언제라로 값을 설정하고 (예, 연결전) 같이 플레이하는 모든 플레이어들이 이용할 수 있습니다.
플레이어 이름을 접근 하는 것은 PhotonPlayer.name 입니다.
PhotonNetwork.otherPlayers 에는 원격 플레이어가 설정한 playerName을 가지고 있는 다른 플레이어들의 목록 입니다.

IPunPrefabPool PhotonNetwork.PrefabPool
staticgetset

인스턴스화된 객체 인스턴스들을 보관하여 재사용 할 수 있는 객체 Pool 입니다. 유니티의 디폴트 Instantiate 와 Destroy 메소드들을 대체 하였습니다.

GameObject pool 을 사용하기 위해서는 IPunPrefabPool 를 구현하고 여기에 할당 하세요. Prefabs 은 이름으로 식별 됩니다.

int PhotonNetwork.QuickResends
staticgetset

네트워크 손실의 경우에 신뢰 메시지들은 최대 3번 반복 될 수 있습니다.

신뢰 메시지가 한번 이상 손실 되었을 때, 다음 전송 메시지는 네트워크 복구를 위해 약간 지연된 후에 반복됩니다.
이 옵션으로 반복 2와 3의 속도를 높일 수 있습니다. 타임아웃을 방지 하지만 간격이 좁혀지는 스피드를 증가 시키기도 합니다.
이 값을 설정할 때 PhotonNetwork.MaxResendsBeforeDisconnect 를 6 또는 7 로 증가시켜 주세요.

int PhotonNetwork.ResentReliableCommands
staticget

반복된 명령의 개수 (ACK 수신 전에 로컬 반복-타이밍 때문).

이 값이 많이 증가 되면 연결이 좋지 않아 타임아웃 연결 해제가 발생될 확률이 높습니다.

Room PhotonNetwork.room
staticget

현재 참여하고 있는 룸을 얻습니다. 아무방에도 참여하고 있지 않으면 null 을 받게 됩니다.

int PhotonNetwork.sendRate
staticgetset

초당 몇번이나 PhotonNetwork 가 패키지를 전송 해야 하는지 정의 합니다. 이 값을 변경 하면 'sendRateOnSerialize' 도 변경 해야 하는 것을 잊지 마세요.

적은 패키지는 오버헤드가 적으나 지연이 더 발생 합니다. sendRate 를 50으로 설정하면 초당 50 개 패키지가 생성된다는 것입니다.(좀 많습니다!). 타겟 플랫폼에 따라서 조정 해야 합니다: 모바일 네트워크는 늦고 좀더 신뢰성이 낮습니다.

int PhotonNetwork.sendRateOnSerialize
staticgetset

PhotonViews 에서 초당 몇 번이나 OnPhotonSerialize 이 호출되어야 하는지를 정의 합니다.

PhotonNetwork.sendRate 와 연계하여 이 값을 선택하세요.OnPhotonSerialize 는 전송 할 갱신내용과 메시지를 생성 할 것 입니다.
낮은 비율은 성능이 좋아 지지만 더 많은 지역을 초래 하게 됩니다.

ServerConnection PhotonNetwork.Server
staticget

이 클라이언트가 현재 접속해 있거나 접속중인 서버(type)

Photon 3 에서는 세 가지의 서버 역할이 있습니다: Name Server, Master Server 와 Game Server.

string PhotonNetwork.ServerAddress
staticget

현재 사용되고 있는 서버 주소(마스터 또는 게임서버에 상관없음).

int PhotonNetwork.ServerTimestamp
staticget

현재 서버의 1/1000 초 타임스탬프

룸 내의 모든 클라이언트에게 액션과 이벤트를 동기화 하는데 유용합니다. 타임스탬프는 서버의 Environment.TickCount 기준 입니다.

양수값에서 음수값으로 종종 오버플로우 될 것 입니다. 어떤 사항이 발생하면 두 시간의 차이 체크를 위해서만 사용하도록 주의 하세요.

PhotonNetwork.time 의 기본 입니다.

double PhotonNetwork.time
staticget

Photon 네트워크 시간, 서버와 동기화 됨

v1.55
이 시간값은 서버의 Environment.TickCount 에 따라 달라집니다. 서버 마다 다른 값이지만 룸 내에서는 모든 클라이언트들이 동일 한 값을 가지고 있어야 합니다(룸은 하나의 서먼에만 존재 합니다).
일자시간이 아닙니다!

이 값을 주의 해서 사용하세요:
어떤 양의 정수로 시작 될 수 있습니다.
4294967.295 부터 0 까지 회전하는 숫자 입니다!

int PhotonNetwork.unreliableCommandsLimit
staticgetset

채널당 비신뢰 커맨드 제한을 위해서 처리당 한번 사용됨( 정지 후에 많은 채널들이 여전히 수많은 비신뢰 커맨드들의 원인일 수 있습니다)