https://seaweed0201.tistory.com/96
포톤 멀티 서버 만들기(PUN 2)_세팅편
먼저 Photon사이트에서 계정을 만들어준다.https://www.photonengine.com/ko-kr 글로벌 크로스 플랫폼 실시간 게임 개발 | Photon EngineEssentialPhoton Details Discover a summary of our product range, notable features, the power of
seaweed0201.tistory.com
세팅 후에 게임에 적용하는 법을 알아보자.
본인이 만들 게임은 3D 멀티 게임이므로 간단하게 플레이어를 만들어준다.
그 후 플레이어의 Inspector창에 Photon View, Photon Transform View를 넣어준다.
Photon View는 네트워크 동기화를 시켜주는 컴포넌트이다.
Photon View와 Photon Transform View 컴포넌트를 같이 추가함으로써 오브젝트의 Position, Rotation, Scale값들을 동기화 할 수 있다.
Photon에는 로비와 룸이 있다. 사용자들은 포톤엔진에 접속해 로비에 들어간 후, 같은 룸에 입장한 플레이어들씨리 통신하게 된다.
따라서 코드를 작성할 때 로비에 접속하는 코드, 룸에 접속하는 코드를 만들어야 한다.
using Photon.Pun;
using Photon.Realtime;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class NetworkManager : MonoBehaviourPunCallbacks
{
// 포톤 엔진에 접속.
private void Start()
{
PhotonNetwork.ConnectUsingSettings();
}
//클라이언트가 Photon 마스터 서버에 연결되었을 때 호출
public override void OnConnectedToMaster()
{
// 룸 생성 혹은 로비에 입장.
// 방 존재시 join, 없으면 create.
PhotonNetwork.JoinOrCreateRoom("Room", new RoomOptions { MaxPlayers = 4 }, null);
}
// 룸 입장 시 캐릭터 생성.
public override void OnJoinedRoom()
{
PhotonNetwork.Instantiate("Player", Vector3.zero, Quaternion.identity);
}
}
MonoBehaviourPunCallbacks를 상속받아서 override를 사용하게 한다.
이때 OnJoinedRoom()이 아니라 OnConnectedToMaster()를 이용한 이유는 게임이 시작되자 마자 자동으로 연결시키기 위함이다.
Photon에서 Instantiate를 하기 위해선, Resource 폴더에 해당 프리팹을 넣어주어야 한다.
Assets에 Resource라는 폴더를 만들고, Player라는 프리팹을 넣어주었다.
게임을 실행시키면 플레이어 옆에 master가 붙어있는걸 볼 수 있는데 방장이라는 뜻이다. 가장 먼저 room에 들어오면 이런 표시가 붙게 된다.
캐릭터 역시 잘 생성된 모습이다.
빌드 후 다른 기기로 들어가보면
이렇게 들어오는걸 볼 수 있다.
'유니티' 카테고리의 다른 글
오브젝트 풀링의 사용 (0) | 2024.09.22 |
---|---|
Occlusion Culling (시작 및 Bake) (0) | 2024.06.28 |
포톤 멀티 서버 만들기(PUN 2)_세팅편 (0) | 2024.06.21 |
플레이어 화면(시야) 오류 (0) | 2024.06.18 |
유니티 3D Tilemap (1) | 2024.06.12 |