Size: a a a

2021 February 11

SR

Sergey R in Unreal Engine
Kaptn Wayne
Есть какой то способ обойти наложение декалей на прозрачные материалы? потому что если у материала есть прозрачность то декаль на него накладываться не хочет
источник

KW

Kaptn Wayne in Unreal Engine
Не, там не решение к сожалению =))
источник

VK

Vladimir Kuleshov in Unreal Engine
Хочу вызывать по таймеру функцию с параметрами, нашел такой способ, но смущает что он не описан в документации
Нормально ли так работать с таймерами?

FTimerDelegate TimerDel;
 
FTimerHandle TimerHandle;

int32 MyInt = 10;
float MyFloat = 20.f;

//Binding the function with specific values
TimerDel.BindUFunction(this, FName("MyUsefulFunction"), MyInt, MyFloat);
//Calling MyUsefulFunction after 5 seconds without looping
GetWorld()->GetTimerManager().SetTimer(TimerHandle, TimerDel, 5.f, false);
источник

AN

Andy Nekca in Unreal Engine
Вопрос по оптимизации -  8 текстур по 512 или 1 текстура на 4к - что лучше?
источник

p

pika42 in Unreal Engine
Andy Nekca
Вопрос по оптимизации -  8 текстур по 512 или 1 текстура на 4к - что лучше?
зависит от видеокарты
источник

p

pika42 in Unreal Engine
но обычно 1 текстура лучше 8ми
источник

p

pika42 in Unreal Engine
однако на мобилках бывают нюансы
источник

AN

Andy Nekca in Unreal Engine
pika42
однако на мобилках бывают нюансы
Мобилки не интересуют)
источник

p

pika42 in Unreal Engine
Andy Nekca
Мобилки не интересуют)
а ведь такой перспективный рынок
источник

AR

Anton Rassadin in Unreal Engine
Vladimir Kuleshov
Хочу вызывать по таймеру функцию с параметрами, нашел такой способ, но смущает что он не описан в документации
Нормально ли так работать с таймерами?

FTimerDelegate TimerDel;
 
FTimerHandle TimerHandle;

int32 MyInt = 10;
float MyFloat = 20.f;

//Binding the function with specific values
TimerDel.BindUFunction(this, FName("MyUsefulFunction"), MyInt, MyFloat);
//Calling MyUsefulFunction after 5 seconds without looping
GetWorld()->GetTimerManager().SetTimer(TimerHandle, TimerDel, 5.f, false);
источник

R

Respirant in Unreal Engine
Vladimir Kuleshov
Хочу вызывать по таймеру функцию с параметрами, нашел такой способ, но смущает что он не описан в документации
Нормально ли так работать с таймерами?

FTimerDelegate TimerDel;
 
FTimerHandle TimerHandle;

int32 MyInt = 10;
float MyFloat = 20.f;

//Binding the function with specific values
TimerDel.BindUFunction(this, FName("MyUsefulFunction"), MyInt, MyFloat);
//Calling MyUsefulFunction after 5 seconds without looping
GetWorld()->GetTimerManager().SetTimer(TimerHandle, TimerDel, 5.f, false);
Всё довольно просто.

Для начала в Header'е нужно объявить FTimerHandle:
"FTimerHandle TimerHandleSampleName;"

Потом внутри нужного метода пишешь:
"GetWorld()->GetTimerManager().SetTimer(TimerHandleSampleName, this, &USampleObject::SampleFunctionToCallFromTimer, 3, false);"

Где "USampleObject::SampleFunctionToCallFromTimer" - это созданный метод в объекте (то есть функция, которая будет вызываться по таймеру)


Лучше всего BindUFunction избегать, а использовать динамическую привязку, как я написал выше
источник

p

pika42 in Unreal Engine
Ребят, а в этом вашем анриле есть аналог плюсовой деки?
источник

VK

Vladimir Kuleshov in Unreal Engine
Respirant
Всё довольно просто.

Для начала в Header'е нужно объявить FTimerHandle:
"FTimerHandle TimerHandleSampleName;"

Потом внутри нужного метода пишешь:
"GetWorld()->GetTimerManager().SetTimer(TimerHandleSampleName, this, &USampleObject::SampleFunctionToCallFromTimer, 3, false);"

Где "USampleObject::SampleFunctionToCallFromTimer" - это созданный метод в объекте (то есть функция, которая будет вызываться по таймеру)


Лучше всего BindUFunction избегать, а использовать динамическую привязку, как я написал выше
Я или чего-то не так понял из твоего примера или в нём не передаются "входные" переменные в SampleFunctionToCallFromTimer
Вопрос в том, если функция такого вида SampleFunctionToCallFromTimer(float X, AActor* TestActor, int32 Y) , как передать в функцию эти самые X, Y и TestActor
источник

AD

Aleksei DTG in Unreal Engine
Vladimir Kuleshov
Хочу вызывать по таймеру функцию с параметрами, нашел такой способ, но смущает что он не описан в документации
Нормально ли так работать с таймерами?

FTimerDelegate TimerDel;
 
FTimerHandle TimerHandle;

int32 MyInt = 10;
float MyFloat = 20.f;

//Binding the function with specific values
TimerDel.BindUFunction(this, FName("MyUsefulFunction"), MyInt, MyFloat);
//Calling MyUsefulFunction after 5 seconds without looping
GetWorld()->GetTimerManager().SetTimer(TimerHandle, TimerDel, 5.f, false);
да, так правильно
Вот ещё для душевного спокойствия https://www.tomlooman.com/using-timers-in-ue4/
источник

VK

Vladimir Kuleshov in Unreal Engine
Я это тут и подсмотрел ))
источник

R

Respirant in Unreal Engine
Vladimir Kuleshov
Я или чего-то не так понял из твоего примера или в нём не передаются "входные" переменные в SampleFunctionToCallFromTimer
Вопрос в том, если функция такого вида SampleFunctionToCallFromTimer(float X, AActor* TestActor, int32 Y) , как передать в функцию эти самые X, Y и TestActor
Если у тебя есть входные переменные, тогда делай так, как ты написал выше, только я бы посоветовал заменить BindUFunction на BindLambda например.

Хотя твой пример будет тоже работать
источник

VK

Vladimir Kuleshov in Unreal Engine
Respirant
Если у тебя есть входные переменные, тогда делай так, как ты написал выше, только я бы посоветовал заменить BindUFunction на BindLambda например.

Хотя твой пример будет тоже работать
" я бы посоветовал заменить BindUFunction на BindLambda например." - почему так лучше?
источник

AD

Aleksei DTG in Unreal Engine
Vladimir Kuleshov
Я это тут и подсмотрел ))
можешь ещё короче сделать, FTimerDelegate::CreateUObject вместо объявления переменной и байнда
источник

R

Respirant in Unreal Engine
Vladimir Kuleshov
" я бы посоветовал заменить BindUFunction на BindLambda например." - почему так лучше?
Ну, во первых, документация движка советует именно так привязываться, и использовать BindUFunction только когда другое невозможно, а во вторых, в целом удобнее дебажить, когда метод привязывается не в рантайм, а до него.

Хотя делай как тебе удобно, это всё равно мелочи)
источник

AD

Aleksei DTG in Unreal Engine
Respirant
Если у тебя есть входные переменные, тогда делай так, как ты написал выше, только я бы посоветовал заменить BindUFunction на BindLambda например.

Хотя твой пример будет тоже работать
И успешно вылететь, когда актор прибьётся ) (в определённых кейсах)
источник