xLua学习(一)

来源:互联网 发布:淘宝联盟qq推广设置 编辑:程序博客网 时间:2024/04/28 01:05

xLua作为企鹅这个大厂开源出来的unity热更新技术,从面世就受到了广泛的关注,他的“开发使用C#,运行使用C#,有bug了下发Lua补丁替代”让我很感兴趣。非常适合比如已经开发大半使用C#开发的项目,若改为tolua等热更技术,费时又费力,而xLua则可以很好地打上标记,便可以在之后的项目中实现热更。这也是我看好xLua的原因。于是,就从零开始一点点踩坑吧。

这是我C#中的一个类型:

using UnityEngine;using XLua;using System;[LuaCallCSharp]public class TestModel : MonoBehaviour{    public int f1 = 2;    public int f2 = 4;    public  void Show()    {        print("Lua Call CS 成功!");    }    public void Show2(string s)    {        print(s);    }    public int Add(int a, int b)    {        print("ADD 成功!");        return a + b;    }    public void RefInt(ref int a)    {        a = 5;    }    public int RefIntReturn(ref int a)    {        a = 5;        return 0;    }    public void OutInt(out int a)    {        a = 3;    }    public Action<string> m_delegate = (str) => { print("unity + " + str); };}


性,方法

访问成员属性和方法时,先要实例化类型
local testModel=CS.TestModel()--获取对象testModel.f1=12 --设置成员属性local temp=testModel.f2 --读取成员属性testMode:Add(testModel.f1,temp)--成员方法
xlua支持(通过派生类)访问基类的静态属性,静态方法,(通过派生类实例)访问基类的成员属性,成员方法。

ref和out关键字

local num=2--私有变量local result1=testModel:RefInt(2)print(result1)--result1为5
local num=2--私有变量result2=testModel:OutInt(2)print(result2)--result1为3

复杂的方法

local num=2local result3,result4=testModel.RefIntReturn(num)print(result3)--第一个为return的返回值0print(result4)--第二个为ref的num=5



0 0
原创粉丝点击