Unity3d - Изменение Text через GetComponent C#

373
27 сентября 2017, 07:59

В сцене есть Scrolling Menu которое создает префабы с содержимым Sprite и добавлена кнопка Select и Buy которые активируются в зависимости от текущего выбора на экране в списке scrolling menu. Когда активна кнопка Buy, то используется SetActive(true) чтобы показать цену предмета в игре в виде текста на кнопке. Пытался достать таким способом повесив скрипт на MainCamera (знаю что он кривой):

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class MenuBtn : MonoBehaviour
{
    public int coins;
    public int PanID;
    public int SpinNum;
    public GameObject ScrollingPanel;
    public int spinNum;
    public GameObject priceInCoins;
    public GameObject PriceinCoinsT;
    public string[] PlayButtonTexts;
    public Text PlayBtnT;
    public Text coinsT;

    void Start()
    {
        PriceSpin();
        coins = PlayerPrefs.GetInt("coins", 0);
    }
    void Update()
    {
        PanID = ScrollingPanel.GetComponent<SnapScrolling>().selectedPanID;
        coinsT.text = coins.ToString();
        ChangeSelector();
    }
    public void ChangeSelector()
    {
        if(PanID == 0)
        {
            SpinNum = 0;
            priceInCoins.SetActive(false);
            PlayBtnT.text = PlayButtonTexts[0];
        }
        if (PanID == 1)
        {
            SpinNum = 1;
            priceInCoins.SetActive(true);
            PlayBtnT.text = PlayButtonTexts[1];
        }
        if (PanID == 2)
        {
            SpinNum = 2;
            priceInCoins.SetActive(true);
            PlayBtnT.text = PlayButtonTexts[1];
        }
        if (PanID == 3)
        {
            SpinNum = 3;
            priceInCoins.SetActive(true);
            PlayBtnT.text = PlayButtonTexts[1];
        }
        if (PanID == 4)
        {
            SpinNum = 4;
            priceInCoins.SetActive(true);
            PlayBtnT.text = PlayButtonTexts[1];
        }
        if (PanID == 5)
        {
            SpinNum = 5;
            priceInCoins.SetActive(true);
            PlayBtnT.text = PlayButtonTexts[1];
        }
        if (PanID == 6)
        {
            SpinNum = 6;
            priceInCoins.SetActive(true);
            PlayBtnT.text = PlayButtonTexts[1];
        }
        if (PanID == 7)
        {
            SpinNum = 7;
            priceInCoins.SetActive(true);
            PlayBtnT.text = PlayButtonTexts[1];
        }
        if (PanID == 8)
        {
            SpinNum = 8;
            priceInCoins.SetActive(true);
            PlayBtnT.text = PlayButtonTexts[1];
        }
    }
    public void PriceSpin()
    {
        if(SpinNum == 1)
        {
            PriceinCoinsT.GetComponent<Text>().text = "300";
        }
        if (SpinNum == 2)
        {
            PriceinCoinsT.GetComponent<Text>().text = "500";
        }
        if (SpinNum == 3)
        {
            PriceinCoinsT.GetComponent<Text>().text = "1000";
        }
        if (SpinNum == 4)
        {
            PriceinCoinsT.GetComponent<Text>().text = "1500";
        }
        if (SpinNum == 5)
        {
            PriceinCoinsT.GetComponent<Text>().text = "3000";
        }
        if (SpinNum == 6)
        {
            PriceinCoinsT.GetComponent<Text>().text = "6000";
        }
        if (SpinNum == 7)
        {
            PriceinCoinsT.GetComponent<Text>().text = "10000";
        }
        if (SpinNum == 8)
        {
            PriceinCoinsT.GetComponent<Text>().text = "20000";
        }
    }
}

Пытаюсь сделать так чтобы значением selectedPanId из другого класса показывать и не показывать цену и кнопку buy/selected, но цена не изменяется. Так вот как заставить цену меняться в зависимости от выбора в scrolling menu?

READ ALSO
C# | Разделить строку на массив [требует правки]

C# | Разделить строку на массив [требует правки]

Использовать функцию StringSplit():

346
Динамическая подгрузка DLL

Динамическая подгрузка DLL

Допустим, у меня есть метод:

350
Как правильно создать gulp файл под сборку с babel для es6? сборка переводит класс с require который не работает в браузере

Как правильно создать gulp файл под сборку с babel для es6? сборка переводит класс с require который не работает в браузере

ЗдравствуйтеХочу делать сборку с gulp-babel, вроде как оно пересобирает проект под старый стандарт, но классы пересоздает с каким-то "require", и браузер...

394
как узнать какое событие происходит в данный момент когда ГУГЛ переводчик виджет переводит сайт на другой язык

как узнать какое событие происходит в данный момент когда ГУГЛ переводчик виджет переводит сайт на другой язык

Куда нужно посмотреть чтобы увидеть какое событие происходит в момент перевода страницы?

346