1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- public class CharacterCustomizer : MonoBehaviour
- {
- [SerializeField] Characters charactersData;
- public List<CharacterObjects> characterObjects;
- [EasyButtons.Button]
- void clearDuplicates(){
- List<int> duplicates = new List<int>();
- 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>("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;
- }
- }
|