В Unity есть несколько объектов в виде кнопок с названием: Award1, Award2, Award3, Award5, Award10, Award15, Award20, Award50, Award100 и AwardKing. Все они изначально должны быть заблокированы от нажатия. Есть текстовый объект beeCoinsNum в который записываются очки. Выполнить условие, если цифра текста объекта beeCoinsNum больше или равна 10, то кнопка с названием Award1 должна быть разблокирована от нажатия. Если цифра текста beeCoinsNum больше или равна 20, то кнопка с названием Award2 должна быть разблокирована от нажатия. И так далее. Последняя кнопка AwardKing будет разблокирована при значении цифры beeCoinsNum больше или равно 1500.
Для реализации желаемой логики в Unity, вы можете использовать следующий пример кода на C#. Этот скрипт будет проверять значение очков в beeCoinsNum
и разблокировать соответствующие кнопки в зависимости от их значений.
- Убедитесь, что у вас есть ссылки на кнопки и текстовый объект в вашем скрипте. Вы можете использовать
Button
для кнопок иText
(илиTMP_Text
для TextMeshPro) для текстового объекта. - При старте игры все кнопки должны быть заблокированы. С помощью метода
UnityEngine.UI.Button.interactable
это можно сделать.
Вот примерный код, который вы можете использовать:
using UnityEngine;
using UnityEngine.UI;
using TMPro;
public class AwardManager : MonoBehaviour
{
public Button award1;
public Button award2;
public Button award3;
public Button award5;
public Button award10;
public Button award15;
public Button award20;
public Button award50;
public Button award100;
public Button awardKing;
public TMP_Text beeCoinsNumText;
private void Start()
{
// Изначально блокируем все кнопки
LockAllButtons();
// Проверяем очки и разблокируем кнопки
UpdateButtons();
}
private void LockAllButtons()
{
award1.interactable = false;
award2.interactable = false;
award3.interactable = false;
award5.interactable = false;
award10.interactable = false;
award15.interactable = false;
award20.interactable = false;
award50.interactable = false;
award100.interactable = false;
awardKing.interactable = false;
}
private void UpdateButtons()
{
int beeCoinsNum = int.Parse(beeCoinsNumText.text);
if (beeCoinsNum >= 10) award1.interactable = true;
if (beeCoinsNum >= 20) award2.interactable = true;
if (beeCoinsNum >= 30) award3.interactable = true;
if (beeCoinsNum >= 50) award5.interactable = true;
if (beeCoinsNum >= 100) award10.interactable = true;
if (beeCoinsNum >= 150) award15.interactable = true;
if (beeCoinsNum >= 200) award20.interactable = true;
if (beeCoinsNum >= 500) award50.interactable = true;
if (beeCoinsNum >= 1000) award100.interactable = true;
if (beeCoinsNum >= 1500) awardKing.interactable = true;
}
// Вызывайте метод UpdateButtons при изменении значения beeCoinsNum
public void SetBeeCoinsNum(int newAmount)
{
beeCoinsNumText.text = newAmount.ToString();
UpdateButtons();
}
}
Пояснения:
- Кнопки и текст: В скрипте есть ссылки на кнопки и текстовый объект. Убедитесь, что эти объекты правильно связаны в инспекторе Unity.
- LockAllButtons(): Этот метод по умолчанию блокирует все кнопки в начале.
- UpdateButtons(): Этот метод проверяет значение очков и разблокирует соответствующие кнопки.
- SetBeeCoinsNum(int newAmount): Этот метод можно вызывать при изменении количества очков, чтобы обновить значение и состояние кнопок.
Теперь, когда значение beeCoinsNum
меняется, вызывайте метод SetBeeCoinsNum
, и кнопки будут разблокироваться в зависимости от условий.