Страница 1 из 1

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

СообщениеДобавлено: 07 май 2022, 12:10
plytonk
Всем, привет. Сделал два метода, каждому из методов должна присваиваться глобальная переменная и изменяться в соответствии с функциями методов, но ничего не происходит.

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

Синтаксис:
Используется 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);
    }

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

СообщениеДобавлено: 07 май 2022, 12:11
plytonk
Можно, конечно, для каждой кнопки расписать код, но в целях оптимизации ищу варианты снизить количество строк кода.

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

СообщениеДобавлено: 07 май 2022, 18:03
plytonk
Для тех, кто будет интересоваться данным вопросом оставляю ответ на решение данной проблемы.

Необходимо добавить в описание метода к переменным ключевое слово "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);
    }

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

СообщениеДобавлено: 08 май 2022, 12:32
1max1
Скорей всего таким извращением никто заниматься не будет)