Здравствуйте, извиняюсь что опять к вам обращаюсь за помощью со своим тупым вопросом, я честно долго пытался сделать и гуглил. В общем план был такой, сделать в скрипте SpriteSwapper столько методов OnClick, сколько и кнопок покупок, для каждого метода сделать свой ключ в PlayerPrefs Button1, Button2 и т.д. И через OnClick1 в свойствах кнопки инициализировать каждый отдельный метод. На данный момент пытаюсь сделать так, чтобы при нажатии на кнопку у меня менялся цвет (здесь все работает) и сохранялся цвет для этой кнопки, но у меня меняется цвет при нажатии, затем перезахожу и ко всем кнопкам почему-то применяется disabledSprite и инициализация в инспекторе Button слетает, именно при повторном запуске игры(скрин в альбоме) . В планах к каждой кнопке применить метод покупки, с условием срабатывания только 1 раз, но до этого я еще не дошел.
Так же, я мучаюсь с решением проблемы с тем, что когда мой герой спавмнится через скрипт смены скинов, на нем не инициализируются окно смерти из UI, которое скрыто. Когда у меня все работало без скрипта смены героя, я просто инициализировал public GameObject Lose; и в нужном месте вызывал Lose.SetActive(true); Я почитал, что нужно сделать Lose приватным и вызвать его Lose = GameObject.Find("EndGameLose").GetComponent(); Потом я прочитал, что так просто не вызывается GameObject если он скрыт, поэтому я создал пустой объект в UI и в него вложил EndGameLose и попытался вызвать pustushka.transform.GetChild(0).gameObject.SetActive(true); что тоже не увенчалось успехом.
Скрины все в альбоме
https://yapx.ru/v/OC8Iz
public class SpriteSwapper : MonoBehaviour
{
public class SpriteSwapper : MonoBehaviour
{
public Sprite enabledSprite;
public Sprite disabledSprite;
private bool m_swapped = true;
private bool m_swapped1 = true;
private bool m_swapped2 = true;
private Image m_image;
public Button button;
public void Awake()
{
m_image = GetComponent<Image>();
}
private void Start()
{
if (PlayerPrefs.GetInt("Button1") == 1)
{
button = this.gameObject.GetComponent<Button>();
m_image.sprite = disabledSprite;
// Debug.Log(PlayerPrefs.GetInt("Button1"));
}
if (PlayerPrefs.GetInt("Button2") == 1)
{
button = this.gameObject.GetComponent<Button>();
m_image.sprite = disabledSprite;
// Debug.Log(PlayerPrefs.GetInt("Button1"));
}
}
public void SwapSprite()
{
if (m_swapped)
{
m_swapped = false;
m_image.sprite = disabledSprite;
}
}
public void OnClick1()
{
if (m_swapped1)
{
m_swapped1 = false;
m_image.sprite = disabledSprite;
PlayerPrefs.SetInt("Button1", 1);
Debug.Log(PlayerPrefs.GetInt("Button1"));
}
}
public void OnClick2()
{
if (m_swapped2)
{
m_swapped2 = false;
m_image.sprite = disabledSprite;
PlayerPrefs.SetInt("Button2", 1);
Debug.Log(PlayerPrefs.GetInt("Button2", 1));
}
}
}
public class ColorSwapper : MonoBehaviour
{
public Color enabledColor;
public Color disabledColor;
private bool m_swapped = true;
private bool m_swapped1 = true;
private Image m_image;
private Image m_image1;
private void Awake()
{
m_image = GetComponent<Image>();
m_image1 = GetComponent<Image>();
}
public void SwapColor()
{
if (m_swapped)
{
m_swapped = false;
m_image.color = disabledColor;
}
else
{
m_swapped = true;
m_image.color = enabledColor;
}
}
public void SwapColor1()
{
if (m_swapped1)
{
m_swapped1 = false;
m_image1.color = disabledColor;
}
else
{
m_swapped1 = true;
m_image1.color = enabledColor;
}
}
}