Files
BlueArchiveMiniGame/Assets/ThirdParty/Mirror/Examples/AssignAuthority/Scripts/UI.cs
2025-09-17 18:56:28 +08:00

49 lines
1.4 KiB
C#

using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
namespace Mirror.Examples.AssignAuthority
{
[AddComponentMenu("")]
public class UI : NetworkBehaviour
{
public List<ObserverBehaviour> Objects;
public List<Button> Buttons;
void Awake()
{
for (int i = 0; i < Buttons.Count; i++)
{
Button button = Buttons[i];
int index = i;
button.onClick.AddListener(() =>
{
CmdTakeAuthority(index, null /* will be filled by mirror */);
});
}
}
[Command(requiresAuthority = false)]
public void CmdTakeAuthority(int index, NetworkConnectionToClient sender)
{
if (index < 0 || index >= Objects.Count)
return;
ObserverBehaviour obj = Objects[index];
if (obj.netIdentity.connectionToClient != sender)
{
if (obj.netIdentity.connectionToClient != null)
obj.netIdentity.RemoveClientAuthority();
obj.netIdentity.AssignClientAuthority(sender);
obj.Color = sender.identity.GetComponent<Player>().Color;
}
else
{
obj.netIdentity.RemoveClientAuthority();
obj.Color = Color.gray;
}
}
}
}