Hello everybody. I’ve got a problem.
I have a prefab with name LetterButton with Button component, which onclick should pass TextMeshPro component to GameManager script. In GameManager script I create many instances of LetterButton prefab. But when i click on them NullReferenceException error appears. Is there a way to add references to created at runtime prefab instances, which I can use in GameManager script?
public class LetterButton : MonoBehaviour
{
[SerializeField] public TextMeshProUGUI letterButtonText;
[SerializeField] public Button letterButton;
private bool letterButtonPressed;
private void Awake() {
letterButton.onClick.AddListener(() => GameManager.Instance.LetterButtonPressed(letterButtonText));
}
public class GameManager: MonoBehaviour
{
public static GameManager Instance { get; private set; }
[SerializeField] private LetterButton letterButtonPrefab;
[SerializeField] private Canvas canvas;
private float letterSpawnTimer;
private void Awake() {
Instance = this;
}
void Update()
{
letterSpawnTimer += Time.deltaTime;
if (letterSpawnTimer >= 2f) {
SpawnLetter();
letterSpawnTimer = 0f;
}
}
private void SpawnLetter() {
string letter;
LetterButton lb = PrefabUtility.InstantiatePrefab(letterButtonPrefab) as LetterButton;
lb.transform.position = new Vector2(Random.Range(-350f, 250f), 1050f);
lb.SetText(letter);
lb.transform.SetParent(canvas.transform, false);
}
public void LetterButtonPressed(TextMeshProUGUI letterButtonText) {
//code
}