Photon

2022. 9. 13. 16:09Photon

설치법

유니티 패키지 매니저 열기 -> 패키지 몰록 필터를 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