using System.Collections.Generic; using UnityEngine; public class CharacterSelectManager : MonoBehaviour { [SerializeField] private MainScreensManager mainScreensManager; [Header("Avatars")] [SerializeField] private GameObject avatar; [SerializeField] private GameObject avatarModel; [SerializeField] private CharacterButton characterButtonPrefab; [SerializeField] private Transform charactersContent; private List characterButtons = new List(); [Header("Data")] [SerializeField] private CharactersList charactersList; [SerializeField] private Character characterConfirmed; [SerializeField] private Character character; private CharacterButton selectedButton; private void Start() { string charIDName = "char_james"; //GET_NAME foreach (Character character in charactersList.Characters) { CharacterButton button = Instantiate(characterButtonPrefab, charactersContent); button.Initialize(character, (Character selectedCharacter) => { selectedButton = button; SetAvatar(selectedCharacter); }, character.IDName == charIDName); characterButtons.Add(button); if (character.IDName == charIDName) { characterConfirmed = character; SetAvatar(character); } } } private void SetAvatar(Character character) { this.character = character; if (avatarModel) Destroy(avatarModel); avatarModel = Instantiate(character.Prefab, avatar.transform); string anim = character.SelectAnimation == "" ? "Waving" : character.SelectAnimation; avatarModel.GetComponent().Play(anim); } public void ConfirmAvatar() { characterConfirmed = character; GameManager.Instance.SetCharacter(character); mainScreensManager.SetGameScreen(); } public void RevertAvatar() { selectedButton?.Deselect(); CharacterButton button = characterButtons.Find(x => x.Character == characterConfirmed); button?.Select(); selectedButton = button; //SetAvatar(characterConfirmed); } }