您最多选择25个主题
主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
66 行
2.4 KiB
66 行
2.4 KiB
using Unity.Multiplayer.Samples.BossRoom.Client;
|
|
using UnityEngine;
|
|
using SkillTriggerStyle = Unity.Multiplayer.Samples.BossRoom.Client.ClientInputSender.SkillTriggerStyle;
|
|
|
|
namespace Unity.Multiplayer.Samples.BossRoom.Visual
|
|
{
|
|
/// <summary>
|
|
/// Provides logic for a Hero Emote Bar
|
|
/// This button bar tracks button clicks and also hides after any click
|
|
/// </summary>
|
|
public class HeroEmoteBar : MonoBehaviour
|
|
{
|
|
ClientInputSender m_InputSender;
|
|
|
|
void Awake()
|
|
{
|
|
ClientPlayerAvatar.LocalClientSpawned += RegisterInputSender;
|
|
ClientPlayerAvatar.LocalClientDespawned += DeregisterInputSender;
|
|
}
|
|
|
|
void RegisterInputSender(ClientPlayerAvatar clientPlayerAvatar)
|
|
{
|
|
if (!clientPlayerAvatar.TryGetComponent(out ClientInputSender inputSender))
|
|
{
|
|
Debug.LogError("ClientInputSender not found on ClientPlayerAvatar!", clientPlayerAvatar);
|
|
}
|
|
|
|
if (m_InputSender != null)
|
|
{
|
|
Debug.LogWarning($"Multiple ClientInputSenders in scene? Discarding sender belonging to {m_InputSender.gameObject.name} and adding it for {inputSender.gameObject.name} ");
|
|
}
|
|
|
|
m_InputSender = inputSender;
|
|
|
|
gameObject.SetActive(false);
|
|
}
|
|
|
|
void DeregisterInputSender()
|
|
{
|
|
m_InputSender = null;
|
|
}
|
|
|
|
void OnDestroy()
|
|
{
|
|
ClientPlayerAvatar.LocalClientSpawned -= RegisterInputSender;
|
|
ClientPlayerAvatar.LocalClientDespawned -= DeregisterInputSender;
|
|
}
|
|
|
|
public void OnButtonClicked(int buttonIndex)
|
|
{
|
|
if (m_InputSender != null)
|
|
{
|
|
switch (buttonIndex)
|
|
{
|
|
case 0: m_InputSender.RequestAction(ActionType.Emote1, SkillTriggerStyle.UI); break;
|
|
case 1: m_InputSender.RequestAction(ActionType.Emote2, SkillTriggerStyle.UI); break;
|
|
case 2: m_InputSender.RequestAction(ActionType.Emote3, SkillTriggerStyle.UI); break;
|
|
case 3: m_InputSender.RequestAction(ActionType.Emote4, SkillTriggerStyle.UI); break;
|
|
}
|
|
}
|
|
|
|
// also deactivate the emote panel
|
|
gameObject.SetActive(false);
|
|
}
|
|
}
|
|
}
|