새소식

🎮 Game Dev (게임개발)/PC (데스크탑, 노트북, 터치패널)

[2D 멀티게임] 02. 네트워크 입장 관리

  • -

🔔 유튜브 크리에이터 고라니TV님의 유니티강의 2D 횡스크롤 멀티게임 만들기 를 보고 공부하여 작성한 게시글입니다! 🔔

 

이번시간에는 포톤(Photon)을 이용하여, 게임 접속 및 해제 기능을 구현해보려고 합니다.


🧷 1. UI 컴포넌트

- 초기 연결하는 패널

닉네임 입력 후, 닉네임에 따른 플레이어가 생성 됩니다.

 - 플레이어 패배 후 재접속 패널

 

접속을 눌러 새로운 플레이어를 생성합니다.

 

🧷 2. 네트워크 스크립트

빈 오브젝트에 새로운 스크립트(NetworkManager)를 만들어 넣습니다.

(컴포넌트 Nickname Input은 플레이어 상단에 이름을 적을 UI 입니다.)

 

 - 네트워크 매니저 스크립트

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Photon.Pun;
using Photon.Realtime;
using UnityEngine.UI;

public class NetworkManager : MonoBehaviourPunCallbacks
{
    public InputField NicknameInput;
    public GameObject DisconnectPanel;
    public GameObject RespwanPanel;

    void Awake()
    {
        Screen.SetResolution(960, 540, false); // 화면 해상도
        PhotonNetwork.SendRate = 60;  // Server관련
        PhotonNetwork.SerializationRate = 30;
    }

    public void Connect() => PhotonNetwork.ConnectUsingSettings();

    public override void OnConnectedToMaster()
    {
        PhotonNetwork.LocalPlayer.NickName = NicknameInput.text;
        PhotonNetwork.JoinOrCreateRoom("Room", new RoomOptions { MaxPlayers = 6 }, null);
    }

    public override void OnJoinedRoom()
    {
        Spwan();
        DisconnectPanel.SetActive(false);
    }

    public void Spwan()
    {
        PhotonNetwork.Instantiate("Player", new Vector3(Random.Range(-6f, 18f), 4, 0), Quaternion.identity);
        RespwanPanel.SetActive(false);
    }

    public override void OnDisconnected(DisconnectCause cause)
    {
        DisconnectPanel.SetActive(true);
        RespwanPanel.SetActive(false);
    }
}

Photon.Pun과, Photon.Realtime을 꼭 import 해줍니다.

 

Awake 구문

PhotonNetwork.SendRate : 초당 몇번이나 Photon Network가 패키지를 전송 해야 하는지 정의합니다.

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

 

Connect()

접속 버튼을 누를 시, 실행하는 함수입니다.

PhotonNetwork.ConnectUsingSettings() : 에디터에서 설정된 Photon에 연결 합니다. 위의 포톤 서버에 접속합니다.

 

OnConnectedToMaster()

PhotonNetwork.LocalPlayer : 룸에 입장하기 전 커스텀 프로퍼티들이 설정될 수 있고 동기화가 됩니다.

PhotonNetwork.JoinOrCreateRoon : 지정된 이름의 룸에 입장합니다.

OnJoinedRoom 콜백이 호출 됩니다.

 

OnJoinedRoom ()

플레이어를 스폰해주는 Spwan() 함수와 패널을 관리하는 기능을 오버라이딩으로 추가해줍니다.

 

OnDisconnected()

콜백 함수인 disconnect가 되었을 시, UI를 관리해주는 기능을 추가했습니다.


출처: 고라니TV님 유튜브

https://www.youtube.com/watch?v=9Bn1C9O0hzY 

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.