// Animancer // https://kybernetik.com.au/animancer // Copyright 2022 Kybernetik //
#pragma warning disable CS0649 // Field is never assigned to, and will always have its default value.
using UnityEngine;
using UnityEngine.UI;
namespace Animancer.Examples.AnimatorControllers.GameKit
{
/// A simple system for selecting characters.
/// 3D Game Kit
/// https://kybernetik.com.au/animancer/api/Animancer.Examples.AnimatorControllers.GameKit/CharacterSelector
///
[AddComponentMenu(Strings.ExamplesMenuPrefix + "Game Kit - Character Selector")]
[HelpURL(Strings.DocsURLs.ExampleAPIDocumentation + nameof(AnimatorControllers) + "." + nameof(GameKit) + "/" + nameof(CharacterSelector))]
public sealed class CharacterSelector : MonoBehaviour
{
/************************************************************************************************************************/
[SerializeField] private Text _Text;
[SerializeField] private GameObject[] _Characters;
/************************************************************************************************************************/
private void Awake()
{
SelectCharacter(0);
}
/************************************************************************************************************************/
private void Update()
{
if (ExampleInput.Number1Up)
SelectCharacter(0);
else if (ExampleInput.Number2Up)
SelectCharacter(1);
}
/************************************************************************************************************************/
private void SelectCharacter(int index)
{
var text = ObjectPool.AcquireStringBuilder();
for (int i = 0; i < _Characters.Length; i++)
{
// Activate the target and deactivate everyone else.
var active = i == index;
_Characters[i].SetActive(active);
// Build all their names into a string explaining which keys they correspond to.
if (i > 0)
text.AppendLine();
if (active)// Use Rich Text Tags to make the active character Bold.
text.Append("");
text.Append(1 + i)
.Append(" = ")
.Append(_Characters[i].name);
if (active)
text.Append("");
}
_Text.text = text.ReleaseToString();
}
/************************************************************************************************************************/
}
}