В Unity я хочу создать свой пользовательский интерфейс таким образом:Назначение щелкать-обработчик на кнопки интерфейса, загружаемых из сборного во время выполнения
- Создать GameObject UI все тексты кнопок// и т.д.. изложенных в нем.
- Сохраните этот объект как сборник.
- Загрузите сборку во время выполнения и создайте экземпляр и добавьте ее как дочерний элемент в родительский объект контейнера пользовательского интерфейса.
Теперь проблема заключается в том, как назначить обработчики событий для кнопок во время выполнения (поскольку назначенные в инспекторе удаляются при создании сборника).
Я пытаюсь этот код, но он не работает:
GameObject uiObj = ResourceUtil.InstantiatePrefab("Prefabs/UI/Main Menu UI", "UI");
uiObj.transform.SetParent(gameObject.transform, false);
Button[] buttons = uiObj.GetComponentsInChildren<Button>();
foreach (Button button in buttons)
{
button.onClick.AddListener(() => OnUIButtonClick(button));
}
private void OnUIButtonClick(Button button)
{
Log.Debug("OnUIButtonClick: " + button);
}
префаб UI загружен и успешно добавлен, но кнопки не действуют на щелкая их. Кто-нибудь знает, как это сделать успешно?
Да EventSystem находится в сцене, но я добавил ее вручную. – BadmintonCat
Я понял! Мне пришлось добавить GraphicRaycaster к объекту Canvas, который используется в качестве родителя для моего объекта меню. – BadmintonCat