您最多选择25个主题
主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
52 行
1.5 KiB
52 行
1.5 KiB
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using UnityEngine.Localization.Components;
|
|
using UnityEngine.Localization;
|
|
|
|
public class UIDialogueManager : MonoBehaviour
|
|
{
|
|
[SerializeField] private LocalizeStringEvent _lineText = default;
|
|
[SerializeField] private LocalizeStringEvent _actorNameText = default;
|
|
[SerializeField] private GameObject _actorNamePanel = default;
|
|
[SerializeField] private GameObject _mainProtagonistNamePanel = default;
|
|
[SerializeField] private UIDialogueChoicesManager _choicesManager = default;
|
|
|
|
[Header("Listening to")]
|
|
[SerializeField] private DialogueChoicesChannelSO _showChoicesEvent = default;
|
|
|
|
private void OnEnable()
|
|
{
|
|
_showChoicesEvent.OnEventRaised += ShowChoices;
|
|
}
|
|
|
|
private void OnDisable()
|
|
{
|
|
_showChoicesEvent.OnEventRaised -= ShowChoices;
|
|
}
|
|
|
|
public void SetDialogue(LocalizedString dialogueLine, ActorSO actor, bool isMainProtagonist)
|
|
{
|
|
_choicesManager.gameObject.SetActive(false);
|
|
_lineText.StringReference = dialogueLine;
|
|
|
|
_actorNamePanel.SetActive(!isMainProtagonist);
|
|
_mainProtagonistNamePanel.SetActive(isMainProtagonist);
|
|
|
|
if (!isMainProtagonist)
|
|
{
|
|
_actorNameText.StringReference = actor.ActorName;
|
|
}
|
|
//Protagonist's LocalisedString is provided on the GameObject already
|
|
}
|
|
|
|
private void ShowChoices(List<Choice> choices)
|
|
{
|
|
_choicesManager.FillChoices(choices);
|
|
_choicesManager.gameObject.SetActive(true);
|
|
}
|
|
|
|
private void HideChoices()
|
|
{
|
|
_choicesManager.gameObject.SetActive(false);
|
|
}
|
|
}
|