// 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(); } /************************************************************************************************************************/ } }