Вот два сценария, которые у меня есть:
"РудМайнер"
Код: Выделить всё
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using TMPro;
public class OreMiner : MonoBehaviour
{
public float miningRate = 1.0f; // Ores per second
public List oreTags; // List of tags for different ore types
public List oreCountTexts; // List of UI texts to update ore count for each type
private Dictionary totalOres = new Dictionary();
public SetOreCountTexts SetOre; // Ensure this is of type SetOreCountTexts
void Start()
{
// Check if SetOre is assigned
if (SetOre != null && SetOre.textList != null)
{
// Initialize oreCountTexts from SetOre
oreCountTexts = new List(SetOre.textList);
}
else
{
Debug.LogError("SetOre or SetOre.textList is not assigned.");
return;
}
// Initialize ore counts for each type
foreach (string tag in oreTags)
{
totalOres[tag] = 0;
}
StartCoroutine(MineOres());
}
IEnumerator MineOres()
{
while (true)
{
yield return new WaitForSeconds(1.0f / miningRate);
CollectOres();
}
}
void CollectOres()
{
foreach (string oreTag in oreTags)
{
Collider[] oresInRange = Physics.OverlapBox(transform.position, transform.localScale / 2, Quaternion.identity, LayerMask.GetMask(oreTag));
foreach (var ore in oresInRange)
{
totalOres[oreTag]++;
Destroy(ore.gameObject); // Remove the ore from the scene
}
}
UpdateUI();
}
void UpdateUI()
{
for (int i = 0; i < oreTags.Count; i++)
{
string oreTag = oreTags[i];
oreCountTexts[i].text = $"{oreTag} Collected: {totalOres[oreTag]}";
}
}
}
Код: Выделить всё
using System.Collections.Generic;
using UnityEngine;
using TMPro;
public class SetOreCountTexts : MonoBehaviour
{
public List textList = new List();
}
Я просмотрел другие сообщения с похожими проблемами, но проблема не была устранена, например, это несоответствие типов Unity для префабов и другие дубликаты моей проблемы. Я попробовал немного изменить код, но безрезультатно. Я также попытался создать объект сценария и назначить текстовые поля этому объекту сценария. Я также пытался распаковать префаб, ввести текстовые поля в результирующий объект и пересоздать префаб, но всякий раз, когда я заново создавал префаб, список текстовых полей просто очищался. Есть ли какое-либо решение или обходной путь для этой проблемы?
Подробнее здесь: https://stackoverflow.com/questions/791 ... ect-to-a-p