Photon Network/Fusion
[Photon Fusion 1.1.8] Network Runner Callbacks
일등하이
2023. 11. 5. 22:27
반응형
NetworkManager를 열어 다음 인터페이스(INetworkRunnerCallbacks) 를 추가후 메서드를 구현 한다
콜백을 등록후
플레이어가 세션에 조인 했을때 로그를 출력 한다
셧다운 되었을때 출력 한다
Start메서드를 비동기로 바꾼뒤 await키워드를 사용해 Connect메서드를 호출 한다
다음과 같이 수정후 플레이 버튼을 눌러 실행후 결과를 확인 하자
using System;
using System.Collections;
using System.Collections.Generic;
using System.Threading.Tasks;
using Fusion;
using Fusion.Sockets;
using UnityEngine;
public class NetworkManager : MonoBehaviour, INetworkRunnerCallbacks
{
public static NetworkManager Instance {get; private set;}
public NetworkRunner SessionRunner { get; private set; }
[SerializeField] private GameObject runnerPrefab;
private void Awake()
{
if (Instance != null && Instance != this)
{
Destroy(this.gameObject);
}
else
{
Instance = this;
DontDestroyOnLoad(this.gameObject);
}
}
public void CreateRunner()
{
SessionRunner = Instantiate(runnerPrefab, transform).GetComponent<NetworkRunner>();
SessionRunner.AddCallbacks(this);
}
private async Task Connect()
{
var args = new StartGameArgs()
{
GameMode = GameMode.Shared,
SessionName = "TestSession",
SceneManager = GetComponent<NetworkSceneManagerDefault>()
};
var result = await SessionRunner.StartGame(args);
if (result.Ok)
{
Debug.Log("StartGame Successful");
}
else
{
Debug.LogError(result.ErrorMessage);
}
}
async void Start()
{
CreateRunner();
await Connect();
}
public void OnPlayerJoined(NetworkRunner runner, PlayerRef player)
{
Debug.Log("새 플레이어가 세션에 조인 했습니다.");
}
public void OnPlayerLeft(NetworkRunner runner, PlayerRef player)
{
}
public void OnInput(NetworkRunner runner, NetworkInput input)
{
}
public void OnInputMissing(NetworkRunner runner, PlayerRef player, NetworkInput input)
{
}
public void OnShutdown(NetworkRunner runner, ShutdownReason shutdownReason)
{
Debug.Log("Runner Shutdown");
}
public void OnConnectedToServer(NetworkRunner runner)
{
Debug.Log("서버에 접속 했습니다.");
}
public void OnDisconnectedFromServer(NetworkRunner runner)
{
}
public void OnConnectRequest(NetworkRunner runner, NetworkRunnerCallbackArgs.ConnectRequest request, byte[] token)
{
}
public void OnConnectFailed(NetworkRunner runner, NetAddress remoteAddress, NetConnectFailedReason reason)
{
}
public void OnUserSimulationMessage(NetworkRunner runner, SimulationMessagePtr message)
{
}
public void OnSessionListUpdated(NetworkRunner runner, List<SessionInfo> sessionList)
{
}
public void OnCustomAuthenticationResponse(NetworkRunner runner, Dictionary<string, object> data)
{
}
public void OnHostMigration(NetworkRunner runner, HostMigrationToken hostMigrationToken)
{
}
public void OnReliableDataReceived(NetworkRunner runner, PlayerRef player, ArraySegment<byte> data)
{
}
public void OnSceneLoadDone(NetworkRunner runner)
{
}
public void OnSceneLoadStart(NetworkRunner runner)
{
}
}
RunnerPrefab을 씬에서 선택후 Shitdown버튼을 눌러준다
반응형