网站设计模板怎么使用,湖南电商平台网站建设,做网投网站好,外贸公司做网站一、通过BlueprintImplementableEvent标记扩展C函数 1、 这个标记表示C不需要实现#xff0c;让蓝图/Lua重写。 2、首先在C中将LuaImp函数标记为BlueprintImplementableEvent#xff0c;不需要实现#xff0c;然后再GetIndex中调用该函数。 MyBaseActor.h
UFUNCTION(Bluepr…一、通过BlueprintImplementableEvent标记扩展C函数 1、 这个标记表示C不需要实现让蓝图/Lua重写。 2、首先在C中将LuaImp函数标记为BlueprintImplementableEvent不需要实现然后再GetIndex中调用该函数。 MyBaseActor.h
UFUNCTION(BlueprintImplementableEvent)
void LuaImp();
UFUNCTION(BlueprintCallable)
int GetIndex();MyBaseActor.cpp
int AMyBaseActor::GetIndex()
{LuaImp();return index;
}2、在Lua中重写LuaImp函数 BP_BaseActor.lua --实现C中定义的BluprintImplementable方法function BP_BaseActor_C:LuaImp()print(this is a function implements C)end3、在Lua中调用GetIndex函数即可执行到Lua中扩展的LuaImp函数 WBP_FirstLua.lua
Actor:GetIndex()二、通过BlueprintNativeEvent标记扩展C函数 1、BlueprintNativeEvent也是让蓝图/Lua重写扩展但是C端会提供一个默认的函数名为LuaNative_Implementation实现,如果蓝图/Lua没有重写就执行默认的 2、首先在C中将LuaNative函数标记为BlueprintNativeEvent再实现一个LuaNative_Implementation函数。 MyBaseActor.h UFUNCTION(BlueprintNativeEvent)void LuaNative();void LuaNative_Implementation();3、在GetIndex函数中调用LuaNative在LuaNative_Implementation中调用LuaImp。 MyBaseActor.cpp
void AMyBaseActor::LuaNative_Implementation()
{LuaImp();
}
int AMyBaseActor::GetIndex()
{LuaNative();return index;
}4、在Lua中调用GetIndex WBP_FirstLua.lua
Actor:GetIndex()5、如果在Lua中没有重写LuaNative函数则会调用C中的LuaNative_Implementation中LuaImp函数输出“this is a function implements C” 6、如果在Lua中重写了LuaNative函数就会调用Lua中的LuaNative函数输出“Native Event” BP_BaseActor.lua function BP_BaseActor_C:LuaNative()print(Native Event)end三、Lua扩展蓝图自定义事件 1、在蓝图中新建自定义事件并在EventBeginPlay中调用 2、在Lua中重写BP_EventTest函数需要注意的是Lua中把ReceiveBeginPlay函数注释掉蓝图的EventBeginPlay才会生效。 BP_BaseActor.lua -- function BP_BaseActor_C:ReceiveBeginPlay()
-- endfunction BP_BaseActor_C:BP_EventTest()print(BP_EventTest)end