/UnLua

A feature-rich, easy-learning and highly optimized Lua scripting plugin for UE4.

Primary LanguageC++OtherNOASSERTION

LOGO

Overview

UnLua is a feature-rich, easy-learning and highly optimized scripting solution for UE4. UnLua follows the programming pattern of UE4. UE4 programmers can use it at zero learning cost.

Main features

  • Access all UCLASS, UPROPETY, UFUNCTION, USTRUCT, UENUM without glue codes.
  • Override 'BlueprintEvent' (UFUNCTIONs tagged with 'BlueprintImplementableEvent' or 'BlueprintNativeEvent', All Events/Functions defined in Blueprints) without helper codes.
  • Override Replication Notify without helper codes.
  • Override Animation Notify without helper codes.
  • Override Input Event without helper codes.
  • Simple solution to export classes, member variables, member functions, global functions and enums outside the reflection system statically.
  • Highly optimized UFUNCTION invoking (including persistent parameters buffer, optimized parameters passing, optimized output values handling).
  • Optimized containers (TArray, TSet, TMap) accessing. There is no conversion between Lua table and containers.
  • Optimized structure accessing.

More features

  • Support default parameters of UFUNCTION (tagged with 'BlueprintCallable' or 'Exec') parameters.
  • Support customized collision enums.
  • Support server/clients simulation in editor.
  • Support exporting Lua template file for blueprints.
  • Support calling Latent functions in Lua coroutines.

Modules

  • UnLua. Main 'Runtime' module.
  • UnLuaEditor. 'Editor' module includes editor extention (Lua template exporting) and a commandlet.
  • UnLuaDefaultParamCollector. 'Program' module to collect default parameters for UFUNCTION.
  • UnLuaIntelliSense. 'Program' module to generate IntelliSense (symbols) of all UCLASS, UPROPETY, UFUNCTION, USTRUCT, UENUM for a private IDE (which will be PUBLIC soon). It's disabled by default.

Supported engine versions

Unreal Engine 4.17.x - Unreal Engine 4.23.x

NOTE: build.cs files need tiny modifications under 4.17.x and 4.18.x.

Quick start

  • Create a new Blueprint.

CREATE_BLUEPRINT

  • Implement 'UnLuaInterface'.

IMPLEMENT_UnLuaInterface

  • Return a Lua file path (relative to 'Content/Script') in 'GetModuleName'.

IMPLEMENT_GetModuleName

  • Create Lua template.

CREATE_LUA_TEMPLATE

  • Generated Lua template.

GENERATED_LUA_TEMPLATE

  • Add Lua codes to Lua template.

FINAL_LUA_FILE

Documentation

License