入门lua的第一天

XLUA 记录入门
unity 2019.1.5
从GitHub下载Xlua 导入 unity 新工程
Plugins和Xlua放在Assets下

在Scripting Dfeine Symbols中加入HOTFIX_ENABLE标签
(在包名下面一点)
按下回车! 热更完成百分之五十了!

然后编译一下 编译完了没报错 ,看来是一个好开始

新建场景 Canvas 挂上CtestC脚本 脚本类名前标记[Hotfix]
目标是修改一个字段 和一个方法;

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using XLua;

    [Hotfix]
public class CtestC : MonoBehaviour
{

    public string str = "A";
   
    void Init()
    {
        //给lua使用
       
    }
   
    void Start()
    {
        Init();
        print(str);

    }
    private void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            int i = sum(A,B);
            print(i);
        }
    }
    int A = 10;
    int B = 10;
    public int sum(int a,int b)
    {
        return a + b;
    }

}


新建Clua.cs
这个脚本用来处理更新代码

using System.Collections;
using System.Collections.Generic;
using System.Text;
using UnityEngine;
using XLua;

public class Clua : MonoBehaviour
{
    public GameObject startup;
    //
    LuaEnv m_kLuaEnv;

    void Start()
    {

        m_kLuaEnv = new LuaEnv();
        m_kLuaEnv.DoString("require 'Xlua'");

    }
 
    /// <summary>
    /// 先释放委托
    /// </summary>
    private void OnDisable()
    {
        m_kLuaEnv.DoString("require'ChinarDispose'");
    }

    /// <summary>
    /// 释放资源
    /// 此函数会在最后调用,物体被删除时
    /// </summary>
    private void OnDestroy()
    {
        m_kLuaEnv.Dispose();
    }


}

C#部分写完了
接下来弄两个lua文件
Xlua.lua.txt (放在Resources下,正确来说应该放 Application.persistentDataPath,这个路径太深,不好测试
)
没错,它就是一个Txt
写入

a=30
b=7
print(a+b)    --这三行不解释

local Time = CS.UnityEngine.Time  --访问静态属性
print("Time.deltaTime:", Time.deltaTime)



local newGameObj = CS.UnityEngine.GameObject("生成一个对象")

xlua.hotfix(CS.CtestC,'Init',function(self)--修改了一个变量
   self.str='B'
	end)
xlua.hotfix(CS.CtestC,'sum',function(self,a,b)--修改了一个方法逻辑
return a*b
end)
--xlua.hotfix(CS.CtestC,'Init', nil)

ChinarDispose.lua.txt (放在Resources下)

xlua.hotfix(CS.CtestC,'Init', nil)--释放
xlua.hotfix(CS.CtestC,'sum', nil)--释放

找不到tool 坑一 ,花了三十分钟
原来是放在Assetc外

LuaException: xlua.access, no field __Hotfix0_Start
Start是标记的热更代码 花了三个小时填这个坑
看到dll had injected! 留下了感动的泪水
最后感谢网友 我是橙子va

将本地Unity目录下的\Editor\Data\Managed下的Unity.Cecil.dll、Unity.Cecil.Mdb.dll、Unity.Cecil.Pdb.dll三个文件复制到项目中的\Assets\XLua\Src\Editor文件夹下

LuaException: xlua.private_accessible, can not find c# type
这个坑花了三个小时 ,留下了没技术的泪水, 感觉是LuaEnv已经Dispose(),但C#还在还在引用它,目前还不知道Dispose()的最佳时机

总之今晚的收获还是不错的,
虽然掉了十来根头发,
入门lua的第一天,
明天开始真机加服务器测试热更

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值