Создание кнопок с помощью скрипта

Программирование на Юнити.

Создание кнопок с помощью скрипта

Сообщение VladislavSit 03 апр 2019, 16:00

Здравствуйте. Я не знаю как сделать так, что бы кнопки созданные с помощью скрипта выполняли какой то метод, а именно присваивание определенного значению моему иксу и удаляли сами себя после присваивания.
Мне нужно будет создать таких кнопок около 100, и они должны нести в себе случайное число, как на гифке( в верхней части гиф кнопки созданы без использования скрипта и работают как нужно, за исключением удаления самой себя, а в нижней части кнопки создаются скриптом, но не работают) Подкиньте статью на эту тему или может даже решение проблемы, если вам не трудно.
Сама гифка
https://ibb.co/pWZn9jm

Синтаксис:
Используется csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using System;


public class NewBehaviourScript : MonoBehaviour
{

    public Transform panel;
    string Number;
    public Font font;
    public Text x;
    int chislo = 0;

    private void FixedUpdate()
    {
        x.text = string.Format("X= {0}", chislo);
    }

    public void createButton()
    {

        Number = Convert.ToString(UnityEngine.Random.Range(1, 50));

        GameObject newButton = new GameObject("knopka" + Number, typeof(Image), typeof(Button), typeof(LayoutElement));
        newButton.transform.SetParent(panel);

        newButton.GetComponent<Image>().color = new Color(0, 1, 0, 1);
        newButton.transform.SetParent(newButton.transform);
        RectTransform rect = newButton.GetComponent<RectTransform>();
        rect.anchorMin = new Vector2(0, 1);
        rect.anchorMax = new Vector2(0, 1);
        rect.anchoredPosition = new Vector2(70, -65);
        rect.sizeDelta = new Vector2(100, 100);



        GameObject newText = new GameObject("New text" + Number, typeof(Text));
        newText.transform.SetParent(newButton.transform);
        newText.GetComponent<Text>().text = Number;
        newText.GetComponent<Text>().font = font;
        newText.GetComponent<Text>().fontSize = 50;
        RectTransform rt = newText.GetComponent<RectTransform>();
        rt.anchorMin = new Vector2(0, 0);
        rt.anchorMax = new Vector2(1, 1);
        rt.anchoredPosition = new Vector2(0, 0);
        rt.sizeDelta = new Vector2(0, 0);
        newText.GetComponent<Text>().color = new Color(0, 0, 0);
        newText.GetComponent<Text>().alignment = TextAnchor.MiddleCenter;
    }

    public void chislo1()
    {
        chislo = 1;
    }
    public void chislo6()
    {
        chislo = 6;
    }
    public void chislo11()
    {
        chislo = 11;
    }
    public void chislo43()
    {
        chislo = 43;
    }
    public void chislo22()
    {
        chislo = 22;
    }
    public void chislo85()
    {
        chislo = 85;
    }
 

}
 
VladislavSit
UNец
 
Сообщения: 5
Зарегистрирован: 03 апр 2019, 15:38

Re: Создание кнопок с помощью скрипта

Сообщение seaman 03 апр 2019, 16:19

Открываем мануал, вбиваем в поиск Button и на второй строке видим:
https://docs.unity3d.com/ScriptReferenc ... Click.html
Примеры там есть
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Создание кнопок с помощью скрипта

Сообщение VladislavSit 03 апр 2019, 23:10

Помогло, но не совсем так получилось как хотел.
Все кнопки получают числовое значение последнего случайно генерированного числа.


https://ibb.co/NgRtF86

Синтаксис:
Используется csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using System;


public class NewBehaviourScript : MonoBehaviour
{
    int Number;
    public Text x;
    int chislo = 0;

    private void FixedUpdate()
    {
        x.text = string.Format("X= {0}", chislo);
    }

    public void createButton()
    {

        Number = UnityEngine.Random.Range(1, 60);

        GameObject newButton = new GameObject("knopka" + Number, typeof(Image), typeof(Button), typeof(LayoutElement));
        newButton.GetComponent<Button>().onClick.AddListener(() => ButtonClicked(Number));

    }

    public void ButtonClicked(int temp)
    {
        chislo = temp;
    }



}

 
VladislavSit
UNец
 
Сообщения: 5
Зарегистрирован: 03 апр 2019, 15:38

Re: Создание кнопок с помощью скрипта

Сообщение 1max1 03 апр 2019, 23:33

Не уверен, но возможно здесь https://habr.com/ru/company/pvs-studio/blog/320588/
Попробуй переписать так:
Синтаксис:
Используется csharp
int Number = UnityEngine.Random.Range(1, 60); // Локальная переменная
GameObject newButton = new GameObject("knopka" + Number, typeof(Image), typeof(Button), typeof(LayoutElement));
newButton.GetComponent<Button>().onClick.AddListener(() => ButtonClicked(Number));
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Создание кнопок с помощью скрипта

Сообщение VladislavSit 04 апр 2019, 01:00

1max1 писал(а):Не уверен, но возможно здесь https://habr.com/ru/company/pvs-studio/blog/320588/
Попробуй переписать так:
Синтаксис:
Используется csharp
int Number = UnityEngine.Random.Range(1, 60); // Локальная переменная
GameObject newButton = new GameObject("knopka" + Number, typeof(Image), typeof(Button), typeof(LayoutElement));
newButton.GetComponent<Button>().onClick.AddListener(() => ButtonClicked(Number));

Мне помогло, спасибо огромное.
VladislavSit
UNец
 
Сообщения: 5
Зарегистрирован: 03 апр 2019, 15:38


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5