using UnityEngine; using Code.Saves; namespace Code.Gameplay.Visuals { public class VisualApplyer : MonoBehaviour { public enum ObjectType { Player, Platform, Bonus } [SerializeField] private ObjectType type; [SerializeField] private SkinnedMeshRenderer characterRenderer; [SerializeField] private Transform hatContainer; private static readonly int ColorId = Shader.PropertyToID("_BaseColor"); private void Start() => Apply(); public void Apply() { var data = SaveManager.Load(); switch (type) { case ObjectType.Player: ApplyPlayer(data); break; case ObjectType.Platform: GetComponent().material.SetColor(ColorId, data.platformColor); break; case ObjectType.Bonus: GetComponent().material.SetColor(ColorId, data.bonusColor); break; } } private void ApplyPlayer(GameData data) { if (characterRenderer == null) return; var bodymats = Resources.LoadAll("MaterialsCharacter/Body"); var facemats = Resources.LoadAll("MaterialsCharacter/Face"); var currentMats = characterRenderer.sharedMaterials; currentMats[0] = bodymats[data.bodyMaterialIndex]; currentMats[1] = facemats[data.faceMaterialIndex]; characterRenderer.sharedMaterials = currentMats; foreach (Transform child in hatContainer) Destroy(child.gameObject); var hats = Resources.LoadAll("Prefabs/Character/Hats"); if (data.hatIndex > 0 && data.hatIndex <= hats.Length) { Instantiate(hats[data.hatIndex - 1], hatContainer); } } } }