동식이 취업시키기 작전/기업프로젝트 : Hacsamo

[기업 프로젝트] 02. Photon으로 Lobby, Game Scene 생성하기

이동식이 2023. 9. 16. 00:48
728x90

1. Photon의 간단한 설명

여러대의 pc -> photon으로 요청 -> name server -> master-> (Lobby 입장, Room 생성) -> Game

 

name server까지는 Photon에서 처리해주니 우리는 그 이후인 master, lobby, room, game 등을 제작하면 된다.

 

나는 master에서 lobby에 입장하고 방을 생성, 입장 그리고 Game씬으로 이동하는 것을 구현 할 것이다.

 

(어? 너무 간단인가?)

 

2. Connection Scene

- Empty Gameobject로 Connection Manager 생성

- ConnectionManager.cs 생성

- ConnectionManager.cs를 Connection Manager에 Assign

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

// Photon.Pun, Photon.Realtime 선언
using Photon.Pun;
using Photon.Realtime;

// MonoBehaviourPunCallbacks을 상속
public class SimpleConnectionManager : MonoBehaviourPunCallbacks
{
    // Start is called before the first frame update
    void Start()
    {
        // Photon 환경설정을 기반으로 접속 시도하는 메서드
        PhotonNetwork.ConnectUsingSettings();
    }

	// Master에 연결됐는지 확인하는 메서드
    // MonoBehaviourPunCallbacks에 선언된 메서드 overried
    public override void OnConnectedToMaster()
    {
        base.OnConnectedToMaster(); // base == 부모꺼 먼저 실행 후 내꺼 실행(재정의)
        print(nameof(OnConnectedToMaster));

        // master scene에 접속했으면
        // 로비에 진입
        JoinLobby();
    }

	// Lobby에 접속하는 메서드
    void JoinLobby()
    {
        // 닉네임 설정
        // 현재는 임의로 설정
        PhotonNetwork.NickName = "동식Park";

        // 기본 로비에 입장
        PhotonNetwork.JoinLobby();
    }

    // 로비 진입 완료 메서드
    public override void OnJoinedLobby()
    {
        base.OnJoinedLobby();
        print(nameof(OnJoinedLobby));

        // 방 생성 or 방 진입
        RoomOptions roomOptions = new RoomOptions();
        PhotonNetwork.JoinOrCreateRoom("Hacsamo", roomOptions, TypedLobby.Default);

    }

    // 방 생성 완료 메서드
    public override void OnCreatedRoom()
    {
        base.OnCreatedRoom();
        print(nameof(OnCreatedRoom));
    }

    // 방 생성 실패 메서드
    public override void OnCreateRoomFailed(short returnCode, string message)
    {
        base.OnCreateRoomFailed(returnCode, message);
        print(nameof(OnCreateRoomFailed));
    }

    // 방 진입 완료 메서드
    public override void OnJoinedRoom()
    {
        base.OnJoinedRoom();
        print(nameof(OnJoinedRoom));

        // Game Scene으로 이동
        PhotonNetwork.LoadLevel(1); // build setting 기준 1번 씬으로 이동
    }
}

위처럼 코드 작성

 

제일 아래

 

PhotonNetwork.LoadLevel(1); // build setting 기준 1번 씬으로 이동

 

이라는 코드는 아래 Build setting에서 추가 설정을 해줘야한다.

 

 

3. Build setting

Connection scene에서 Game Scene으로 이동하기 위해서는 Build setting을 해줘야한다.

ctrl + shift + B > 위처럼 입장할 씬 순서대로 배치를 해준다.

 

이러면 위 코드에서 1번으로 씬을 이동해달라고 적어뒀으니 build setting 기준으로 1번 씬으로 이동시키는거다.

 

즉, ConnectionScene에서 GameScene으로 이동하는거다.

 

 

4. 결과

0번째로 설정한 씬에서 플레이를 하면, 콘솔창에 위와같이 찍히면서 GameScene으로 이동하는 것을 볼 수 있다.