,
数据类型Lua 是动态类型语言,变量无需类型定义,只需要为变量赋值。(语言自动识别变量类型)
变量变量的默认值均为 nil
循环循环和流程还是要用Lua自带的,因为“不能连线”。。下面是示例
--BeginPlay函数 function BP_CharacterBase_C:ReceiveBeginPlay() local Weapon = self:SpawnWeapon() if Weapon then Weapon:K2_AttachToComponent(self.WeaponPoint, nil, UE.EAttachmentRule.SnapToTarget, UE.EAttachmentRule.SnapToTarget, UE.EAttachmentRule.SnapToTarget) self.Weapon = Weapon end endfor循环
Lua 编程语言中 for语句有两大类:
数值for循环--var 从 exp1 变化到 exp2,每次变化以 exp3 为步长递增 var,并执行一次 "执行体"。exp3 是可选的,如果不指定,默认为1。
--var = exp1, exp2, exp3
--do
--end
for i=10,1,-1
do
print(i)
end
泛型for循环
while循环
a=10
while( a < 20 )
do
print("a 的值为:", a)
a = a+1
end
..
dd
流程控制if(0)
--第一个大括号用关键字then表示
then
print("0 为 true")
--else。。。
else
print("a 大于 20" )
--最后一个大括号用end表示
end
b
b
函数函数一般不带local,函数都是在类外使用
返回值不在第一行,返回值在return关键字后
--local:本地函数,表示只在此类内可用!! -- 方法都是在类外使用,所以方法一般不用local 标记 --返回值不在第一行,返回值在return关键字后 function Test(param1, param2) --返回值在这里 return param1, param2 --函数没有大括号,以关键字end结尾!!! end
字符串
--双引号括起来,Lua 变量无需定义,只需赋值。。。
local test = "Lua"
--字符串的链接
--print("www.runoob.".."com")
UnLua初步
访问UE变量
重写父类的虚函数// --self + Super + 原函数名 // --函数无参数,默认要传 self function BP_Game_C:ReceiveBeginPlay() --这一段代码是重写父类函数的逻辑 self.Super.ReceiveBeginPlay(self) end重写父类的普通函数
--self + Overridden + 原函数名 --函数无参数,默认要传 self function BP_Game_C:ReceiveBeginPlay() --这一步是执行原函数的逻辑,如果不需要执行,则可以不写。 self.Overridden.ReceiveBeginPlay(self) end调用类里的函数
--UE 的 namespace(UE的方法都存在了UE的命名空间内吗???) --UE4. 前缀(可能是命名空间前缀) --所在类的类名. 如 AActor --函数名. 函数调用时的第一个参数,好像总是self。。。 UE4.UKismetSystemLibrary.PrintString(self,"HelloWorld")调用父类里的函数
function Test_C:ReceiveBeginPlay() --调用自定义方法 self.TestFunction() end --自定义方法 function Test_C:TestFunction() UE4.UKismetSystemLibrary.PrintString(self,"dddddd") endCast函数
--区别 原来的大括号 <> 包括里面的内容不存在 -- 函数的参数变为了 UE4. + 蓝图类的文件名_C local Actor = UE.AActor.Cast(UE4.Test_C)
d
ddd
d
d
参考资料UE 热更新:基于 UnLua 的 Lua 编程指南 | 循迹研究室 (imzlp.com)
Unreal Frontend(虚幻前端) - 虚幻引擎 UnrealEngine v4 中文文档 - 文江博客 (wenjiangs.com)
UTA(User Acceptance Test 用户验收测试)
热更
打包的两种方式
第一种,无启动程序,直接在引擎检测出的设备上启动。每次启动都需要重新生成。
第二种,有安装程序。
UE 使用的是 C++ 这种编译型语言,在编译之后就成了二进制,只有通过玩家重新安装才能打到更新游戏的目的。但是对于游戏业务而言,对于需求调整和 bug 修复时间要求非常迫切,频繁地让玩家更新 App 是不能接受的,游戏项目一般使用 Lua 作为游戏业务的脚本语言,是为了把运行时不可变的 C++ 代码变成运行时可更新的 Lua 代码。
d



