Adicionei um botão responsável por alterar a Skin do player. Toda vez que o botão for clicado a skin atual é desligada e o código chama a próxima skin, ao chegar no final da contagem, ele volta pra 1ª skin. Quando clicamos em jogar, ele salva a informação em um playerprefs, que é chamado dentro do player.
Código menu:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class ControlaMenu : MonoBehaviour
{
public Transform player;
public GameObject BotaoSair;
private int numeroSkin = 1;
void Start()
{
player = GameObject.FindWithTag(Tags.player).transform;
#if UNITY_STANDALONE || UNITY_EDITOR
BotaoSair.SetActive(true);
#endif
}
public void Jogar()
{
PlayerPrefs.SetInt("SkinDePreferencia",numeroSkin);
SceneManager.LoadScene("tela");
}
public void TrocarSkin()
{
player.GetChild(numeroSkin).gameObject.SetActive(false);
numeroSkin++;
if (numeroSkin >= player.childCount)
{
numeroSkin = 1;
}
player.GetChild(numeroSkin).gameObject.SetActive(true);
}
public void Sair()
{
Application.Quit();
#if UNITY_EDITOR
UnityEditor.EditorApplication.isPlaying = false;
#endif
}
}
a contagem começa em 1 pra ignorar o root_jnt, fica atento se não tem nenhum outro child, no meu caso tinha a referencia do tiro, ae bastou colocar na mão do personagem.
Código do player, apenas as partes relevantes:
public GameObject player;
private int skinDePreferencia;
void Start()
{
skinDePreferencia = PlayerPrefs.GetInt("SkinDePreferencia");
player = GameObject.FindWithTag(Tags.player);
TrocandoSkinDoPlayer();
}
public void TrocandoSkinDoPlayer()
{
player.transform.GetChild(skinDePreferencia).gameObject.SetActive(true);
}