找回密码
 立即注册
查看: 287|回复: 0

Unreal Engine 4 之 Slua入门 (1)

[复制链接]
发表于 2022-10-14 09:18 | 显示全部楼层 |阅读模式
1、使用Slua, 需要改变lua编译选项,如果需要从新编译lua的话:
make_win.bat
  1. mkdir build_win32 &pushd build_win32
  2. cmake -G "Visual Studio 16 2019"..popd
  3. cmake --build build_win32 --config Release
  4. md Library\Win32
  5. copy /Y build_win32\Release\lua.lib Library\Win32\lua.lib
  6. mkdir build_win64 &pushd build_win64
  7. cmake -G "Visual Studio 16 2019"..popd
  8. cmake --build build_win64 --config Release
  9. md Library\Win64
  10. 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文件添加或补全
  1. PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
  2. PublicDependencyModuleNames.AddRange(new string[]{"Core", "CoreUObject", "Engine", "InputCore", "Http"});
  3. PrivateDependencyModuleNames.AddRange(new string[]{"slua_unreal", "slua_profile", "Slate", "SlateCore", "UMG", "Http"});
  4. PrivateIncludePathModuleNames.AddRange(new string[]{"slua_unreal"});
  5. 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方法
  1. auto ls = LuaState::get(getGameInstance(ptrT));if(stateName.Len()!=0) ls = LuaState::get(stateName);if(!ls)returnfalse;
复制代码
接下来的做法就和c++/lua中的没有区别了
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-24 23:40 , Processed in 0.093868 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表