Unreal EngineФорумBlueprints

Как добавить значения во вложенную TMap?

#0
21:21, 29 сен 2024

дратути!

может что то тупое спрашиваю, но, как добавить значения собсно ?
есть Map c ключом типа Actor, и переменной типа Struct в которой еще один Map name, actor.

все перепробовал, никак, в переменную map добавляет, а во вложенную нед! нужно много значений добавлять вложенной.

туплю? или оно заведомо мертвое.

#1
22:27, 29 сен 2024

Я тоже в свое время не понял, почему оно не работает так.
Я точно не помню, примерно помню.
1) Придется создать новую переменную, записать в нее значение "переменной типа Struct".
2) В новой переменной изменить значение Map name, actor.
3) Вставить значение новой переменной в первоначальную Map.
Если используется часто, то это можно обернуть в функцию или макрос.

Насколько я знаю, если делать через С++, то там 3 вида Map, а в блупринтах только такая, своеобразная.

Я вам очень советую не вкладывать структуры в структуры. Когда проект вырастет, то проект может необратимо сломаться. Очень много потом возни будет, когда изменение одной структуры ломает все другие, в которые она вложена.

#2
23:03, 29 сен 2024

действительно, оно живое! благодарю.
Imperator_Igor
> Я вам очень советую не вкладывать структуры в структуры. Когда проект вырастет, то проект может необратимо сломаться

если что то менять в структуре? или само по себе козявится.

#3
0:53, 30 сен 2024

У меня постоянно ломался проект из-за структур, вложенных в другие структуры.
Очень часто приходится менять какие-то переменные в структурах. Если проект небольшой, то ошибок не будет. А иначе могут все ссылки во всех блупринтах сломаться, включая вложенные структуры.
Даже простое переименование переменной структуры может привести к таким последствиям. На форумах об этом много пишут. Лучше заранее узнать об этом.
Ещё я читал, что лучший вариант - объявить структуру в с++, там вроде как очень просто. Пишут, что так стабильнее работает.

#4
(Правка: 15:42) 15:37, 30 сен 2024

объявить структуру в с++, там вроде как очень просто.

Да.
Вот так легко.

//объявили
struct person
{
    unsigned age;
    std::string name;
};
//в коде заюзали
    person tom;
    tom.name = "Tom";
    tom.age = 34;

    person Sem;
    Sem.name = "Sem";
    Sem.age = 24;
#5
3:14, 1 окт 2024

Imperator_Igor
> Ещё я читал, что лучший вариант - объявить структуру в с++, там вроде как очень просто. Пишут, что так стабильнее работает.
Так и есть. По крайней мере в 4.27 блюпринтовые структуры забагованы и часто ломаются, а данные в ассетах с ними затираются.
Лучше объявить на стороне c++. И карты (особенно вложенные) лучше ворочать тоже на стороне плюсов - там есть функции, работающие гораздо быстрее без копирования (на стороне блюпринтов у карты все функции с копированием - вытащив вложенную карту, ты получаешь не ссылку на неё, а копию, поэтому в оригинальную ничего и не вставляется).
Владение языком тут требуется самое базовое.

Unreal EngineФорумBlueprints