Доброго времени суток! Так то я новичок, но хочу спросить, как решить ситуацию. Я создал магазин скинов для 3д персонажа, и с его реализацией у меня возникли проблемы:
1. Когда я нажимаю "Купить" (кнопка у меня позначена ценой скина) то появляется кнопка "Equip", где после ее нажатия ничего не происходит.
2. По каким то причинам скин, выбранный мною, не отображается на самом персонаже. У меня 2 кода: магазин, появление скина на персонаже.
Буду рад помощи!
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class SkinControl : MonoBehaviour
{
public int skinNum;
public Button buyButton;
public Image iLock;
public int price;
public Sprite buySkin;
public Sprite equipped;
public Sprite equip;
public Sprite falseLock;
public Sprite trueLock;
public Image[] skins;
private void Start()
{
if (PlayerPrefs.GetInt("skin1" + "buy") == 0)
{
foreach (Image img in skins)
{
if ("skin1" == img.name)
{
PlayerPrefs.SetInt("skin1" + "buy", 1);
PlayerPrefs.SetInt("skin1" + "equip", 1);
}
else
{
PlayerPrefs.SetInt(GetComponent<Image>().name + "buy", 0);
}
}
}
}
private void Update()
{
if (PlayerPrefs.GetInt(GetComponent<Image>().name + "buy") == 0)
{
iLock.GetComponent<Image>().sprite = falseLock;
buyButton.GetComponent<Image>().sprite = buySkin;
}
else if (PlayerPrefs.GetInt(GetComponent<Image>().name + "buy") == 1)
{
iLock.GetComponent<Image>().sprite = trueLock;
if (PlayerPrefs.GetInt(GetComponent<Image>().name + "equip") == 1)
{
buyButton.GetComponent<Image>().sprite = equipped;
}
else if (PlayerPrefs.GetInt(GetComponent<Image>().name + "equip") == 0)
{
buyButton.GetComponent<Image>().sprite = equip;
}
}
}
public void buy()
{
if (PlayerPrefs.GetInt(GetComponent<Image>().name + "buy") == 0)
{
if (Money.money >= price)
{
iLock.GetComponent<Image>().sprite = trueLock;
buyButton.GetComponent<Image>().sprite = equipped;
PlayerPrefs.SetInt("Money", PlayerPrefs.GetInt("Money") - price);
PlayerPrefs.SetInt(GetComponent<Image>().name + "buy", 1);
PlayerPrefs.SetInt("skinNum", skinNum);
foreach (Image img in skins)
{
if (GetComponent<Image>().name == img.name)
{
PlayerPrefs.SetInt(GetComponent<Image>().name + "equip", 1);
}
else
{
PlayerPrefs.SetInt(img.name + "equip", 0);
}
}
}
}
else if (PlayerPrefs.GetInt(GetComponent<Image>().name + "buy") == 1)
{
iLock.GetComponent<Image>().sprite = trueLock;
buyButton.GetComponent<Image>().sprite = equipped;
PlayerPrefs.SetInt(GetComponent<Image>().name + "equip", 1);
PlayerPrefs.SetInt("skinNum", skinNum);
foreach (Image img in skins)
{
if (GetComponent<Image>().name == img.name)
{
PlayerPrefs.SetInt(GetComponent<Image>().name + "equip", 1);
}
else
{
PlayerPrefs.SetInt(img.name + "equip", 0);
}
}
}
}
}
Появление скина:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SS : MonoBehaviour
{
// Start is called before the first frame update
public Transform player;
public void Awake()
{
for (int i = 0; i < player.childCount; i++)
player.GetChild(i).gameObject.SetActive(false);
player.GetChild(PlayerPrefs.GetInt("skinNum")).gameObject.SetActive(true);
}
}