Singletony pozwalają na bezpośredni dostęp do danego skryptu bez tworzenia referencji. Singleton oznacza, że na scenie będzie tylko jeden obiekt z danym skryptem.
Przykład użycia Singletona do wyświetlania ilości przeciwników na scenie.
public static UIManager Instance { get; private set; }
[SerializeField] TMP_Text txtEnemyCount;
int enemyCount = 0;
private void Awake()
{
if (Instance != null && Instance != this)
{
Destroy(this);
// Destroy(this.gameObject);
}
else
{
Instance = this;
}
}
void Start()
{
DisplayEnemyCount();
}
void DisplayEnemyCount()
{
txtEnemyCount.text = $"Enemy Count: {enemyCount}";
}
public void UpdateEnemy(int enemy)
{
enemyCount += enemy;
DisplayEnemyCount();
}
Jak odwołać się do singletona?
// Enemy script
private void OnEnable()
{
UIManager.Instance.UpdateEnemy(1);
}
private void OnDisable()
{
UIManager.Instance.UpdateEnemy(-1);
}