Shameless19
@Shameless19

Различных функционал для префабных кнопок?

О, любовь моя, что, знает unity, спаси из пустыни отчаянья
Суть в том, что, есть скрипт(условно InitScr). Он спавнит на сцену кнопки и в них текст (разные по содержанию), и жизнь была бы прекрасна, но мозговая жидкость во мне не может понять как сделать так, чтобы по щелчку кнопки выполнялось определенная функция, соответствующая тексту кнопки. Все что генерируется либо будет больно бить по производительности, либо по глазам(костыли), а они и так достаточно страдают

Это душа скрипта, если нужна:
public class QvText1 : MonoBehaviour
{
  public static int qvest0;
  public static int qvest1;
  public static int qvest2;
  public static int qvest3; // планируется много
  public static int qvest4;
  public static int qvest5;
  public static List<string> qv;
  public GameObject TextObj;
  public GameObject ButtObj;
  public GameObject ContentCanvas;
  private GameObject textInst;
  GameObject buttInst;

  void Start()
  {
    qv = new List<string>();

    if(qvest3 == 1)
     { string  sqvt = "В джунглях живет много необитаемых женщин";QvestApp(sqvt);}
    if(qvest2 == 1)
     { string  sqvt = "И все она жаждет лишь единицу";QvestApp(sqvt);}
    if(qvest1 == 1)
     { string  sqvt = "И нас знаем что это есть";QvestApp(sqvt);}
    if(qvest0 == 1)
     { string sqvt = "Призывать это только не в честь";QvestApp(sqvt);}
  }
 public void Init(string s)
    {
      textInst = Instantiate(TextObj, TextObj.transform.position, Quaternion.identity);
      textInst.transform.SetParent(ContentCanvas.transform, false);
      TextObj.gameObject.GetComponent<Text>().text = s;
    }
void QvestApp(string str)
{
  qv.Add("⦿ " +str);
      buttInst = Instantiate(ButtObj, ButtObj.transform.position, Quaternion.identity);
      buttInst.transform.SetParent(ContentCanvas.transform, false);

      textInst = Instantiate(TextObj, TextObj.transform.position, Quaternion.identity);
      textInst.transform.SetParent(buttInst.transform, false);
      TextObj.gameObject.GetComponent<Text>().text = "⦿ " +str;
}
}
  • Вопрос задан
  • 17 просмотров
Решения вопроса 1
DanceM
@DanceM Куратор тега Unity
Кто хочет -ищет способ, кто не хочет -ищет причину
Либо добавляете к префабу кнопки свой класс, что будет обрабатывать нажатия кнопки, и в него отправляете содержимое переменных при создании кнопки.

Либо добавляете вызов событий (events) напрямую в кнопку, при создании. Например.

PS: quest
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы