using System; using System.Collections; using System.Collections.Generic; using UnityEngine; public class CharacterCustomizer : MonoBehaviour { [SerializeField] Characters charactersData; public List characterObjects; [EasyButtons.Button] void clearDuplicates(){ List duplicates = new List(); for(int i =0; i < characterObjects.Count; i++){ if(duplicates.Contains(characterObjects[i].id)){ characterObjects.RemoveAt(i); }else{ duplicates.Add(characterObjects[i].id); } } } [EasyButtons.Button] void clearEmptyObjectsRows(){ for(int i =0; i < characterObjects.Count; i++){ bool exist = false; foreach(CharacterPreset preset in charactersData.characters){ if(preset.characterId == characterObjects[i].id){ exist=true;break;} } if(!exist){characterObjects.RemoveAt(i);} } } [EasyButtons.Button] void refresh(){ validateCharacterData(); } void OnValidate() { validateCharacterData(); } void validateCharacterData() { charactersData = Resources.Load("characters"); if (charactersData == null) { Debug.LogError("No Character Data Found!"); return; } clearEmptyObjectsRows(); foreach(CharacterPreset preset in charactersData.characters){ bool exists = false; for(int i =0; i < characterObjects.Count; i++){ if(characterObjects[i].id == preset.characterId){ if(characterObjects[i].name != preset.name){characterObjects[i].name=preset.name;} exists=true; } } if(!exists){characterObjects.Add(new CharacterObjects(preset.characterId,preset.name));} } } public void ChangeCharacter(int characterId){ foreach(CharacterObjects obj in characterObjects){ if(obj.id == characterId){ foreach(GameObject go in obj.body){go.SetActive(true);} }else{ foreach(GameObject go in obj.body){go.SetActive(false);} foreach(GameObject go in obj.hair){go.SetActive(false);} foreach(GameObject go in obj.gloves){go.SetActive(false);} foreach(GameObject go in obj.eyeWears){go.SetActive(false);} foreach(GameObject go in obj.tops){go.SetActive(false);} foreach(GameObject go in obj.bottoms){go.SetActive(false);} } } } public void ChangeCharacter(string characterName){ ChangeCharacter(GetCharacterId(characterName)); } public int GetCharacterId(string name){ foreach(CharacterPreset preset in charactersData.characters){ if(preset.name == name){return preset.characterId;} } return -1; } }