Answer the question
In order to leave comments, you need to log in
Skin shop?
Good day! So I'm new, but I want to ask how to solve the situation. I created a skin store for a 3D character, and I had problems with its implementation:
1. When I click "Buy" (the button is marked with the price of the skin), the "Equip" button appears, where nothing happens after clicking it.
2. For some reason, the skin I have chosen is not displayed on the character itself. I have 2 codes: a store, the appearance of a skin on a character.
I will be glad to help!
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);
}
}
Answer the question
In order to leave comments, you need to log in
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question