ue4动态调用obj对象的方法
2016-08-02 20:48
281 查看
在使用AnimInstance的Notify时候发现可以动态调用UObject对象的方法,前提是这个方法必须是暴露给蓝图的或者是蓝图中的方法,应该是ue4中的某中反射机制生成的蓝图类XXX.generated.h
结果:
然后动态调用
结果
1、使用一个AMychar对象调用自身的bp func或者 c++暴露给蓝图的方法
void UMyBpFuncLib::TestObjFunc(AMyChar* _myChar,FString _funcName) { FName FuncFName = FName(*_funcName); UFunction* Function = _myChar->FindFunction(FuncFName); if (Function) { FString str = FString::Printf(TEXT("--- UFunction arg num:%d"), Function->NumParms); //这个方法的参数个数 GEngine->AddOnScreenDebugMessage(0, 2.0f, FColor::Green, str); struct FAnimNotifierHandler_Parms //结构体和方法参数的类型和顺序要一致 { int32 NotifyNum; FString NotifyStr; }; FAnimNotifierHandler_Parms Parms; Parms.NotifyNum = 987; Parms.NotifyStr = FString(TEXT("yangx")); _myChar->ProcessEvent(Function, &Parms); } }
2、然后看下AMychar要被动态调用的方法
一定要暴露给蓝图,也就是加UFUNCTION//h UFUNCTION(BlueprintCallable, Category = "MyChar") void TestFunction(int32 _num, FString _str); //cpp void AMyChar::TestFunction(int32 _num, FString _str) { FString str = FString::Printf(TEXT("--- AMyChar::TestFunction - num:%d, str:%s"), _num, *_str); GEngine->AddOnScreenDebugMessage(0, 5.0f, FColor::Green, str); }
3、蓝图动态调用c++方法
结果:
4、蓝图动态调用blueprint方法
在AMychar的蓝图类中其个方法然后动态调用
结果
相关文章推荐
- 使用反射、泛型和委托,动态调用对象的属性和方法——性能和灵活性兼备的方法
- 怎样调用动态获取的自定义对象的方法
- asp.net中怎样动态调用对象事件的处理方法?
- dwr调用参数为 对象数组 的方法(js中直接传递obj数组)
- JAVA动态调用当前对象里面的方法
- Java中对象方法的调用过程&动态绑定(Dynamic Binding)
- 根据字符串动态调用对象的方法
- 动态调用对象的属性和方法——性能和灵活性兼备的方法
- Java动态绑定的理解-调用对象方法的执行过程
- Java的反射机制---动态调用对象的简单方法
- 关于多态性的动态绑定问题, 对象调用方法的执行过程.
- Java动态调用对象的方法
- 在工厂模式里面利用反射机制动态调用对象方法
- 使用反射构造对象实例并动态调用方法
- 怎样调用动态获取的自定义对象的方法
- 动态调用对象的属性和方法——性能和灵活性兼备的方法
- Java的反射机制-动态调用对象的方法
- 根据字符串名称动态调用Python的函数和对象方法
- C# Window编程随记——运行时动态对象创建和动态方法调用
- Xcode中Objc动态调用方法同时避免警告的几个办法