Photon
2022. 9. 13. 16:09ㆍPhoton
설치법
유니티 패키지 매니저 열기 -> 패키지 몰록 필터를 My Assets로 변경 -> Pun2 - FREE 찾아 Download 버튼 클릭
-> Import 버튼 클릭
임폴트 하면 Pun Wizard에서
AppID 또는 이메일을 입력하는 창이 하나 나오는데
포톤홈페이지가서 새 어플리케이션을 만들면 새 어플리케이션 ID를 나오는데 그것을
AppID 또는 이메일을 입력하는창에 적어주고 Setup Project를 해주자
그러면 유니티 프로젝트와 포톤 클라우드 연동이 완료된다.
Lobby
더보기
유니티로 로비를 구현해보자
using Photon.Pun; // 유니티용 포톤 컴포넌트들
using Photon.Realtime; // 포톤 서비스 관련 라이브러리
using UnityEngine;
using UnityEngine.UI;
// 마스터(매치 메이킹) 서버와 룸 접속을 담당
public class LobbyManager : MonoBehaviourPunCallbacks {
private static readonly string Game_VERSION = "1"; // 게임 버전
public Text ConnectionInfoText; // 네트워크 정보를 표시할 텍스트
public Button JoinButton; // 룸 접속 버튼
// 게임 실행과 동시에 마스터 서버 접속 시도
private void Start()
{ //접속에 필요한 정보를 설정한다.
PhotonNetwork.GameVersion = Game_VERSION;
//마스터 서버로 접속을 시도한다.
PhotonNetwork.ConnectUsingSettings();
// 조인 버튼 비활성화
JoinButton.interactable = false;
ConnectionInfoText.text = "마스터 서버에 접속중 ...";
}
// 마스터 서버 접속 성공시 자동 실행
public override void OnConnectedToMaster()
{
JoinButton.interactable = true;
ConnectionInfoText.text = "마스터 서버에 접속하였습니다~~";
}
// 마스터 서버 접속 실패시 자동 실행
public override void OnDisconnected(DisconnectCause cause)
{
JoinButton.interactable = false;
ConnectionInfoText.text = "재접속중입니다";
PhotonNetwork.ConnectUsingSettings();
}
// 룸 접속 시도
public void Connect()
{
//접속 버튼을 비활성화
JoinButton.interactable = false;
// 서버에 접속 중이냐
if(PhotonNetwork.IsConnected)
{
//접속해 있을때 UI에 표시
ConnectionInfoText.text = "방에 들어왔습니다.";
//방에 들어가는 함수
// 접속 실행
PhotonNetwork.JoinRandomRoom();
}
// 아니라면 다시 마스터 서버에 재접속 시도
else
{
ConnectionInfoText.text = "마스터 서버와 연결이 끊김";
PhotonNetwork.ConnectUsingSettings();
}
}
private static readonly RoomOptions ROOM_OPTIONS = new RoomOptions()
{
MaxPlayers = 4 //룸옵션을 따로 정적으로 만들어줬다.
};
// (빈 방이 없어)랜덤 룸 참가에 실패한 경우 자동 실행
public override void OnJoinRandomFailed(short returnCode, string message)
{
//UI표시해주기
ConnectionInfoText.text = "방 생성....";
//방만들기
PhotonNetwork.CreateRoom(null, ROOM_OPTIONS);
}
// 룸에 참가 완료된 경우 자동 실행
public override void OnJoinedRoom()
{
//UI 표시
ConnectionInfoText.text = "방안에 참가합니다";
//모든 클라이언트 Main 씬 로드
PhotonNetwork.LoadLevel("main");
}
}
RpcTarget
All 전부다
Others 자기자신뺴고
MasterClient