Есть меню уровней. При нажатии на кнопку уровня, тебя переносит на сам уровень. Идея заключается в том, что все кнопки уровней изначально серые и только когда игрок уже побывал уже на самом уровне тогда кнопка становится белой. Название кнопки в редакторе, это номер самого уровня, то есть уровень 1, название кнопки 1. Есть PlayerPrefs int, называется levelNum она равняется последнему уровню на котором побывал игрок. Написал вот такой скрипт
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class jump : MonoBehaviour
{
public Text puk;//текст который должен становится белым
static bool bol = false;//статическая булевая что бы если levelNum уже не равняется названию кнопки, кнопка оставалась белой
private void Awake()
{
string name = this.gameObject.name;
int num;
int.TryParse(name, out num);//конвертируем название кнопки из string в int
if (num == PlayerPrefs.GetInt("levelNum"))
{
bol = true;
}
if (bol)
{
puk.color = Color.white;
}
}
}
Такой скрипт весит на каждой кнопке. Всё работает, но есть одна проблема. Если мы добрались до одного уровня, то белыми становятся все цифры. Я понял то что это происходит из за того что один скрипт весит на всех кнопках. Как это можно исправить? Не писать же для 40 кнопок сорок скриптов)