Полезное

Мы Вконтакте

Discord канал

#
Аватара пользователя
Пользователь
Сообщения: 21
Я знаю что обычно к таким просьбам относятся с негодованием, но не могли бы вы мне помочь написать на си блок для блюпринта, мне каждый код дается с таким трудом :/ и в итоге ничего не работает =) Мне нужен блок который будет экзекать локальную функцию в блюприте по имени не задавая никаких параметров. тоесть тупо блок с водом имени который запускает функцию. я не представляю как это сделать, пытался найти солюшен на гитхубе и на форумах поддержки, но ничего не вышло.
Аватара пользователя
Пользователь
Сообщения: 1341
300$/час
_________________
прикрепленные картинки с radikal не смотрю.
Аватара пользователя
Пользователь
Сообщения: 21
там дела на 2 минуты максимум если ты знаешь движок. Так что твое заявление смотрится не то что не остроумно, а предельно глупо.
Могу тебя за 300$ в час научить нормально шутить, обращайся.

Блок с вводными данными я сам создал, мне просто нужно узнать как вызвать локальную функцию в бп по имени. Я думал этот форум как раз для подобных вопросов создан, я ошибся?
Аватара пользователя
Пользователь
Сообщения: 1341
function f(name)
if name = "ggg" then ggg()
end

это конечно не готовый код, но понять что делать можно...
_________________
прикрепленные картинки с radikal не смотрю.
Аватара пользователя
Пользователь
Сообщения: 2319
эм... а "стандартный запуск" функции по имени(!) в блуепринтах не? не используем принципиально?
Изображение
_________________
we need to go deeper
Аватара пользователя
Пользователь
Сообщения: 2319
ну если сильно прям не устраивает таймер то вот его нужный фрагмент:

https://github.com/EpicGames/UnrealEngi ... y.cpp#L246

Код:
UFunction* const Func = Object->FindFunction(FunctionFName);

_________________
we need to go deeper
Аватара пользователя
Пользователь
Сообщения: 21
Спасибо большое ребята.
Аватара пользователя
Пользователь
Сообщения: 21
Что-то у меня плохо получается =( Вроде собирается и даже работает, но как то через задницу.
Callfunctionbyname.h
Код:
#pragma once

#include "CoreMinimal.h"
#include "Kismet/BlueprintFunctionLibrary.h"
#include "CallFunctionByName.generated.h"


UCLASS()
class PS1_API UCallFunctionByName : public UBlueprintFunctionLibrary
{
   GENERATED_BODY()

public:
   UFUNCTION(BlueprintCallable, meta=(DisplayName = "Call Function by Name", DefaultToSelf = "Object"), Category="Custom Functions")
static bool CallFunctionByName(UObject* Object, FString FunctionName);

      
};


callfunctionbyname.cpp
Код:
#include "CallFunctionByName.h"

bool UCallFunctionByName::CallFunctionByName(UObject * Object, FString FunctionName)
{
    FName const FunctionFName(*FunctionName);
    if (Object)
    {
        {
        UFunction* const func = Object->FindFunction(FunctionFName);
        if(func && func->ParmsSize == 0)
            {
            FTimerDelegate Delegate;
            Delegate.BindUFunction(Object, FunctionFName);
            Delegate.Execute();
            return true; // Worked.
            }
    return false; // Didn't Work.

        }
    }
    return false; // Didn't Work.
}

Последний раз редактировалось Maxonyx 14 сен 2017, 15:01, всего редактировалось 2 раз(а).
Аватара пользователя
Пользователь
Сообщения: 21
Парни? Есть какие нибудь соображения?
Последний раз редактировалось Maxonyx 14 сен 2017, 14:36, всего редактировалось 1 раз.
Аватара пользователя
Пользователь
Сообщения: 21
Вот короче работает все норм без таймеров:

Код:
#pragma once

#include "CoreMinimal.h"
#include "Kismet/BlueprintFunctionLibrary.h"
#include "CallFunctionByName.generated.h"


UCLASS()
class PS1_API UCallFunctionByName : public UBlueprintFunctionLibrary
{
   GENERATED_BODY()

public:
   UFUNCTION(BlueprintCallable, meta=(DisplayName = "Call Function by Name", DefaultToSelf = "Object"), Category="Custom C++")
static bool CallFunctionByName(UObject* Object, FString FunctionName);

      
};


Код:
#include "CallFunctionByName.h"

bool UCallFunctionByName::CallFunctionByName(UObject * Object, FString FunctionName)
{
   FName const FunctionFName(*FunctionName);
   if (Object)
   {
      {
      UFunction* const func = Object->FindFunction(FunctionFName);
      if(func && func->ParmsSize == 0)
      {
         Object->ProcessEvent(func, nullptr);
         return true; // Worked.
      }
      }
   }
   return false; // Didn't Work.
}


Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6

UEngine.ru © 2017
Все права защищены. При копировании материалов с сайта, ссылка на первоисточник обязательна.
Яндекс.Метрика
Главная страница