Size: a a a

2019 August 06

M(

Micron (Edward) in Unreal Engine
Sergey Dikiy
MyObject->IsPendingKill ?
FORCEINLINE bool IsPendingKill() const
{
return GUObjectArray.IndexToObject(InternalIndex)->IsPendingKill();
}

Если индекс будет не валидный, то IndexToObject nullptr выдаст и краш
источник

SD

Sergey Dikiy in Unreal Engine
Ах. да. Точно =) Недопонял изначально
источник

N

NoCodeBugsFree in Unreal Engine
Micron (Edward)
FORCEINLINE bool IsPendingKill() const
{
return GUObjectArray.IndexToObject(InternalIndex)->IsPendingKill();
}

Если индекс будет не валидный, то IndexToObject nullptr выдаст и краш
if(IsValid(pointer)) { ... }
источник

AR

Anton Rassadin in Unreal Engine
Micron (Edward)
Можно ли как нибудь UObject на валидность проверить? Бывает так что указатель остается, но gc уже удалил его.
Похоже, что в таком случае есть проблема в коде — uobject хранится в сыром указателе.
источник

M(

Micron (Edward) in Unreal Engine
Anton Rassadin
Похоже, что в таком случае есть проблема в коде — uobject хранится в сыром указателе.
Ага, это я понимаю. Просто этот указатель улетает из движка в dll и с callback'ом возращается, как context. Редко бывает что контекст уже очищен gc.
Как вариант это в деструкторе удалять callback из dll. Другого в голову не приходит.
Это просто латентные запросы.
источник

AR

Anton Rassadin in Unreal Engine
Micron (Edward)
Ага, это я понимаю. Просто этот указатель улетает из движка в dll и с callback'ом возращается, как context. Редко бывает что контекст уже очищен gc.
Как вариант это в деструкторе удалять callback из dll. Другого в голову не приходит.
Это просто латентные запросы.
Если ты отдаёшь невладеющий указатель наружу, в движке нужно прикопать владеющий. Так сделать нельзя?
источник

M(

Micron (Edward) in Unreal Engine
Anton Rassadin
Если ты отдаёшь невладеющий указатель наружу, в движке нужно прикопать владеющий. Так сделать нельзя?
Эти ubject'ы на самом деле акторы различные, в которых вызывается латентая функция из bp function library. Наружу uuid FPendingLatentAction подается и указатель на контекст, потом в контексте уже ищу экшн нужный. Ну я явно делаю что-то не то.
источник

AR

Anton Rassadin in Unreal Engine
Если я верно понял твою задачу, то у тебя есть два решения без хаков:
1. Если объект по условию задачи должен дожить до коллбека, то нужно обеспечить средствами движка достаточное время жизни UObject, то есть хранить на него жёсткую ссылку либо добавить его в GC root set.
2. Если объект по услвиям задачи не обязательно доживёт до коллбека, то можно передавать наружу не невладеющий указатель на UObject, а id этого объекта в прокси-объекте. Прокси-объект будет содержать в себе слабую ссылку на Uobject. Получится, что вызов коллбека с id удалённого объекта не создаст проблем — такой вызов не пропустит прокси.
источник

M(

Micron (Edward) in Unreal Engine
Anton Rassadin
Если я верно понял твою задачу, то у тебя есть два решения без хаков:
1. Если объект по условию задачи должен дожить до коллбека, то нужно обеспечить средствами движка достаточное время жизни UObject, то есть хранить на него жёсткую ссылку либо добавить его в GC root set.
2. Если объект по услвиям задачи не обязательно доживёт до коллбека, то можно передавать наружу не невладеющий указатель на UObject, а id этого объекта в прокси-объекте. Прокси-объект будет содержать в себе слабую ссылку на Uobject. Получится, что вызов коллбека с id удалённого объекта не создаст проблем — такой вызов не пропустит прокси.
Ага, вот я пытался реализовать второй вариант но вместо прокси-объекта использовал FLatentActionManager, но он не может чисто по id найти нужный мне action, ему на вход еще указатель на объект который вызвал этот action нужно подавать. Самый верным решением думаю будет сделать все же свой объект где буду хранить указатели на нужные uobject'ы.
источник

M(

Micron (Edward) in Unreal Engine
Спасибо
источник

TN

That Name in Unreal Engine
Если шо, обращайся
источник

TN

That Name in Unreal Engine
возможно просто нанять человека который умеет анимации делать да и всё
источник

VK

Vladimir Kovalenko in Unreal Engine
Всем привет, подскажите пожалуйста, не знаю как сделать походку перснажа задом, как Кратос допустим, когда при нажатии кнопки S персонаж не разворачивается а пятится назад. Использую Third Person Blueprint, но там такого нет.
источник

N

NoCodeBugsFree in Unreal Engine
Vladimir Kovalenko
Всем привет, подскажите пожалуйста, не знаю как сделать походку перснажа задом, как Кратос допустим, когда при нажатии кнопки S персонаж не разворачивается а пятится назад. Использую Third Person Blueprint, но там такого нет.
Orient Rotation to Movement в кар мув компоненте погляди
источник

VK

Vladimir Kovalenko in Unreal Engine
убирал галочку, тогда не совсем корректное движение получается
источник

VK

Vladimir Kovalenko in Unreal Engine
блокировать ориентацию не вариант так как мне это нужно для движения вперед
источник

VA

Vladimir Alyamkin in Unreal Engine
Micron (Edward)
Можно ли как нибудь UObject на валидность проверить? Бывает так что указатель остается, но gc уже удалил его.
Не делать так. Это у тебя память битая, что ты хочешь с ней проверить то?
источник

VA

Vladimir Alyamkin in Unreal Engine
Хотя тебе выше Антон уже ответил, да
источник

N

NoCodeBugsFree in Unreal Engine
Vladimir Kovalenko
блокировать ориентацию не вариант так как мне это нужно для движения вперед
скачай проект ContentExample в лаунчере, сделай поиск по БП,
PlayerCharacter_NEtwork имеет функционал , который ты просишь.
источник

AC

Alexander Cherkasov in Unreal Engine
звучит как "сделайте игру про караваны, бюджет 150 рублей"
источник