最近公司的游戏项目中出现了一个奇怪的bug。安卓端当旁观玩家过多,比如达到150人的时候,直接崩溃。 出现这个bug的时候,我也很崩溃。仔细看了一下log,提示`local reference table overflow (max=512)`百度一下,说是Android JNI局部引用表溢出。根据操作步骤,定位到了lua代码中的引起报错的代码块。仔细查看了代码,发现是lua调用android端
转载
2024-03-05 11:12:45
27阅读
安装好Lua之后就可以进行Lua脚本的编程学习了。1.终端执行lua test.lua就是执行test.lua脚本;2.终端执行lua -i test.lua 执行问test.lua之后就会进入交互模式;3.在交互模式中运行dofile(”test.lua“)就可以运行test.lua.一种常用的编辑模式就是左边开一个调试窗口,启用lua的交互模式用dofile运行程序,另一边开一个编
转载
2024-05-01 15:08:26
198阅读
前言本文将通过几个简单的实例演示,巩固对__index和__newindex的理解,同时加深对Lua中元表和元方法的理解,如果对Lua的元表和元方法还不是很熟悉的话,请参考这篇文章:《Lua中的元表与元方法》。 具有默认值的table我们都知道,table中的任何字段的默认值都是nil,但是通过元表,我们可以很容易的修改这一规定,代码如下: function setDefault(tb,
转载
2024-05-28 21:44:01
50阅读
一、环境搭建初学lua,首先要做的就是搭建环境首先下载lua,解压。添加环境变量:随后安装ide,我用的vscode,官网下载vscode下载之后安装,lua debug新建lua文件,ctrl+N(或者右上角新建)然后ctrl+s保存文件,开始编译。二、基本语法基础数据类型: 基础数据类型
nil表示无效,在表达式中等于false,可以将一个变量赋值为nil来删掉他booleantrue
转载
2024-02-23 16:01:27
78阅读
背景: redis单机环境下可使用sexNx去实现加锁,通过value值去匹配是否可重入,while循环+随机事件沉默 实现锁等待;但是会产生例如业务可能超过key的过期时间等问题。从而引入redisson集群分布式锁。一、redisson加锁流程图 二、redisson底层原理 (1)加锁机制 咱们来看上面那
转载
2023-06-23 20:45:40
184阅读
使用IntelliJ IDEA编辑器编写Lua脚本的时候,安装一个插件 “EmmyLua” 可以对有代码提示功能 想把protoBuf协议文件转成Lua代码,然后给出代码提示第一次使用python脚本 使用到的几个功能记录一下 1.设置为文件格式备注为utf-8#!/usr/bin/python
# -*- coding: UTF-8 -*-2.定义一个方法,可以返回多个值#----------
转载
2023-11-11 21:23:17
161阅读
一。路由与正则。 1.当函数中需要参数,而不在路由中匹配的时候需要使用default方法:@app.route('/index/<testreg("\d+"):nid>/',defaults={'testname':'lzx'}) 2。如果要路由进入严格匹配模式,需要使用关键字段:strict_slashes=True 3.路由匹配: 路由匹配需要导入包:from werkze
简介从Lua5.1版本开始,就对模块/包添加了新的支持,可是使用require函数和package函数来加载模块,使用table模拟module来定义模块。 函数require用于加载模块,module用于创建模块。传统模式下的模块机制module1.什么是module对开发来说,使用module可以有效分隔代码,实现代码共享,便于代码管理。 对于用户来说,一个module相当于一个Xnix中
转载
2024-03-24 10:42:26
44阅读
function(函数)在Lua中,函数是被看作“第一类值(First class Value)”。函数可以存在变量里。function可以以匿名函数(anonymous function)的方式通过参数传递。thread(线程)在Lua中,最重要的线程是协同程序,它跟线程差不多,拥有自己独立的栈,局部变量和指令指针,可以跟其他协同程序共享全局变量和其他大部分东西。userdata(自定义类型)u
转载
2024-05-04 18:59:33
196阅读
Lua文件加载执行字符串最基本是直接用LuaEnv.DoString执行一个字符串,当然,字符串得符合Lua语法
比如:/* C# Code */
using UnityEngine;
using System.Collections;
using XLua;
namespace Tutorial
{
public class ByString : MonoBehaviour
{
转载
2024-03-18 15:43:03
101阅读
加载lua脚本的方法方法一LuaEnv env = new LuaEnv();
env.DoString("require('Welcome')");调用env.DoString(),就可以执行lua语法了,这里建议通过lua中require的方法调用另一个脚本,避免了大量字符串的产生 xlua中使用require时,会默认查找Resources文件夹下的文件,如果查找不到会报错
转载
2024-04-26 09:30:51
84阅读
因为每一版本的源码可能会有差别,现在基于lua 5.2.1来分析,保持一致性。从虚拟机的大体来看,字符串通过一个结构体存放在global_State里,这个结构stringtable(lstate.h)是:GCObject(lstate.h)的结构是:stringtable结构体的字段含义是:GCObject **hash: GCObject指针的指针,通过Hash值可以指向Hash值存
转载
2024-03-25 08:56:48
61阅读
lua有8中基本类型,string(字符串),number(数字),nil(空),userdata(自定义类型),table(表),boolean(布尔),thread(线程),function(函数)。lua的注释 单行注释:--被注释的内容;  
转载
2024-04-27 23:08:20
27阅读
一个关于协同程序的经典示例是“生产者-消费者”问题。这其中涉及到两个函数,一个函数不断地产生值(比如从一个文件中读取值),另一个则不断地消费这些值(比如将这些值写到另一个文件)。通常,这两个函数大致是这样的:function producer ()
while true do
local x = io.read() -- 产生新的值
send(x)
转载
2024-06-17 22:14:02
88阅读
目录一、Table - 数据结构实现二、Table - 初始化luaH_new三、Table - 释放操作luaH_free四、Table - 设值操作luaH_set&luaH_setint五、Table - 扩容操作luaH_resizeLua语言中,Table结构类型是比较强大的一个存在。和PHP的数组有些类似。比较万能和强大。Lua语言中Table的具体实现,主要在lt
转载
2024-02-21 21:14:57
165阅读
目录Python通过Django搭建网站执行Lua脚本 (实现数据解析)一、问题背景和解决二、执行Lua效果预览三、主要代码解析:translate.pyLuaParser.luaBin-Json转换页面urls.py其他好玩的python脚本博主热门文章推荐: Python通过Django搭建网站执行Lua脚本 (实现数据解析)论如何优雅的进行Python与Lua交互,当然方法有多种,但很多仅
转载
2023-12-06 20:55:07
92阅读
上一篇文章对比了基本功能。 今天来讲讲控制语句! 我的记录笔记都是根据我自身水平来讲的,如果你并没有任何程序语言的经验,可以先找本c/c++的书先学习一下,然后如果对脚本感兴趣,可以再来看我写的东西。篇幅有限,我不可能从基础讲起,抱歉。如果你熟悉c/c++,那一定能看懂我说了什么 O(∩_∩)O~。我的讲解习惯是讲一段代码,然后打印输出,然后在代码或者输出后面添加注释,说明一些原因或者原理,又
转载
2023-09-28 22:16:30
37阅读
在现代软件开发中,使用多种编程语言组合以充分利用各自的优势已成为一种常见趋势。尤其是当Python与Lua结合使用时,可以实现高效的脚本编写与优秀的性能。因此,本篇博文将详细记录如何在Python中运行Lua代码的过程,分为多个模块,以帮助同行们更好地理解和掌握这个过程。
### 背景定位
在众多项目中,由于Python语言的强大以及Lua的高效性和灵活性,团队需要将二者结合,以便于在Pyth
文件读写
文件读写对制作游戏很有帮助。可以调用别的文件中的代码,保存最高分、游戏存档、玩家状态等信写到文件中。
首先,让我们看一个简单的命令:dofile。这个命令会读入另一个文件的代码并立即执行。
代码:
dofile("./test.lua")
很简单的命令。注意 ./ 是指根目录,不是子目录。如果是子目录,应该这样用:
代码:
dofile("./files/test.lua")
那么,如果
转载
2024-01-26 08:38:40
50阅读
我们要解决什么问题?为了使基于unity开发的应用在移动平台能够热更新,我们嵌入了Lua虚拟机,将需要热更新的逻辑用lua实现。c#通过P/Invoke和lua交互(lua由ANSI C实现)。在这个过程中,由于数据的交换需要使用lua提供的虚拟栈,不够简单高效,为了解决这个问题,我们引入了*lua框架(xlua、slua、ulua)来达到类似RPC式的函数调用、类原生对象式的对象访问以及高效的对
转载
2024-04-22 20:39:27
361阅读