Как сменить спрайт объекта по клику?
Начал обучаться Unity и встрял с первым заданием...
Есть три кнопки (Камень, Ножницы, Бумага) и есть некий невидимый GameObject. Нужно сделать так, чтобы при нажатии на кнопку объект менял свой Sprite на тот что лежит в заранее заготовленной папке. Просмотрел уйму видео... и не могу понять, как сделать.
public class Button : MonoBehaviour
{
public Sprite Button_stn, Button_scs, Button_pap, GameObj;
public void Button_stn_cl()
{
GameObj = Resources.Load("1") as Sprite;
}
public void Button_scs_cl()
{
GameObj = Resources.Load("2") as Sprite;
}
public void Button_pap_cl()
{
GameObj = Resources.Load("3") as Sprite;
}
public void Game_object()
{
GetComponent<SpriteRenderer>().sprite = GameObj;
}
void Start()
{
}
}
Ответы (1 шт):
Ссылочные типы - основа всия C#. Вам нужно не туториалы смотреть, а учить самые основы, как всё устроено. Поймете как работают ссылочные типы - узнаете, насколько просто было сделать то, что я написал ниже. При условии, что я Unity вообще не знаю.
public class Button : MonoBehaviour
{
public Sprite Button_stn, Button_scs, Button_pap;
private SpriteRenderer renderer;
public void Button_stn_cl()
{
renderer.sprite = LoadSprite("1");
}
public void Button_scs_cl()
{
renderer.sprite = LoadSprite("2");
}
public void Button_pap_cl()
{
renderer.sprite = LoadSprite("3");
}
private Sprite LoadSprite(string resourceName)
{
return Resources.Load(resourceName) as Sprite;
}
void Start()
{
renderer = GetComponent<SpriteRenderer>();
}
}
Ссылочные и значимые типы в C#.
И не жалейте букв, пишите код из понятных слов. Пройдет какое-то время, и вы сами не вспомните, в каком состоянии вы были, когда назвали метод bt_cl_hdlr, а вот если это будет ButtonClickHandler - будет гораздо легче вспомнить, что же всё-таки этот метод делает.