Есть код:
private GameObject PastObj;
private GameObject[] AllUsing;
public int Offset;
private void Awake()
{
if (name != "1")
{
AllUsing = GameObject.FindGameObjectsWithTag("CatUpgradesParent");
foreach (GameObject Obj in AllUsing) if (Obj.name == (Int32.Parse(name) - 1).ToString()) PastObj = Obj;
Debug.Log(name + " | " + GetComponent<RectTransform>().anchoredPosition.y + " - " + PastObj.GetComponent<RectTransform>().anchoredPosition.y + " obj " + PastObj.name + " " + PastObj.transform.root.GetComponent<CatUpgrade>().islight);
}
}
private void Update()
{
if (PastObj.transform.root.GetComponent<CatUpgrade>().islight) Offset = -50;
else Offset = -150;
if (name != "1" && GetComponent<RectTransform>().anchoredPosition.y - PastObj.GetComponent<RectTransform>().anchoredPosition.y != Offset) transform.Translate(new Vector2(0, 1) * Time.deltaTime);
}
В массиве AllUsing элементы с именами:
В методе Awake() foreach должен из всех элементов массива AllUsing найти тот, у которого имя соответствует имени элемента на котором скрипт - 1. Но PastObj всегда оказывается пустым. Почему?
UPD: Этот скрипт висит на всех объектах массива AllUsing и все они с тегом CatUpgradesParent
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости