Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >unity3d:xlua hotfix 热补丁修改c#脚本bug

unity3d:xlua hotfix 热补丁修改c#脚本bug

作者头像
立羽
发布于 2023-08-24 06:20:31
发布于 2023-08-24 06:20:31
32500
代码可运行
举报
文章被收录于专栏:Unity3d程序开发Unity3d程序开发
运行总次数:0
代码可运行

先在场景中挂载脚本,加载自定义Loader

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using XLua;
using System.IO;
using UnityEngine.Networking;

public class HotFixScript : MonoBehaviour {

    private LuaEnv luaEnv;

    private void Awake()
    {
        luaEnv = new LuaEnv();
        luaEnv.AddLoader(MyLoader);
        luaEnv.DoString("require 'xxx'");
    }

    // Use this for initialization
    void Start () {
     
	}
	
	// Update is called once per frame
	void Update () {
		
	}


    private byte[] MyLoader(ref string filePath)
    {
        string absPath = @"xxx\" + filePath+".lua.txt";
        return System.Text.Encoding.UTF8.GetBytes(File.ReadAllText(absPath));
    }

    private void OnDisable()
    {
        luaEnv.DoString("require 'xxxDispose'");
    }

    private void OnDestroy()
    {
        luaEnv.Dispose();
    }

要修复的C#脚本类上打上 [Hotfix] 这个类要修复的函数打上 [LuaCallCSharp]

例如

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[Hotfix]
public class Test1: MonoBehaviour
{

[LuaCallCSharp]
    private void OnTest()
    {
    Debug.Log("C#");
    }
}

lua代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
local UnityEngine = CS.UnityEngine
xlua.hotfix(CS.Test1,'OnTest',function(self)
	-- body
		UnityEngine.Debug.Log("Lua")
	end
end)
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-05-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
XLua-操作与使用
1.直接用Lua调用C#的方法 使用XLua输出HelloWorld 引入命名空间XLua,声明一个LuaEnv的类的对象,这个类提供了一些方法
祝你万事顺利
2019/06/02
1.3K0
unity3d:xlua 加载自定义Loader
在xLua加自定义loader是很简单的,只涉及到一个接口: public delegate byte[] CustomLoader(ref string filepath); public void LuaEnv.AddLoader(CustomLoader loader) 通过AddLoader可以注册个回调,该回调参数是字符串,lua代码里头调用require时,参数将会透传给回调,回调中就可以根据这个参数去加载指定文件,如果需要支持调试,需要把filepath修改为真实路径传出。该回调返回值是一个byte数组,如果为空表示该loader找不到,否则则为lua文件的内容。
立羽
2023/08/24
4180
XLua-热更新(HotFix)
仿照XLua的官方例子,我们做一个XLua的热更新 1.按照hotfix.md的使用说明
祝你万事顺利
2019/06/13
4.2K0
Unity3D MonoBehaviour的生命周期(lifecycle)
官方的事件函数的执行顺序中有详解(Link:Execution Order of Event Functions)
meteoric
2018/11/20
2.1K0
手游热更新方案xLua开源:Unity3D下Lua编程解决方案
xLua是Unity3D下Lua编程解决方案,自2016年初推广以来,已经应用于十多款腾讯自研游戏,凭借其出色的性能,易用性,扩展性而广受好评。现在xLua开源到github上,希望能对游戏行业有所贡献。 xLua项目1月3日起正式对外开源 官方开源地址: https://github.com/Tencent/xlua (点击文末阅读原文,直接访问该项目) xLua的几项突破 xLua在功能、性能、易用性都有不少突破,这几方面分别最具代表性的是: 1、Unity3D全平台热补丁技术,可以运行时把C#实现(方
腾讯开源
2018/03/02
3.1K0
手游热更新方案xLua开源:Unity3D下Lua编程解决方案
导语 xLua是Unity3D下Lua编程解决方案,自2016年初推广以来,已经应用于十多款腾讯自研游戏,凭借其出色的性能,易用性,扩展性而广受好评。 而就在前天,腾讯宣布xLua开源到github上,引起了游戏开发圈的轰动,今天精神哥就来给大家介绍——手游热更新方案 xLua。 xLua项目1月3日起正式对外开源 官方开源地址: https://github.com/Tencent/xlua xLua的几项突破 xLua在功能、性能、易用性都有不少突破,这几方面分别最具代表性的是: Unity3D全平
腾讯Bugly
2018/03/23
2K0
unity3d:vscode+luaide断点调试xlua
1.下载vscode 2.下载luaide 免费版:https://www.jianshu.com/p/a2142d4f119c,下载后将zip文件解压到 C:\Users\Administrator.vscode\extensions 但是:
立羽
2023/08/24
1.1K0
unity3d:vscode+luaide断点调试xlua
unity3d:java定义转c#定义
立羽
2023/08/24
2370
unity3d之脚本生命周期
脚本生命周期 执行顺序如下: 各个函数解释如下: 名称 触发时机 用途 Awake 脚本实例被创建时调用 用于游戏对象的初始化,注意Awake的执行早于所有脚本的Start函数 OnEnable 当对象变为可用或激活状态时被调用 用途 Start Update函数第一次运行之前调用 用于游戏对象的初始化 Update 每帧调用一次 用于更新游戏场景和状态 FixedUpdate 每个固定物理时间间隔调用一次 用于物理状态的更新 LateUpdate 每帧调用一次(在update之后调用) 用于更新游戏场景和
李小白是一只喵
2020/11/12
6630
unity3d之脚本生命周期
Unity3d热更新之xLua热更新[C#调用Lua]
本来想着一个文章全都写完,后来才发现,失策了!!!,加上自己感觉要是太长了,后面自己复习也懒得去看,那就细分成三个文章咯!毕竟有些地方还是有些区别的
七鳄不是鳄
2023/02/27
3.1K0
Unity3d热更新之xLua热更新[C#调用Lua]
【Unity3D入门教程】使用C#脚本控制游戏对象
使用C#脚本控制游戏对象,是一项必备的基本技能。Unity3D可以使用的脚本有C#和javascript等。我们主要讲注意力集中在C#上。本文将会介绍怎样使用脚本控制场景中的游戏对象。
全栈程序员站长
2022/09/23
1.6K0
【Unity3D入门教程】使用C#脚本控制游戏对象
unity3d:单例模式,Mono场景唯一,不销毁;C# where T:new(),泛型约束;Lua单例模式,table ,self
在对泛型的约束中,最常使用的关键字有where 和 new。 其中where关键字是约束所使用的泛型,该泛型必须是where后面的类,或者继承自该类。 new()说明所使用的泛型,必须具有无参构造函数,这是为了能够正确的初始化对象
立羽
2023/08/24
4830
Unity 基础 - 脚本的生命周期
新建一个 C# 脚本,在 MonoDevelop 中打开脚本,我们会发现,只要在 Unity 中国年创建的脚本,默认都是集成自 MonoBehaviour的,像这种集成自MonoBehaviour的类或者脚本称之为运行时类,继承自MonoBehaviour的类都不能手动进行实例化,当然在脚本中也可以创建一个类不继承MonoBehaviour。
hrscy
2018/08/30
8020
Unity 基础 - 脚本的生命周期
Unity学习笔记-脚本
1.在桌面找到unity图标,右键属性打开 2.点击打开文件所在位置 3.在Editor文件夹下,依次进入Editor->Data->Resources->ScriptTemplates中 4.修改"81-C# Script-NewBehaviourScript.cs.txt"文件的权限,使它可修改 5.用vs打开"81-C# Script-NewBehaviourScript.cs.txt"文件(用文本打开也行,但可能出现编码问题) 6.把它修改为自己需要的样子保存即可
六月丶
2022/12/26
7590
Unity学习笔记-脚本
unity3d:vuforia点击聚焦
立羽
2023/08/24
2030
Unity3D网络通讯(三)-- HttpRestful请求的简单封装
上一篇《Unity3D网络通讯(二)--UnityWebRequest及JsonUtility请求Http Restful》已经实现了Unit3d使用UnityWebRequest与后台WebApi的Get和Post的通信,如果在正式做项目中,我们就不能按Demo的那样写法来调用了,所以这一篇针对UnityWebRequest做一个简单的封装。
Vaccae
2020/09/11
3.2K0
Unity3D网络通讯(三)-- HttpRestful请求的简单封装
最新完整热更新实战案例学习,包括资源热更新及代码热更新【文末送书】
本篇文章会正式使用xLua完成一个简单的热更新实战案例,关于xLua的基本配置及导入的详细信息可以参考下面这篇文章: Unity 热更新技术 |(六)xLua框架学习最新系列完整教程
呆呆敲代码的小Y
2023/03/30
1.9K0
最新完整热更新实战案例学习,包括资源热更新及代码热更新【文末送书】
Unity3d的Log系统重构
由于要重写Unity3d的Log系统,变更为自定义方式,按照Log4j的显示的内容方法
全栈程序员站长
2022/07/20
1.5K0
Unity高级(1)-服务器与网络交互
HTTP/1.1 200 OK // 包含了HTTP协议版本、状态码、状态英文名称 Server: Apache-Coyote/1.1 // 服务器的类型 Content-Type: image/jpeg // 返回数据的类型 Content-Length: 56811 // 返回数据的长度 Date: Mon, 23 Jun 2014 12:54:52 GMT // 响应的时间 响应体:服务器返回给客户端的具体数据,比如文件数据
孙寅
2020/06/02
2.1K0
项目优化之数据集合优化(Unity3D)
通过详细的理解Array、List、和Dictionaries 让你的游戏运行速度快十倍
恬静的小魔龙
2022/08/07
7320
项目优化之数据集合优化(Unity3D)
相关推荐
XLua-操作与使用
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验