Не удается неявно преобразовать тип ‘UnityEngine.Преобразовать» в «UnityEngine.UI.Text»

#c# #unity3d

Вопрос:

Я пытаюсь найти объект внутри объекта, оба объекта в настоящее время включены, это мой код, который выдает следующую ошибку.

 PriceObject = Container.transform.Find(Skin).transform.Find("Price");
 

Не удается неявно преобразовать тип ‘UnityEngine.Преобразовать» в «UnityEngine.UI.Text»

Комментарии:

1. Похоже, ваша переменная «PriceObject» определяет пользовательский интерфейс. Текстовый компонент. Измените это преобразование или если у вашего родительского игрового объекта преобразования есть пользовательский интерфейс. Текстовый компонент попробуйте добавить «Ваш код». GameObject.GetComponent<Текст>()

2. Я бы сказал, что ошибка вполне объяснима … что именно вы не понимаете в Cannot implicitly convert type 'UnityEngine.Transform' to 'UnityEngine.UI.Text' -> > CS0029

Ответ №1:

Выражение:

 Container.transform.Find(Skin).transform.Find("Price");
 

в результате возвращается последний элемент. В этом случае функция Find(«Цена») возвращает преобразование.

Итак, вам нужно добавить после поиска(«Цена») (что возвращает UnityEngine.Преобразование) функция для получения текстового компонента внутри игрового объекта этого преобразования. Эта функция называется GetComponent() (которая возвращает UnityEngine.UI.Текст).

Выражение должно выглядеть так:

 PriceObject = Container.transform.Find(Skin).transform.Find("Price").GetComponent<Text>();
 

Комментарии:

1. Не. Функция Find() уже возвращает объект преобразования, и вызывать ее не нужно . трансформироваться?