из объекта типа UnityEngine.Object?
Вот пример:
[SerializeField]
private Object _obj;
И нужно что-то типа:
var toolObj = _obj as IDirectoryTools;
Валар дохаэрис
а чем var toolObj = _obj as IDirectoryTools; не вариант? Единственно, что тебе нужно убедиться, что объект действительно может быть приведен к этому интерфейсу
Из UnityEngine.Object нельзя через as извлечь интерфейс. Всегда результат будет null. Нужно преобразовать сначала в GameObject и только потом через .GetComponent< IDirectoryTools>(); получить интерфейс.
Наверно единственный выход это написать свое расширение для этого типа. Пока решил остановится на этом варианте.
если у тебя есть объект типа UnityEngine.Object, который реализует нужный интерфейс, и этот класс не является компонентом или типом, производным от UnityEngine.Object, попробуй так private Object _obj; void Start() { IDirectoryTools _directoryTools = (_obj as Component)?.GetComponent<IDirectoryTools>(); _directoryTools?.SomeMethod(); }
Юнити запретит =)
Я разрешаю, можно)
Обсуждают сегодня