tolua

ToLua源码分析:启动流程 说明 核心功能 启动代码说明临时工先顶上来,回头整理施工。系列前置关卡: Lua语言。 Lua与宿主语言交互经验。 ToLua接入和使用经验。 核心功能 提供Lua-c#值类型、对象类型转化操作交互层。(ObjectTranslator.cs、LuaFunction.cs、LuaTable.cs、ToLua.cs等) 提供Lua虚拟机创建、启动、销毁,Require、DoFile、DoString等 阅读详情

tolua#是Unity静态绑定lua的一个解决方案,它通过C#提供的反射信息分析代码并生成包装的类。它是一个用来简化在C#中集成lua的插件,可以自动生成用于在lua中访问Unity的绑定代码,并把C#中的常量、变量、函数、属性、类以及枚举暴露给lua。它是从cstolua衍变而来。从它的名字可以看出,它是集成了原来的tolua代码通过二次封装写了一个C#与tolua(c)的一个中间层。

All problems in computer science can be solved by another level of indirection, except of course for the problem of too many indirections

基础

要想了解tolua#是如何集成的我们需要对C#的一些特性有一些了解,比如了解C#与原生代码交互的方式等。,我们假设读者已经对lua和tolua++有一个比较熟悉,我们略过lua与c或者C++的交互方式,主要介绍一些C#的特性,来帮助我们接下来分析tolua#的集成原理。

C#特性

Attribute

Attribute 是一种可由用户自由定义的修饰符(Modifier),可以用来修饰各种需要被修饰的目标。特性Attribute 的作用是添加元数据。元数据可以被工具支持,比如:编译器用元数据来辅助编译,调试器用元数据来调试程序。Unity以及tolua#中就会用Attribute来辅助做一些事情。

值类型与引用类型

只所以要提这两个概念,是因为很好得理解这两个概念有助于我们写出比较高效的C#代码。

我们知道,C#中的每一种类型要么是值类型,要么是引用类型。所以每个对象要么是值类型的实例,要么是引用类型的实例。

引用类型和值类型都继承自System.Object类。不同的是,几乎所有的引用类型都直接从System.Object继承,而值类型则继承其子类,即直接继承System.ValueType。

作为所有类型的基类,System.Object提供了一组方法,这些方法在所有类型中都能找到,其中包含toString方法及clone等方法。

System.ValueType直接继承System.Object,即System.ValueType本身是一个类类型,而不是值类型;System.ValueType没有添加任何成员,但覆盖了所继承的一些方法,使其更适合于值类型。例如,ValueType重写了Equals()方法,从而对值类型按照实例的值来比较,而不是引用地址来比较。

简单了解了值类型与引用类型那么我们下面来看下C#中的装箱和拆箱的概念。

装箱和拆箱

装箱和拆箱是值类型和引用类型之间相互转换是要执行的操作。

1.    装箱在值类型向引用类型转换时发生

2.    拆箱在引用类型向值类型转换时发生

1 object objValue = 4;
2 
3 int value = (int)objValue;

  

上面的两行代码会执行一次装箱操作将整形数字常量4装箱成引用类型object变量objValue;然后又执行一次拆箱操作,将存储到堆上的引用变量objValue存储到局部整形值类型变量value中。

同样我们需要看下IL代码:

复制代码

复制代码

 1 .locals init (
 2 
 3 [0] object objValue,
 4 
 5 [1] int32 'value'
 6 
 7 ) //上面IL声明两个局部变量object类型的objValue和int32类型的value变量
 8 
 9 IL_0000: nop
10 
11 IL_0001: ldc.i4.4 //将整型数字4压入栈
12 
13 IL_0002: box [mscorlib]System.Int32 //执行IL box指令,在内存堆中申请System.Int32类型需要的堆空间
14 
15 IL_0007: stloc.0 //弹出堆栈上的变量,将它存储到索引为0的局部变量中
16 
17 IL_0008: ldloc.0//将索引为0的局部变量(即objValue变量)压入栈
18 
19 IL_0009: unbox.any [mscorlib]System.Int32 //执行IL 拆箱指令unbox.any 将引用类型object转换成System.Int32类型
20 
21 IL_000e: stloc.1 //将栈上的数据存储到索引为1的局部变量即value

复制代码

复制代码

 

拆箱操作的执行过程和装箱操作过程正好相反,是将存储在堆上的引用类型值转换为值类型并给值类型变量。

C#调用原生代码

