// Animancer // https://kybernetik.com.au/animancer // Copyright 2018-2024 Kybernetik // #pragma warning disable CS0649 // Field is never assigned to, and will always have its default value. using System.Text; using UnityEngine; #if UNITY_UGUI using UnityEngine.UI; #endif namespace Animancer.Samples.AnimatorControllers.GameKit { /// A simple system for selecting characters. /// /// /// Sample: /// /// 3D Game Kit /// /// /// https://kybernetik.com.au/animancer/api/Animancer.Samples.AnimatorControllers.GameKit/CharacterSelector /// [AddComponentMenu(Strings.SamplesMenuPrefix + "Game Kit - Character Selector")] [AnimancerHelpUrl(typeof(CharacterSelector))] public class CharacterSelector : MonoBehaviour { /************************************************************************************************************************/ #if UNITY_UGUI /************************************************************************************************************************/ [SerializeField] private Text _Text; [SerializeField] private GameObject[] _Characters; /************************************************************************************************************************/ protected virtual void Awake() { SelectCharacter(0); } /************************************************************************************************************************/ protected virtual void Update() { if (SampleInput.Number1Up) SelectCharacter(0); else if (SampleInput.Number2Up) SelectCharacter(1); } /************************************************************************************************************************/ private void SelectCharacter(int index) { StringBuilder text = StringBuilderPool.Instance.Acquire(); for (int i = 0; i < _Characters.Length; i++) { // Activate the target and deactivate everyone else. bool 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(); } /************************************************************************************************************************/ #else /************************************************************************************************************************/ protected virtual void Awake() { SampleReadMe.LogMissingUnityUIModuleError(this); } /************************************************************************************************************************/ #endif /************************************************************************************************************************/ } }