멀티플레이
엄연히 말하자면 플레이어는 각각 다른게임을 플레이 하고있으나, 서버가 각 게임을 동기화 시켜 같은 화면이 나오도록 설계가 되어있다.
Photon Fusion2
https://doc.photonengine.com/fusion/current/tutorials/multi-climb
2.2.0버전 539 기준으로 작성
설치 후 유니티 > tools > fusion > dashboard 한 후 app cloude 를 fusion으로 생성한 후 app id 입력
Player스크립트
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Fusion; // Fusion 사용
public class Player : NetworkBehaviour
{
}
GameLogic 스크립트
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Fusion; // Fusion 사용
public class GameLogic : NetworkBehaviour, IPlayerJoined, IPlayerLeft
{
[SerializeField] private NetworkPrefabRef playerPrefab;
[Networked, Capacity(12)] private NetworkDictionary<PlayerRef, Player> Players => default; // 사전용량속성. 플레이어의 절대한도 12
public void PlayerJoined(PlayerRef player)
{
if (HasStateAuthority)
{
NetworkObject playerObject = Runner.Spawn(playerPrefab, Vector3.up, Quaternion.identity, player); // 호스트 플레이어 생성
Players.Add(player, playerObject.GetComponent<Player>());
}
}
public void PlayerLeft(PlayerRef player)
{
if (!HasStateAuthority)
{
return;
}
if (Players.TryGet(player, out Player playerBehaviour))
{
Players.Remove(player);
Runner.Despawn(playerBehaviour.Object);
}
}
}
Settings > Menu Config => Max Players를 12로 바꾸어준다.
Prefab > Player에 player 스크립트를 넣어주고 Network Object를 생성해준다.
마찬가지로 Scene > Game 씬을 선택 후, Course > finish에 GameLogic 스크립트를 넣어주고 Network Object를 생성해준다. 그리고 GameLogic스크립트항목에 Player에 Player 프리팹을 넣어준다.
게임을 실행하면 Player가 정상적으로 생성되는것을 볼 수 있다.
'Unity' 카테고리의 다른 글
2024/07/03 VR 기초 (Hinge Joint, Fixed Joint) (0) | 2024.07.03 |
---|---|
2024/06/24 Unity 코딩 응용(아이템 들었다 놓기, 터뜨리기) (0) | 2024.06.24 |
2024/06/21 Unity VR기초 2 (0) | 2024.06.21 |
2024/06/20 Unity VR 기초 (0) | 2024.06.20 |
2024/06/11 Unity VFX (0) | 2024.06.11 |