因为tolua#底层库是使用的tolua(c语言编写),那么就需要通过C#来调用原生代码,我们从LuaDll.cs中摘取一段代码来演示如何从C#中调用原生代码。

复制代码

复制代码

1 Public class LuaDll
2 
3 {
4 
5   [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
6 
7   public static extern void lua_close(IntPtr luaState);
8 
9 }

复制代码

复制代码

 

其中LUADLL对应的字符串就是tolua,在不同的平台上mono会去加载对应的tolua.dll或者tolua.so等文件并调用对应的函数。具体可以参考mono官方的教程。

tolua#集成

tolua#集成主要分为两部分,一部分是运行时需要的代码包括一些手写的和自动生成的绑定代码,另一部分是编辑器相关代码,主要提供代码生成、编译lua文件等操作,具体就是Unity编辑器中提供的功能。用mono打开整个tolua#的工程,文件结构大体如下所示:

 

Runtime

    Source

        Generate 这个文件里面是生成的绑定代码

        LuaConst.cs 这个文件是一些lua路径等配置文件。

    ToLua

        BaseLua 一些基础类型的绑定代码

        Core 提供的一些核心功能,包括封装的LuaFunction LuaTable LuaThread LuaState LuaEvent、调用tolua原生代码等等。

        Examples 示例

        Misc 杂项,目前有LuaClient LuaCoroutine(协程) LuaLooper(用于tick) LuaResLoader(用于加载lua文件)

        Reflection 反射相关

Editor

    Editor

        Custom

            CustomSettings.cs 自定义配置文件,用于定义哪些类作为静态类型、哪些类需要导出、哪些附加委托需要导出等。

    ToLua

        Editor

            Extend 扩展一些类的方法。

            ToLuaExport.cs 真正生成lua绑定的代码

            ToLuaMenu.cs Lua菜单上功能对应的代码

            ToLuaTree.cs 辅助树结构

Generate All 流程

了解了tolua#的大致文件结构,下面我们来看下tolua#的Generate All 这个功能来分析下它的生成过程。生成绑定代码主要放在ToLuaExport.cs里面,我们并不会对每一个函数进行细致的讲解,如果有什么不了解的地方,可以直接看它的代码。

GenLuaDelegates函数

生成委托绑定的代码,它会从CustomSettings.customDelegateList里面取出所有自定义导出的委托列表,然后把CustomSettings.customTypeList里面的所有类型中的委托根据一定规则加入到list中,最后调用ToLuaExport.GenDelegates()方法来生成委托绑定的代码,生成的代码在DelegateFactory.cs文件中。

由于该函数比较简单,我们这里不做展开,可以直接查看ToLuaExport.cs中的GenDelegates()并配合DelegateFactory.cs来查看。

GenerateClassWraps 函数

遍历所有需要导出的类,然后调用ToLuaExport.Generate()方法来生成类的绑定代码。

下面我们来看下ToLuaExport.Generate()方法,其基本流程如下所示:

从上面的流程图我们可以看到,整个过程还是比较清楚的,如果这个类是枚举类型,那么它会调用枚举导出的接口,而如果这个类型是一个普通的类,那么它就会调用上图所示的相应的流程将代码导出。至于结构体类型,目前应该是只支持一些特定的结构体,需要在lua中对应一份实现(Assets\ToLua\Lua目录中),当然它生成的代码也有一些依赖于tolua#的核心运行时,我们前面简单的讲解了如何在编辑器中生成绑定代码,接下来我们讲一下它的核心运行时。

tolua#的核心运行时

tolua#的运行代码包含SourceàGenerate下面的绑定代码以及ToLuaàBaseType代码以及Core下面的核心代码。接下来我们着重讲一下Core下面的几个主要类。

LuaAttribute.cs

我们前面基础知识部分已经讲过,它在tolua#生成绑定代码时做一些标示使用。

LuaBaseRef.cs

Lua中对象对应C#中对象的一个基类,主要作用是有一个reference指向lua里面的对象,引用计数判断两个对象是否相等等。

比如LuaFunction里面的reference是指向lua里面的一个闭包的,而LuaTable的reference是指向lua中的一个table的。

LuaDll.cs

这个类的主要作用就是实现了C#调用原生代码的功能,其中的原理我们也在上面的基础章节提到了如何在C#中调用原生代码,这里我们就不展开去讲了。

LuaState.cs

这里面是对真正的lua_State的封装,包括初始化lua路径,加载相应的lua文件,注册我们前面生成的绑定代码以及各种辅助函数。

ObjectTranslator.cs

接下来,我们着重说一下这个ObjectTranslator这个类,这个类代码不多,它存在的主要意义就是给lua中对C#对象的交互提供了基础,简单来说就是C#中的对象在传给lua时并不是直接把对象暴露给了lua,而是在这个OjbectTranslator里面注册并返回一个索引(可以理解为windows编程中的句柄),并把这个索引包装成一个userdata传递给lua,并且设置元表。具体可以查看tolua_pushnewudata代码,如下所示:

复制代码

复制代码

 1 // tolua# 代码
 2 
 3 static void PushUserData(IntPtr L, object o, int reference)
 4 
 5 {
 6 
 7   int index;
 8 
 9   ObjectTranslator translator = ObjectTranslator.Get(L);
10 
11   if (translator.Getudata(o, out index))
12 
13   {
14 
15   if (LuaDLL.tolua_pushudata(L, index))
16 
17   {
18 
19   return;
20 
21   }
22 
23   translator.Destroyudata(index);
24 
25   }
26 
27   index = translator.AddObject(o);
28 
29   LuaDLL.tolua_pushnewudata(L, reference, index);
30 
31 }
32 
33 // tolua++ 代码 
34 
35 LUALIB_API void tolua_pushnewudata(lua_State *L, int metaRef, int index)
36 
37 {
38 
39     lua_getref(L, LUA_RIDX_UBOX);
40 
41     tolua_newudata(L, index);
42 
43     lua_getref(L, metaRef);
44 
45     lua_setmetatable(L, -2);
46 
47     lua_pushvalue(L, -1);
48 
49     lua_rawseti(L, -3, index);
50 
51     lua_remove(L, -2);    
52 
53 }

复制代码

复制代码

 

 

而在lua需要通过上面传到lua里面的对象调用C#的方法时,它会调用ToLua.CheckObject或者ToLua.ToObject从ObjectTranslator获取真正的C#对象。下面我们把ToLua.ToObject的代码做个示例:

复制代码

复制代码

 1 public static object ToObject(IntPtr L, int stackPos)
 2 
 3 {
 4 
 5   int udata = LuaDLL.tolua_rawnetobj(L, stackPos);
 6 
 7   if (udata != -1)
 8 
 9   {
10 
11   ObjectTranslator translator = ObjectTranslator.Get(L);
12 
13   return translator.GetObject(udata);
14 
15   }
16 
17   return null;
18 
19 }

复制代码

复制代码

 

总结

通过对tolua#的简单分析,我们对tolua#是怎么实现lua与Unity交互有了一个基础的认识,如果想对tolua#有一个比较深入的了解,那么就需要我们仔细去研究代码、示例以及用它来实际地去做些东西。

因为看的时间不是很多,所以理解上难免有错误,如果发现问题还请指正。前段时间也完整实现了一套虚幻4中的使用lua框架,希望有时间的话也能跟大家分享一下,当然如果你有兴趣了解,也可以留言,这样我会尽量抽时间来把实现的具体细节跟大家分享一下。

lua学习03:tolua的编译和使用:C/C++调用lua、lua调用C++、lua调用tolua、常用tolua和lua的API介绍 文章目录一、编译及使用流程1)编译lua静态库2)编译tolua++静态库3)编译tolua++.exe4)根据C/C++文件编写好对应的pkg文件,然后根据一创命令生成tolua(1)C文件举例(2)C++文件举例二、C++调用lua三、lua调用C++ 一、编译及使用流程 1)编译lua静态库 必须先下载lua 1.5,下载好后,把/src目录的除开lua.c,luac.c的文件全部放到一个新建的静态链接库的工程项目里,然后编译出一个静态链接库lua.lib。 2)编译tolua++静态库 去tolua 阅读详情

