Проблема с присваиванием методу переменных.

Общие вопросы о Unity3D

Проблема с присваиванием методу переменных.

Сообщение plytonk 07 май 2022, 12:10

Всем, привет. Сделал два метода, каждому из методов должна присваиваться глобальная переменная и изменяться в соответствии с функциями методов, но ничего не происходит.

Ниже два метода.

Синтаксис:
Используется csharp
public void PlusSkl(float Skl, Image Fill)
    {
        if (aviablesklpoints != 0)
        {
            if (Skl != 10)
            {
                Skl++;
                aviablesklpoints--;
                Fill.fillAmount = Skl / 10;
            }
        }
    }


Синтаксис:
Используется csharp
public void CheckSkl(TextMeshProUGUI TxT, Image sklFill, float Skl)
    {
        TxT.text = Skl.ToString();
        if (Skl < 4)
        {
            sklFill.color = new Color(255, 0, 0, 255);
        }
        else if (Skl < 8 && Skl >= 4)
        {
            sklFill.color = new Color(255, 120, 0, 255);
        }
        else
        {
            sklFill.color = new Color(0, 255, 0, 255);
        }
    }


Ниже метод нажатия на кнопку, где происходит присвоение.

Синтаксис:
Используется csharp
public void OnPlusCodClick()
    {
        PlusSkl(codSkl, codSklFill);
        CheckSkl(codSklTxT, codSklFill, codSkl);
    }
plytonk
UNец
 
Сообщения: 20
Зарегистрирован: 29 май 2020, 11:43

Re: Проблема с присваиванием методу переменных.

Сообщение plytonk 07 май 2022, 12:11

Можно, конечно, для каждой кнопки расписать код, но в целях оптимизации ищу варианты снизить количество строк кода.
plytonk
UNец
 
Сообщения: 20
Зарегистрирован: 29 май 2020, 11:43

Re: Проблема с присваиванием методу переменных.

Сообщение plytonk 07 май 2022, 18:03

Для тех, кто будет интересоваться данным вопросом оставляю ответ на решение данной проблемы.

Необходимо добавить в описание метода к переменным ключевое слово "ref", как это показано в трех нижних синтаксисах.

Синтаксис:
Используется csharp
public void PlusSkl(ref float Skl, ref Image Fill)
    {
        if (aviablesklpoints != 0)
        {
            if (Skl != 10)
            {
                Skl++;
                aviablesklpoints--;

                Fill.fillAmount = Skl / 10;
            }
        }
    }


Синтаксис:
Используется csharp
public void CheckSkl(ref TextMeshProUGUI TxT, ref Image sklFill, ref float Skl)
    {
        TxT.text = Skl.ToString();
        if (Skl < 4)
        {
            sklFill.color = new Color(255, 0, 0, 255);
        }
        else if (Skl < 8 && Skl >= 4)
        {
            sklFill.color = new Color(255, 120, 0, 255);
        }
        else
        {
            sklFill.color = new Color(0, 255, 0, 255);
        }
    }


Синтаксис:
Используется csharp
public void OnPlusCodClick()
    {
        PlusSkl(ref codSkl, ref codSklFill);
        CheckSkl(ref codSklTxT, ref codSklFill, ref codSkl);
    }
plytonk
UNец
 
Сообщения: 20
Зарегистрирован: 29 май 2020, 11:43

Re: Проблема с присваиванием методу переменных.

Сообщение 1max1 08 май 2022, 12:32

Скорей всего таким извращением никто заниматься не будет)
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51


Вернуться в Общие вопросы

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

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