Я новичок в C# и Unity и не могу найти четкий ответ на мою проблему.
Я пытаюсь создать простой TextMeshProUGUI
буфер текстового журнала на панели. Сам буфер работает нормально, пока я не попытаюсь получить к нему доступ из другого класса - я полагаю, потому что я не создаю ссылку на панель правильно.
Вот мой код для TextMeshProUGUI
сборщика объектов:
using System.Collections.Generic;
using UnityEngine;
using TMPro;
public class TextLogControl : MonoBehaviour
{
public TextMeshProUGUI textPrefab; // Unity prefab
public List<TextMeshProUGUI> textItems = new List<TextMeshProUGUI>();
[SerializeField]
public int maxItems = 100;
public void LogText(string newTextString, Color newColor)
{
Instantiate(textPrefab, transform);
textPrefab.text = newTextString;
if (textItems.Count >= maxItems)
{
textItems.RemoveAt(0); // I should probably be destroying something, but that's another question
}
textPrefab.gameObject.SetActive(true);
textItems.Add(textPrefab);
}
// The above function works correctly if I write a test function within this same class
}
Вот код для класса, который пытается получить доступ к функции LogText()
:
using System;
using UnityEngine;
public class World : MonoBehaviour
{
Color defaultColor = Color.black;
public TextLogControl textLog;
public void Init()
{
// I need to create a reference here somewhere, but nothing I am trying is working
textLog.LogText("Welcome - you made it!", defaultColor);
}
}
Я помещаю скрипт TextLogControl
в Unity GameObject
, который содержит TMP
объектов, и это работает само по себе.
Я думал, что создаю ссылку на держатель GameObject
, перетаскивая его на свой объект World в Unity, как показано ниже, но я все еще получаю NRE, когда я звоню World.Init()
, что означает, что я делаю что-то не так, но я не могу понять, что.
Я думал, что это создаст ссылку, которая не создается
Редактировать: я получаю ошибку
NullReferenceException: ссылка на объект не установлена на экземпляр объекта
При попытке запустить World.Init()
- в частности, textLog
является нулевым, даже если я перетащил его в соответствующее место в Unity (я верю).