相关推荐

【学习笔记】从零开始学ToLua(二)ToLua导入与样例

ToLua tolua是一个可以大大简化C / C ++代码与Lua集成的工具。基于cleand版本的头文件,tolua自动生成绑定代码以从Lua访问C / C ++功能。使用Lua API和标记方法工具,tolua将C / C ++常量,外部变量,函数,类和方法映射到Lua。 Tolua集成主要分为两部分,一部分是运行时需要的代码包括一些手写的和自动生成的绑定代码,另一部分是编辑器相关代码,...

weixin_37918453的博客 1908

tolua#代码简要分析

简介 tolua#是Unity静态绑定lua的一个解决方案,它通过C#提供的反射信息分析代码并生成包装的类。它是一个用来简化在C#中集成lua的插件,可以自动生成用于在lua中访问Unity的绑定代码,并把C#中的常量、变量、函数、属性、类以及枚举暴露给lua。它是从cstolua衍变而来。从它的名字可以看出,它是集成了原来的tolua代码通过二次封装写了一个C#与tolua(c)的一个中间层...

weixin_30376083的博客 442

U3d WebGL使用ToLua

首先我们在编辑器模式下加入Tolua插件,然后配置修改到在编辑器模式下能够正常的运行。 同个U3d 插件Build出WebGL的工程,运行的时候你会发现(有些需要把这个WebGL工程放在一个HttpServer下面,直接本地访问index.html会被拒绝,让你使用http的格式)。 当要加载完的时候会出现 To use dlopen, you need to use Emscripten'...

qq_35267906的博客 2947

[Unity热更新]tolua# & LuaFramework(一):基础

lua调用c# c#调用lua:LuaState[变量名/函数名] 1.LuaState a.执行lua代码段 DoString(string) DoFile(.lua文件) Require(.lua文件(但没有.lua后缀)) b.获取lua函数或者表 LuaFunction func = lua.GetFunction(函数名);

宏哥的博客 3万+

【lua】使用 tolua 实现 lua 与 c++ 交互

tolua 也叫 tolua++,是一个第三方库,简化了 lua 访问 c/c++ 的工作。tolua 自动导出 c/c++ 中的常量、变量、函数、类等,提供给 lua 直接访问和调用。lua 与 c 是可以直接相互访问的,不使用 tolua 或其它第三方库也可以实现 lua 调用 c/c++,但比较麻烦,开发效率太低。

xingxinmanong的博客 6329

ToLua框架下C#与Lua代码的互调操作

Lua是目前国内使用最多的热更语言,基于Lua的热更框架也非常多,最近学习了一下ToLua的热更框架,主要使用的问题在于C#和Lua之间的互调,因此做一下学习记录以备后查。 所谓“互调”,当然要包括两个方面,一是通过C#调用Lua代码,二是通过Lua代码调用C#脚本,第二点还包括注册在C#脚本里的Unity物体。 1. ToLua的简单实现原理 ToLua框架主要是通过静态绑定来实现C#与Lua之间的交互的,基本原理是通过建立一个Lua虚拟机来映射C#脚本,然后再通过这个虚拟机来运行Lua脚本,Lua脚本在运行时可以通过虚拟机反过来调用C#脚本里注册过的物体,这种方式的优势在于比起使用反射的u

toLua学习笔记七——访问lua中table表现的List和Dictionary

在toLua中,c#得到lua中的表,都只有一个套路,那就是通过luatable来获取 1、在lua中创建List和Dictionary --table表现的list testList = {1,2,3,4,5,6} --table表现的dictionary testDic = { ["1"] = 1, ["2"] = 10, ["3"] = 20, ["4"] = 30 } testDic2 = { ["1"] = 1, [true] = 1, [

Master_浮生的博客 2354

matlab 求解多项式的根 四种方法

matlab 求解多项式的根 四种方法 方法一 %多项式求根函数roots p=[1,-3,1];%建立多项式系数向量p x=roots(p)%求多项式的根 x=-5:0.1:5;%步长为0.1 y1=x.*x-3*x+1;%构建一个函数 y2=zeros(size(x));%产生一个与x同大小的零向量 plot(x,y1,x,y2); 方法二 %利用函数fzero f=@(x)x*x-3*x+1; x1=fzero(f,0.5) x2=fzero(f,2.5) 方法三 %利用f

weixin_57038822的博客 1万+

ToLua(LuaFramework) - ToLua开篇与项目演示案例-tolua最全教程

开篇前言: 学习 tolua 需要有 lua 基础。学习 tolua 需要有 lua 基础。学习 tolua 需要有 lua 基础 重要的事情说三遍 //--------------------------------------------------------------------准备工作----------------------------------------------------------------------// tolua框架 git hub 下载地址: 方法一: http.

zhanxxiao的博客 5607

手把手教你用Kali+字典爆破WiFi密码:从抓包到破解的完整流程

本文提供了一份详尽的无线网络渗透测试实战指南,重点讲解如何使用Kali Linux和Aircrack-ng套件进行WiFi安全评估。内容涵盖从硬件选型(如RTL8812AU网卡)、驱动配置、监听模式设置,到使用airodump-ng扫描抓包、捕获WPA握手包,以及利用字典进行离线破解的完整流程。同时强调了在授权环境下进行安全测试的重要性,并给出了相应的网络加固建议。

