- Home /
Question by
wenyi623 · Oct 31, 2021 at 01:29 AM ·
dictionary
How to access my saved appearance in dictionary from another scene
SOS... I am a novice and I create a menu for customizing the appearance of the characters. But I don't know how to use saved data in the dictionary for the character in the next scene. I've been trying for days not knowing how to use it...
public class CustomizationManager : MonoBehaviour { public static CustomizationManager instance; public enum AppearanceDetail { HEAD_MODEL, TIE_MODEL, CLOTH_MODEL, SKIN_COLOR } [SerializeField] public GameObject[] headModels; [SerializeField] public GameObject[] tieModels; [SerializeField] public Material[] clothModels; [SerializeField] public Material[] skinColors;
[SerializeField] private Transform headAnchor;
GameObject activeHead;
GameObject activeTie;
GameObject playerHead;
GameObject playerTie;
public Dictionary<AppearanceDetail, int> chosenAppearance;
[SerializeField] private SkinnedMeshRenderer clothRenderer;
[SerializeField] private SkinnedMeshRenderer skinRenderer;
public int headIndex = 0;
public int tieIndex = 0;
public int clothIndex = 0;
public int skinColorIndex = 0;
public int id;
void Awake()
{
if (instance == null)
{
instance = this;
}
}
void Start()
{
Randomize();
}
public void Randomize()
{
ApplyModification(AppearanceDetail.HEAD_MODEL, Random.Range(0, headModels.Length));
ApplyModification(AppearanceDetail.TIE_MODEL, Random.Range(0, tieModels.Length));
ApplyModification(AppearanceDetail.CLOTH_MODEL, Random.Range(0, clothModels.Length));
ApplyModification(AppearanceDetail.SKIN_COLOR, Random.Range(0, skinColors.Length));
}
public void HeadModelUp()
{
if (headIndex < headModels.Length - 1)
headIndex++;
else
headIndex = 0;
ApplyModification(AppearanceDetail.HEAD_MODEL, headIndex);
}
public void HeadModelDown()
{
if (headIndex > 0)
headIndex--;
else
headIndex = headModels.Length - 1;
ApplyModification(AppearanceDetail.HEAD_MODEL, headIndex);
}
public void TieModelUp()
{
if (tieIndex < tieModels.Length - 1)
tieIndex++;
else
tieIndex = 0;
ApplyModification(AppearanceDetail.TIE_MODEL, tieIndex);
}
public void TieModelDown()
{
if (tieIndex > 0)
tieIndex--;
else
tieIndex = tieModels.Length - 1;
ApplyModification(AppearanceDetail.TIE_MODEL, tieIndex);
}
public void ClothModelUp()
{
if (clothIndex < clothModels.Length - 1)
clothIndex++;
else
clothIndex = 0;
ApplyModification(AppearanceDetail.CLOTH_MODEL, clothIndex);
}
public void ClothModelDown()
{
if (clothIndex > 0)
clothIndex--;
else
clothIndex = clothModels.Length - 1;
ApplyModification(AppearanceDetail.CLOTH_MODEL, clothIndex);
}
public void SkincolorUp()
{
if (skinColorIndex < skinColors.Length - 1)
skinColorIndex++;
else
skinColorIndex = 0;
ApplyModification(AppearanceDetail.SKIN_COLOR, skinColorIndex);
}
public void SkincolorDown()
{
if (skinColorIndex > 0)
skinColorIndex--;
else
skinColorIndex = skinColors.Length - 1;
ApplyModification(AppearanceDetail.SKIN_COLOR, skinColorIndex);
}
public void ApplyModification(AppearanceDetail detail, int id)
{
switch (detail)
{
case AppearanceDetail.HEAD_MODEL:
if (activeHead != null)
GameObject.Destroy(activeHead);
activeHead = GameObject.Instantiate(headModels[id]);
activeHead.transform.SetParent(headAnchor);
activeHead.transform.ResetTransform();
break;
case AppearanceDetail.TIE_MODEL:
if (activeTie != null)
GameObject.Destroy(activeTie);
activeTie = GameObject.Instantiate(tieModels[id]);
activeTie.transform.SetParent(headAnchor);
activeTie.transform.ResetTransform();
break;
case AppearanceDetail.CLOTH_MODEL:
clothRenderer.material = clothModels[id];
break;
case AppearanceDetail.SKIN_COLOR:
skinRenderer.material = skinColors[id];
break;
}
}
public void SaveApperance()
{
chosenAppearance = new Dictionary<AppearanceDetail, int>();
chosenAppearance.Add(AppearanceDetail.HEAD_MODEL, headIndex);
chosenAppearance.Add(AppearanceDetail.TIE_MODEL, tieIndex);
chosenAppearance.Add(AppearanceDetail.CLOTH_MODEL, clothIndex);
chosenAppearance.Add(AppearanceDetail.SKIN_COLOR, skinColorIndex);
}
}
screenshot-2021-10-30-124935.png
(224.3 kB)
Comment