37 lines
1.2 KiB
C#
37 lines
1.2 KiB
C#
using UnityEngine;
|
|
using System;
|
|
using System.Threading.Tasks;
|
|
using Codice.Client.Common.WebApi;
|
|
using Sirenix.OdinInspector;
|
|
using Unity.Netcode;
|
|
using Unity.Netcode.Transports.UTP;
|
|
using Unity.Services.Authentication;
|
|
using Unity.Services.Relay;
|
|
using Unity.Services.Relay.Models;
|
|
using Unity.Services.Core;
|
|
|
|
public class SessionManager : MonoBehaviour{
|
|
// Start is called once before the first execution of Update after the MonoBehaviour is created
|
|
void Start(){
|
|
}
|
|
|
|
// Update is called once per frame
|
|
void Update(){
|
|
|
|
}
|
|
|
|
[Button]
|
|
public async Task<string> StartHostWithRelay(int maxConnections, string connectionType)
|
|
{
|
|
await UnityServices.InitializeAsync();
|
|
if (!AuthenticationService.Instance.IsSignedIn)
|
|
{
|
|
await AuthenticationService.Instance.SignInAnonymouslyAsync();
|
|
}
|
|
var allocation = await RelayService.Instance.CreateAllocationAsync(maxConnections);
|
|
NetworkManager.Singleton.GetComponent<UnityTransport>().SetRelayServerData(AllocationUtils.ToRelayServerData(allocation, connectionType));
|
|
var joinCode = await RelayService.Instance.GetJoinCodeAsync(allocation.AllocationId);
|
|
return NetworkManager.Singleton.StartHost() ? joinCode : null;
|
|
}
|
|
}
|
|
|