weixin_28568819的博客 1675

iOS安全攻防:从DarkSword漏洞利用链剖析到纵深防御实践

在移动安全领域,内存破坏漏洞(如堆溢出、释放后使用)是攻击者突破系统防线、实现远程代码执行和权限提升的核心技术原理。这些漏洞利用技术通过精心构造的攻击链,能够绕过沙箱、地址空间布局随机化等安全机制,最终威胁设备内核安全,其技术价值在于揭示了系统安全架构的潜在薄弱环节。在iOS应用开发与系统防护中,理解此类攻击链对于构建有效的纵深防御体系至关重要。应用场景涵盖从安全编码、网络通信加固到运行时应用程序自保护等多个层面。本文以DarkSword工具包为例,深入拆解其利用链,并分享如何通过内存安全实践、代码签名强化

weixin_30357231的博客 481

ToLua框架下C#与Lua代码的互调

Lua是目前国内使用最多的热更语言,基于Lua的热更框架也非常多,最近学习了一下ToLua的热更框架,主要使用的问题在于C#和Lua之间的互调,因此做一下学习记录以备后查。 所谓“互调”,当然要包括两个方面,一是通过C#调用Lua代码,二是通过Lua代码调用C#脚本,第二点还包括注册在C#脚本里的Unity物体。 1. ToLua的简单实现原理 ToLua框架主要是通过静态绑定来实现C#与Lu...

fjjaylz的博客 1万+

评分卡建模学习(一)————数据预处理part.3

目录六、数据处理的思路及代码(一)对缺失值的处理:在我这个数据预处理的part.1板块(二)对异常值的处理:在我这个数据预处理的part.2板块(三)数据归一化、标准化:在我这个数据预处理的part.2板块(四)非结构化数据转变+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++———————————————————————————————————————————++++++++++++++++++++++++++

Morven_dai的博客 898

ToLua 使用教程 上

因为Lua语言比较简单 而且之前前人都有总结,过多总结Lua感觉有点冗余,我把学习lua教程的一个网址放上去可以随时查看lua的语言,这是菜鸟网的教程相当详细。 http://www.runoob.com/lua/lua-tutorial.html 为啥用Lua 就是因为lua是解析型语言可以热更新。 ToLua在很早之前的一些程序多数使用Tolua所以他已经是非常成熟...

m0_37556834的博客 1573

Jupyter Lab 无法启动 Kernel 问题排查与解决总结

使用 curl,telnet,或 Python websocket-client 库可以本地模拟 WebSocket 握手行为,帮助分析服务端响应状态。避免使用 http:// + ws:// 组合方式部署 Jupyter Lab,特别是在远程或跨域访问场景。建议统一采用 https:// + wss:// 方式部署,确保浏览器信任并兼容。确认 WebSocket 已升级为 wss://,内核可正常启动。但在远程访问时,浏览器出于安全策略,默认拒绝 ws:// 协议。

weixin_43866043的博客 1858

H5获取手机相机或相册图片两种方式-Android通过webview传递多张照片给H5

H5调用公共获取图片文件方法,在android手机端,H5主要依赖Webview,这边在webview声明并重写该方法onShowFileChooser使用工具类打开相机或相册,可以两种方式安卓原生方式或者利用第三方组件库方式选中图片,返回uri列表给H5H5收到uri照片列表,并且使用前端方式展示创造价值,乐哉分享!

m0_74823947的博客 3096

toLua笔记

