xLua学习(一)

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=2
local result3,result4=testModel.RefIntReturn(
num)
print(result3)--第一个为return的返回值0
print(result4)--第二个为ref的num=5



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值