|
1、使用Slua, 需要改变lua编译选项,如果需要从新编译lua的话:
make_win.bat- mkdir build_win32 &pushd build_win32
- cmake -G "Visual Studio 16 2019"..popd
- cmake --build build_win32 --config Release
- md Library\Win32
- copy /Y build_win32\Release\lua.lib Library\Win32\lua.lib
- mkdir build_win64 &pushd build_win64
- cmake -G "Visual Studio 16 2019"..popd
- cmake --build build_win64 --config Release
- md Library\Win64
- copy /Y build_win64\Release\lua.lib Library\Win64\lua.lib
复制代码 2、需要下载4.25版本的slua,GitHub上有,不要下master
3、Slua的使用
复制Plugins下的slua_unreal到目标工程目录,并修改目标工程的…/Source/xxx/xxx.Build.cs文件添加或补全- PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
- PublicDependencyModuleNames.AddRange(new string[]{"Core", "CoreUObject", "Engine", "InputCore", "Http"});
- PrivateDependencyModuleNames.AddRange(new string[]{"slua_unreal", "slua_profile", "Slate", "SlateCore", "UMG", "Http"});
- PrivateIncludePathModuleNames.AddRange(new string[]{"slua_unreal"});
- PublicIncludePathModuleNames.AddRange(new string[]{"slua_unreal","slua_profile"});
复制代码 4、GameInstance是什么
是一个正在运行的游戏的高级别的管理对象;
在游戏创建时生成,游戏实例关闭时销毁,一个游戏中可以有多个GameInstance;
在游戏中切换关卡,GameInstance不会销毁(切换关卡时可用GameInstance携带信息);
在Project Settings中GameInstance选项中可以设置;
5、为luaState初始化添加回调,可以处理初始化问题或初始化成功后的事情
state.onInitEvent.AddUObject(this, &UMyGameInstance::LuaStateInitCallback);
6、state.setLoadFileDelegate
为lua设置文件加载目录和文件路径的初步处理,通常lua doFile,require等操作的时候查找脚本的路径,时会触发该代理内的内容
7、FFileHelper::LoadFileToArray
会把lua内容加载进来
8、SluaState一定要有GameInstance加持或者需要在蓝图中去设置,否则如下会失败
LuaBase.h :init方法- auto ls = LuaState::get(getGameInstance(ptrT));if(stateName.Len()!=0) ls = LuaState::get(stateName);if(!ls)returnfalse;
复制代码 接下来的做法就和c++/lua中的没有区别了 |
|