Size: a a a

2020 October 26

PA

Puptsev Andrey in Unreal Engine
Dinosaurus
Всем привет. Прошу заранее прощения, если тут не уместны вопросы, но тут можно задавать вопросы по поводу C++ Unreal Engine 4? Я дикий новичок и есть один момент, с которым я не могу никак разобраться
не задавайте мета вопросов, сразу спрашивайте, коротко и по делу, люди тратят на вас свое время - это ооочень дорого)
источник

D

Dinosaurus in Unreal Engine
Окей, прошу прощения

В общем, мне нужно создать функцию в C++ (которая в дальнейшем будет вызываться через Blueprints), где нужно во входном параметре указать созданный пользователем виджет (почитал в документации - это называется вроде как UUserWidget, вот ссылка https://docs.unrealengine.com/en-US/API/Runtime/UMG/Blueprint/UUserWidget/index.html)

Только вот каким образом это сделать? Я сделал вот таким образом (как на скриншоте), но у меня после 10 минут компиляции появляется непонятная ошибка с кракозябрами непонятными
источник

D

Dinosaurus in Unreal Engine
Под словом созданный пользователем виджет - я имею в виду тот виджет, который я создал в редакторе
источник

S

Soap in Unreal Engine
Dinosaurus
Окей, прошу прощения

В общем, мне нужно создать функцию в C++ (которая в дальнейшем будет вызываться через Blueprints), где нужно во входном параметре указать созданный пользователем виджет (почитал в документации - это называется вроде как UUserWidget, вот ссылка https://docs.unrealengine.com/en-US/API/Runtime/UMG/Blueprint/UUserWidget/index.html)

Только вот каким образом это сделать? Я сделал вот таким образом (как на скриншоте), но у меня после 10 минут компиляции появляется непонятная ошибка с кракозябрами непонятными
могу посоветовать "топорный" но возможно рабочий вариант:
делаешь тоже самое в блупринтах -> конверитишь в плюсы -> смотришь что там нагенерило
источник

D

Dinosaurus in Unreal Engine
Soap
могу посоветовать "топорный" но возможно рабочий вариант:
делаешь тоже самое в блупринтах -> конверитишь в плюсы -> смотришь что там нагенерило
Blueprint Nativization?
источник

S

Soap in Unreal Engine
нет
источник

n

norlin in Unreal Engine
Dinosaurus
Окей, прошу прощения

В общем, мне нужно создать функцию в C++ (которая в дальнейшем будет вызываться через Blueprints), где нужно во входном параметре указать созданный пользователем виджет (почитал в документации - это называется вроде как UUserWidget, вот ссылка https://docs.unrealengine.com/en-US/API/Runtime/UMG/Blueprint/UUserWidget/index.html)

Только вот каким образом это сделать? Я сделал вот таким образом (как на скриншоте), но у меня после 10 минут компиляции появляется непонятная ошибка с кракозябрами непонятными
для начала, снеси русскую локализацию студии и поставь английскую, чтоб вместо кракозябров текст ошибки видеть :)

UUserWidget* - правильный тип параметра, чтоб передать инстанс виджета
Если надо класс виджета передать - то юзай тип TSubclassOf<UUserWidget>
источник

S

Soap in Unreal Engine
в блупринте тыкаешь файл->девелопер->генерейт натив код
источник

D

Dinosaurus in Unreal Engine
norlin
для начала, снеси русскую локализацию студии и поставь английскую, чтоб вместо кракозябров текст ошибки видеть :)

UUserWidget* - правильный тип параметра, чтоб передать инстанс виджета
Если надо класс виджета передать - то юзай тип TSubclassOf<UUserWidget>
А если нужно не класс передать, а ссылку на объект (Object Reference)?
источник

n

norlin in Unreal Engine
Dinosaurus
А если нужно не класс передать, а ссылку на объект (Object Reference)?
Ну я же написал, первый вариант правильный (`UUserWidget*`)
источник

D

Dinosaurus in Unreal Engine
norlin
Ну я же написал, первый вариант правильный (`UUserWidget*`)
Так значит я передаю всё правильно?
Я делаю вот так: (UUserWidget* TextBox) (где TextBox - название созданного виджета)
источник

n

norlin in Unreal Engine
TextBox это просто имя аргумента, оно никак не связано с именем того виджета, который потом будет передаваться в эту функцию

Но в целом да, тип аргумента правильный
источник

n

norlin in Unreal Engine
Dinosaurus
Окей, прошу прощения

В общем, мне нужно создать функцию в C++ (которая в дальнейшем будет вызываться через Blueprints), где нужно во входном параметре указать созданный пользователем виджет (почитал в документации - это называется вроде как UUserWidget, вот ссылка https://docs.unrealengine.com/en-US/API/Runtime/UMG/Blueprint/UUserWidget/index.html)

Только вот каким образом это сделать? Я сделал вот таким образом (как на скриншоте), но у меня после 10 минут компиляции появляется непонятная ошибка с кракозябрами непонятными
возвращаемый тип, который на скриншоте, я не знаю, но если надо возвращать именно такие данные - то всё должно быть ок, если все нужные инклюды добавлены
источник

D

Dinosaurus in Unreal Engine
norlin
возвращаемый тип, который на скриншоте, я не знаю, но если надо возвращать именно такие данные - то всё должно быть ок, если все нужные инклюды добавлены
Возвращаемый тип - это переменная типа UStruct, но тут она не имеет значения в принципе.

В общем, я понял, спасибо, сейчас попробую скомпилировать.

Только я не пойму одного, а как мне сделать так, чтобы с Blueprints можно было выбирать не любой созданный пользователем виджет, а только один конкретный? Который называется TextBox
источник

D

Dinosaurus in Unreal Engine
norlin
возвращаемый тип, который на скриншоте, я не знаю, но если надо возвращать именно такие данные - то всё должно быть ок, если все нужные инклюды добавлены
Я попытался скомпилировать, появилась такая же ошибка (хотя я всё равно переключил на английский язык)
источник

D

Dinosaurus in Unreal Engine
источник

D

Dinosaurus in Unreal Engine
Вот скриншот, как выглядит функция в Header
источник

n

norlin in Unreal Engine
Dinosaurus
Я попытался скомпилировать, появилась такая же ошибка (хотя я всё равно переключил на английский язык)
¯\_(ツ)_/¯ надо русскую локализацию студии и билд тулзов снести напрочь

А вообще - стоит проверить инклюды, форвард декларейшн, правильность сигнатуры метода в cpp файле и т.д.
источник

VA

Vladimir Alyamkin in Unreal Engine
norlin
¯\_(ツ)_/¯ надо русскую локализацию студии и билд тулзов снести напрочь

А вообще - стоит проверить инклюды, форвард декларейшн, правильность сигнатуры метода в cpp файле и т.д.
а еще лучше - проверить линковку) ощущение что тупо UMG модуль забыли положить. или какой-то из слейтов.
источник

D

Dinosaurus in Unreal Engine
norlin
¯\_(ツ)_/¯ надо русскую локализацию студии и билд тулзов снести напрочь

А вообще - стоит проверить инклюды, форвард декларейшн, правильность сигнатуры метода в cpp файле и т.д.
Я просто дня два уже пытаюсь решить эту проблему, по-разному пытался, но так и не смог)
источник