LuaComponent脚本功能让Lua脚本类似C#继承了Unity的MonoBehaviour,让Lua脚本能和C#脚本一样的在Unity中运行。
对于LuaState的使用个人觉得使用一个比较好,可能是自己对Lua的理解比较低吧,因为没有运行在同一个LuaState中的Lua脚本是不能相互调用的,完全独立运行,这样如果脚本间需要相互调用就非常麻烦。Lua脚本中所有的变量和方法都类似于C#中的静态的,这个问题就非常头疼不知道怎么处理,一个列表下有很多克隆的Item,每个Item都是挂的痛一个Lua脚本,因为变量和方法都是静态的当我需要找到其中一个Item做特殊处理时就相当麻烦。
LuaComponent.cs
using UnityEngine;
using System.Collections;
using LuaInterface;
using System.IO;
public class LuaComponent : MonoBehaviour
{
public string luaFilePath;
public LuaTable luaModule
{
get;
private set;
}
public bool needRefresh = true;
private LuaFunction luaAwakeFunc;
private LuaFunction luaStartFunc;
private LuaFunction luaUpdateFunc;
private LuaFunction luaDestroyFunc;
private LuaFunction luaOnEnableFunc;
void Awake()
{
RunLuaFile(luaFilePath);
if (luaAwakeFunc != null)
luaAwakeFunc.Call(this.luaModule, this.gameObject);
}
void Start()
{
if (luaStartFunc != null)
luaStartFunc.Call(this.luaModule, this.gameObject);
}
void OnEnable()
{