Unlua重写蓝图

最近笔者再将蓝图重写为unlua,这篇文章就简单讲解一下遇到的小坑,以及一些重写的小技巧。
首先蓝图改写lua最主要的是要清楚,蓝图不是语言,而是一种可视化的展现,我们使用unlua改写,表面是改写蓝图,实际上是调用UE的方法和蓝图里的变量。
这里先简单阐述几个概念:
1.蓝图不能访问的unlua也不能访问
2.全局静态函数用UE4.类名.方法名访问
3.自己的成员函数用 self:方法名
4.访问蓝图变量用 self.变量名
5.调用蓝图方法用self:方法

第一点是可以这样理解的,我们lua是通过接口形式。所以在蓝图中可以访问的我们在lua中也可以调用,蓝图不能访问的我们在lua里也不可以调用。
第二点,有些全局静态函数我们要使用全局静态函数用UE4.类名.方法名访问
例如在这里插入图片描述
这里要注意它的参数Parent是通过load加载出来,以及CreateDynamicMaterialInstance都是全局静态函数,所以我们要用UE4.类名.方法名访问访问在这里插入图片描述
第三点蓝图的白线是逻辑执行线,蓝线是赋值等传参线,大多数蓝图中的函数都需要一个

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: unlua 重写begin play 的意思是在使用unlua时,重新编写游戏开始运行时的函数。这个函数通常用于初始化游戏的各种参数和对象,以便游戏能够正常运行。在重写begin play时,需要注意游戏的整体逻辑和各个模块之间的交互,以确保游戏的稳定性和流畅性。同时,还需要考虑代码的可读性和可维护性,以便后续的开发和维护工作。 ### 回答2: UnLua 是一个基于 LuaJIT 的 C++ 框架,它可以让开发者在 UE4 游戏引擎内使用 Lua 语言进行编程。当我们在 UnLua 中使用 Lua 进行编程时,需要注意的一点是 UnLua重写 UE4 引擎中一些特定的函数。其中一个就是重写的 BeginPlay 函数。 在 UE4 中,每个 Actor 都拥有一个 BeginPlay 函数。该函数在 Actor 的生命周期中只会被调用一次,通常用于初始化 Actor 相关的操作。在 UnLua 中,UnLuaPlayerController 继承自 UE4 的 APlayerController 类,因此它也包含一个 BeginPlay 函数。 当我们在 UnLua 中使用 Lua 进行编程时,会发现重写的 BeginPlay 函数使用了一个叫做 UClass 绑定的机制,这是 UnLua 框架内的一个重要概念。在 BeginPlay 函数中,UnLua 会将实际的 C++ 类型与对应的 Lua 类型进行绑定。这就意味着,当我们在 Lua 中创建一个对象时,即使该对象是使用 C++ 类型创建的,UnLua 也能够正确地将其转换成 Lua 对象类型。 例如,以下是一个简单的 UnLua 脚本,它创建了一个 APlayerController,并为其绑定了 BeginPlay 函数: ``` local MyClass = Class("MyClass", APlayerController) function MyClass:BeginPlay() print("BeginPlay is called.") end local MyPlayerController = GWorld:SpawnActor(MyClass) ``` 这里我们创建了一个叫做 MyClass 的 Lua 类型,并将其继承自 UE4 中的 APlayerController。在 MyClass 的 BeginPlay 函数中,我们打印出了一条消息。接着,我们使用 GWorld:SpawnActor() 函数来创建一个 MyPlayerController 对象,该对象是使用 MyClass 类型创建的。 需要注意的一点是,这里的对象实际上仍然是 C++ 对象,只不过被 UnLua 包装成了 Lua 对象。当我们调用 MyPlayerController:BeginPlay() 函数时,实际上是在调用 C++ 中的 BeginPlay 函数。因此,在实际应用中,我们可以使用 UnLua 提供的一些函数,将我们的 Lua 代码与 C++ 代码混合起来,以实现更多的功能。 ### 回答3: UnLua是一个用C++编写的Lua封装库,旨在为UE4开发人员提供更好的Lua支持。它允许开发人员使用Lua脚本编写UE4游戏逻辑和行为,并且可以与原生C++代码无缝交互。 在UnLua中,重写BeginPlay函数主要是为了让开发人员可以在游戏开始时初始化其脚本逻辑。BeginPlay函数是UE4 Actor类的生命周期函数之一,当Actor被创建时调用它,并在Actor进入世界时触发。因此,在UnLua重写BeginPlay函数提供了一些优点。 首先,它将实例化UnLuaLua虚拟机并执行指定脚本文件的初始化回调。这意味着开发人员可以使用脚本对游戏对象进行初始化,并在游戏开始时实现自定义的游戏逻辑。 其次,重写BeginPlay函数提供了一些初始化控制的方式。例如,可以将参数传递给BeginPlay函数以帮助控制脚本的初始化行为。这可以使游戏更加灵活,具有可配置性,从而提高游戏的可玩性和可扩展性。 最后,重写BeginPlay函数还可以实现相应的清理操作。当游戏关闭时,UnLua将自动清理Lua虚拟机,并释放与其相关的资源。这使得脚本的清理变得非常容易,同时也可以消除内存泄漏等问题。 总之,UnLua重写BeginPlay函数是为了让开发人员可以使用Lua脚本编写UE4游戏逻辑和行为,并且可以与原生C++代码无缝交互。这提供了游戏开发更多的自由度,可玩性和可扩展性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DataLone

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值