自定义Lua文件路径时需要把那一大堆ToLua自带的脚本拷到打算放Lua脚本的文件夹:这里Main是自己写的脚本,其他都是自带脚本。继承LuaFileUtils类,重写ReadFile()。使用时先new自己写的解析器类。if(!//从AB包加载Debug.Log("从AB包加载"+fileName);Debug.Log("未找到"+fileName);//从Resourcs加载Debug.Log("从Resources加载"+fileName);= null){

Jesui的博客 1138

Stanford Dogs 犬类识别实战:基于 YOLOv8 的 120 类目标检测与图形界面实现

本项目通过YOLOv8实现了Stanford Dogs数据集的目标检测功能,完整包含了数据准备、模型训练、检测推理、图形界面四大模块。初学者使用YOLOv8n(nano版)加速训练,熟悉流程后可切换到YOLOv8s/m。图像上传与检测可进一步增强,例如显示识别框、标注标签。可以添加模型选择、检测阈值调整等功能,提升实用性。通过网盘分享的文件:基于yolov8的狗类品种识别系统链接: https://pan.baidu.com/s/1UYV4h2WnK1RxWWKoPrS-RA?

FJN110的博客 84

tolua集成lua-protobuf库

本文基于win7x64,unity2017.4,tolua当前最新版本,lua-protobuf当前最新版本编写 一丶编译tolua库 资源下载: tolua_runtime https://github.com/topameng/tolua_runtime NDK 版本:android-ndk-r10e 默认安装到 D:/android-ndk-r10e https://dl.google.co...

涂鸦之笔,不登大雅之堂。 5014

开源机器人库orocos KDL 学习笔记(二):Geometric

开源机器人库orocos KDL 学习笔记二:Geometric 如果按照上一篇搭建的VS2015 orocos KDL环境,会出现3个例程:geometry, chainiksolverpos_lma_demo, trajectory_example. 这一篇看一下geometry的例程。 在frames.hpp中,定义了这些class: - class Vector - class R

行者无疆的博客 6703

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

ToLua基础

一、ToLua框架官方案例学习 1.Hello ToLua 创建虚拟机,开启虚拟机,之后就可以运行lua脚本;虚拟机使用完成后要关闭,检查虚拟栈是否为空,析构掉虚拟机,然后将虚拟机赋值null;运行lua脚本的方式:第一种,直接使用C#字符串写lua脚本,使用lua.DoString()函数;第二种,加载lua脚本文件,首先要设置路径,string fullpath = application...

mozhi 1124

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

ToLua框架研究

ToLua框架 简介 tolua是腾讯开源的一款用于unity手游的热更新工具,github地址:ToLua 那么就来研究一下这个热更架构。 原理 lua这门脚本语言其实主要就是用来跟其他语言交互的,它的编译器就是c语言写的,几乎可以运行在所有平台上,而且它十分轻量,tolua使用效率更高的luajit编译器,对于比较在意性能的移动平台,是个不错的热更方案选择。 tolua的主要机制就是,创建lua虚拟机,绑定映射c#脚本,所以架构的内容大致归为三大部分:普通的Unity+C#部分、ToLua虚拟机部分和L

qq_19714407的博客 1371

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

u3d tolua + ZeroBraneStudio远程调试

tolua默认支持ZeroBraneSudio(以下简称zbs)的本地调试,但不能进行远程调试。其实远程调试也很简单,只需要将zbs的mobdebug.lua脚本拷贝到你的工程Lua目录下,在需要调试的地方,执行代码require("mobdebug").start(ip, port)即可连接到zbs进行调试。但是,还需要一些配置,才能完美的进行下去。拷贝mobdebug脚本将脚本mobdebug.

游蓝海 的专栏 5245

tolua++的使用

如约,今天加班加点搞定了tolua的使用,算是对上一篇的承接,也是跟自己的约定的开始。 下面是正题! 首先说明几点: 1、cocos2dx包含了tolua的源码,所以我们不需要自己编译源码了。 2、我试了一下自己编译源码得到tolua++.lib,然后加入工程中运行发生了指针错误,现阶段凭借我的水平还不能明白哪的错。。。。 3、其实。。。费这么大劲都是因为自己的不熟练与低级错误 然后

u013790419的专栏 2287

Unity 报错之 ToLua打包:Unable to find tolua DllNotFoundException: tolua

Unity报错 之 ToLua打包:Unable to find tolua DllNotFoundException: tolua

陈言必行 -- Unity游戏开发领域优质博主 3628

【Lua】ToLua逻辑热更新

Lua基础语法中系统介绍了 Lua 的语法体系,xLua逻辑热更新中介绍了 xLua 的应用,本文将进一步介绍 Unity3D 中基于 ToLua 实现逻辑热更新。逻辑热更新是指:在保持程序正常运行的情况下,在后台修改代码逻辑,修改完成并推送到运行主机上,主机无缝接入更新后的代码逻辑。Unity3D 中,基于 Lua 的逻辑热更新方案主要有 ToLua、xLua、uLua、sLua,本文将介绍 ToLua 逻辑热更新方案。1)热更新的好处不用浪费流量重新下载;不用通过商店审核,版本迭代更加快捷;

little_fat_sheep 2278
上一篇: excel导出为lua文件
下一篇: python读写excel
monkeycat520
博客等级 码龄9年 7粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值