diff --git a/Assets/Fungus/Lua/Scripts/LuaEnvironment.cs b/Assets/Fungus/Lua/Scripts/LuaEnvironment.cs index b33eaa28..1ef4f62e 100644 --- a/Assets/Fungus/Lua/Scripts/LuaEnvironment.cs +++ b/Assets/Fungus/Lua/Scripts/LuaEnvironment.cs @@ -12,9 +12,19 @@ using MoonSharp.RemoteDebugger; namespace Fungus { - public class LuaEnvironment : MonoBehaviour { + /// + /// Helper class used to extend the initialization behavior of LuaEnvironment. + /// + public abstract class Initializer : MonoBehaviour + { + /// + /// Called when the LuaEnvironment is initializing. + /// + public abstract void Initialize(); + } + /// /// Custom file loader for MoonSharp that loads in all Lua scripts in the project. /// Scripts must be placed in a Resources/Lua directory. @@ -127,13 +137,14 @@ namespace Fungus // You can restrict which core lua modules are available here if needed. See the MoonSharp documentation for details. interpreter = new Script(CoreModules.Preset_Complete); + // Load all Lua scripts in the project InitLuaScriptFiles(); - // TODO: Use an interface here instead - LuaUtils luaUtils = GetComponent(); - if (luaUtils != null) + // Initialize any attached initializer components (e.g. LuaUtils) + Initializer[] initializers = GetComponentsInChildren(); + foreach (Initializer initializer in initializers) { - luaUtils.Initialise(); + initializer.Initialize(); } if (remoteDebugger) diff --git a/Assets/Fungus/Lua/Scripts/LuaUtils.cs b/Assets/Fungus/Lua/Scripts/LuaUtils.cs index 8fcdb5cd..1465f391 100644 --- a/Assets/Fungus/Lua/Scripts/LuaUtils.cs +++ b/Assets/Fungus/Lua/Scripts/LuaUtils.cs @@ -13,7 +13,7 @@ using MoonSharp.RemoteDebugger; namespace Fungus { - public class LuaUtils : MonoBehaviour + public class LuaUtils : LuaEnvironment.Initializer { /// /// Lua script file which defines the global string table used for localisation. @@ -57,7 +57,10 @@ namespace Fungus /// protected LuaEnvironment luaEnvironment; - public virtual void Initialise() + /// + /// Called by LuaEnvironment when initializing. + /// + public override void Initialize() { luaEnvironment = GetComponent(); if (luaEnvironment == null)