unity+Xlua demo阅读

unity+Xlua demo阅读 1

      • 下载Xlua

第一次写文章,以前光白嫖CSDN了。
就记录下对XLua的学习历程吧

下载Xlua

附git地址:https://github.com/Tencent/xLua
公司网又打不开github了,就不附图了,下载完unity+Xlua demo阅读_第1张图片
Asset里大概是项目需要加的资源了
unity+Xlua demo阅读_第2张图片
plugins 和 XLua 拷贝进项目,大概这样
unity+Xlua demo阅读_第3张图片
本人之前只看了菜鸟教程里的lua基础教程,讲了些知识点还没记牢
本来想着按照网上给的学习教程自己试试开始学习的,但是看到Xlua提供官方的文档,还是中文的便顺便看了一会,发现还是挺有用的,
unity+Xlua demo阅读_第4张图片
unity+Xlua demo阅读_第5张图片
突然看见下面还有官方提供的examples,就顺便看看吧,开始学习第一步:

  1. helloworld
    果然什么语言都逃脱不了helloworld
    简单查看了下,
    unity+Xlua demo阅读_第6张图片
    LuaEnv.DoString 就可以直接执行字符串代码,没什么好说的
  2. U3DScripting
    LuaTable meta = luaEnv.NewTable();
    meta.Set("__index", luaEnv.Global);
    纠结了下_index是何方神圣,后来又回菜鸟教程查了下才知道,果然只过一遍基础教程并不牢靠… 下图附释意
    在这里插入图片描述
    看C#代码就觉得吧C#和lua脚本拆成两部分,吧lua需要的变量传递过去,lua脚本处理就可以了,
// A code block
var foo = 'bar';
 			scriptEnv = luaEnv.NewTable();

            // 为每个脚本设置一个独立的环境,可一定程度上防止脚本间全局变量、函数冲突
            LuaTable meta = luaEnv.NewTable();//新建了个表
            meta.Set("__index", luaEnv.Global);//这就是_index用处。。只理解可能是为了容错
            scriptEnv.SetMetaTable(meta);//对指定 table 设置元表(metatable)

感觉是通过scriptEnv.Set这个方法对Lua侧传递变量

// A code block
var foo = 'bar';
 		scriptEnv.Set("self", this);	//传递
 		 foreach (var injection in injections)
            {
                scriptEnv.Set(injection.name, injection.value);//传递GameObject
            }
           

scriptEnv.Get 这个方法取出方法

 	        private Action luaStart;
        	private Action luaUpdate;
        	private Action luaOnDestroy;
 	 		scriptEnv.Get("start", out luaStart);
            scriptEnv.Get("update", out luaUpdate);
            scriptEnv.Get("ondestroy", out luaOnDestroy);
           

在lua脚本中再这么使用
unity+Xlua demo阅读_第7张图片

最后简单调用就可以了
unity+Xlua demo阅读_第8张图片

再记录几个简单的点吧, 访问变量用 . 访问组件或者方法用:

eee 写这个东西好烦躁,就这样吧,下面的3456789…再说吧

你可能感兴趣的:(学习笔记,c#,lua,unity3d)