- 博客(101)
- 收藏
- 关注
转载 ToLua框架下C#与Lua代码的互调
本篇文章转自https://www.jianshu.com/p/f083bbaa048a, 感谢作者的分享Lua是目前国内使用最多的热更语言,基于Lua的热更框架也非常多,最近学习了一下ToLua的热更框架,主要使用的问题在于C#和Lua之间的互调,因此做一下学习记录以备后查。所谓“互调”,当然要包括两个方面,一是通过C#调用Lua代码,二是通过Lua代码调用C#脚本,第二点还包括注册在C#脚本里的Unity物体。1. ToLua的简单实现原理ToLua框架主要是通过静态绑定来实现C#与Lu.
2020-05-31 21:16:55
1219
转载 Egret的屏幕适配模式图示
1 ShowAll过长时,上边有边框过短时,左右有边框2 noScale不会进行任何缩放。下图是宽高 640x1136的场景显示在浏览器414x736上3 noBorder过长时,裁减左右过短时,裁减上下4 fixedWidth过长时,下方有边框过短时,裁减下方5 fixedHeight...
2019-11-11 20:42:44
1150
转载 为什么宏定义要使用16进制呢
如:#define SDL_INIT_TIMER 0x00000001#define SDL_INIT_AUDIO 0x00000010#define SDL_INIT_VIDEO 0x00000020#define SDL_INIT_CDROM 0x00000100#define SDL_INIT_JOYSTICK ...
2018-10-14 17:39:05
2536
转载 TypeScript 解构和展开
解构是什么解构(解构赋值)是一种表达式,将数组或者对象中的数据赋予另一个变量。在开发过程中,我们经常遇到这样问题,需要将对象某个属性的值赋给其它两个变量代码如下:var person = { name:'xxxx', age: 20, hobby:['football', 'run']}var a = person.name;var hobby = person.b...
2018-07-02 22:56:36
6446
1
转载 Unity性能优化之DrawCall
图形引擎渲染画面的过程Unity(或者说基本所有图形引擎)生成一帧画面的处理过程大致可以这样简化描述:1. 可见性测试1. 引擎首先经过简单的可见性测试,确定摄像机可以看到的物体2. 准备好物体的数据2. 然后把这些物体的顶点(包括本地位置、法线、UV等),索引(顶点如何组成三角形),变换(就是物体的位置、旋转、缩放、以及摄像机位置等),相关光源,纹理,渲染方式(由材质/Shader决定)等数据准...
2018-06-06 09:37:03
10415
转载 U3D DrawCall优化手记
在最近,使用U3D开发的游戏核心部分功能即将完成,中间由于各种历史原因,导致项目存在比较大的问题,这些问题在最后,恐怕只能通过一次彻底的重构来解决现在的游戏跑起来会有接近130-170个左右的DrawCall,游戏运行起来明显感觉到卡,而经过一天的优化,DrawCall成功缩减到30-70个,这个效果是非常显著的,并且这个优化并没有通过将现有的资源打包图集来实现,图集都是原有的图集,如果从全局的角...
2018-05-30 15:18:59
231
转载 Lua调用原理展示(lua的堆栈)
转载地址:https://blog.youkuaiyun.com/zhuzhuyule/article/details/41086745一、Lua虚拟机的栈1.1先简单介绍下Lua虚拟机的栈,如图:规则:①若Lua虚拟机堆栈里有N个元素,则可以用 1 ~ N 从栈底向上索引,也可以用 -1 ~ -N 从栈顶向下索引,一般后者更加常用②堆栈的每个元素可以为任意复杂的Lua数据类型,堆栈中没有元素的空位,隐含为包...
2018-05-08 11:58:47
7058
2
翻译 漫谈lua虚拟机
什么是虚拟机?大部分人都用c语言写过简单的小程序吧,写好后用编译器,比如turbo c或者visual c++编译生成exe文件,然后执行exe程序。exe文件里面其实存放着c代码对应的机器指令,执行exe就是调度cpu去一句句执行机器指令。lua与c语言不同的地方在于,lua不需要编译成exe文件,可以由lua虚拟机执行lua代码文件。lua虚拟机用c语言编写,执行代
2018-05-08 10:19:25
912
转载 Lua虚拟机的初始化
一、Lua脚本语言1. 概述Lua是一种脚本编程语言,与一般脚本语言不同,被称为是嵌入式的脚本语言。Lua最著名的应用是在暴雪公司的网络游戏魔兽世界中。Lua语言可以独立进行编程,但这不是其主要的使用方式。Lua最典型的用法,是作为一个库,嵌入到其他大型语言(称为宿主语言)的应用程序之中,为应用程序提供参数配置或逻辑描述等功能,带来前所未有的灵活性。
2018-05-08 10:00:13
1117
转载 通过LuaInterface完成Lua和C#之间的互相调用
**LuaInterface**通过LuaInterface完成Lua和C#之间的互相调用①需要下载LuaInterface包:核心库:LuaInterface.dll和Luanet.dll②在C#脚本中加入引用上面的核心库③进行代码编写1.在C#中执行访问Lua代码Lua lua = new Lua(); //创建Lua解析器 l
2018-05-07 14:31:52
2267
转载 Unicode 和 UTF-8 有何区别?
很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物。他们看到8个开关状态是好的,于是他们把这称为”字节“。再后来,他们又做了一些可以处理这些字节的机器,机器开动了,可以用字节来组合出很多状态,状态开始变来变去。他们看到这样是好的,于是它们就这机器称为”计算机“。开始计算机只在美国用。八位的字节一共可以组合出256(2的8次方)种不同的状态。 他们把其中的编...
2018-02-10 17:32:19
187
转载 VS2010 中更改项目名称
在VS2010中新建一个像项目,开发工作都接近尾声了,客户要求更换项目的名称,差不多要变更整个解决方案中项目名称,引用等等,这个工作量还是很大的。上网搜索解决方法,还实验了专门的修改项目名称工具,但是最后都是一堆的错误,看着头疼。其实项目名称个人感觉没那么重要,客户要的是程序能够正常的运行起来,在运行的过程中也是不出现项目名称的,不知道为何要该,但是客户要求改我们还能拒绝?客户是上帝,这个上帝有点
2018-02-05 17:02:21
222
转载 unity渲染层级关系小结
最近连续遇到了几个绘制图像之间相互遮挡关系不正确的问题,网上查找的信息比较凌乱,所以这里就把自己解决问题中总结的经验记录下来。 Unity中的渲染顺序自上而下大致分为三层。 最高层为Camera层,可以在Camera的depth那里设置,设置之后,图形的渲染顺序就是先绘制depth低的相机下的物体,再绘制depth高的相机下的物体,也就是说,depth高的相机会覆盖depth低的相
2018-01-30 21:46:01
286
转载 U3D sorting layer, sort order, order in layer, layer
1,layer是对游戏中所有物体的分类别划分,如UIlayer, waterlayer, 3DModelLayer, smallAssetsLayer, effectLayer等。将不同类的物体划分到不同的层,便于相机拣选,在相机的cullmask中可以选择渲染哪些层,不选择的层则不会渲染。还可以用于射线检测对象的拣选,可以指定只对某些层的对象进行射线检测。2,canvas默认是屏
2018-01-30 19:27:30
1104
转载 Lua之弱引用table
弱引用table1.无法超越人类智慧的智能——自动内存管理的缺陷我们都知道,Lua是具备自动内存管理的我们只管创建对象,无须删除对象(当然,对于不要的对象你需要设置一下nil值),Lua会自动删除那些被认为是垃圾的对象。问题就出现在,什么对象才是垃圾对象,有些时候,我们很清楚某个对象是垃圾,但是,Lua却无法发现。 比如这样一个例子:复制代码代码
2017-11-21 21:31:42
277
转载 几种编码区别
随便说说字符集和编码快下班时,爱问问题的小朋友Nico又问了一个问题:"sqlserver里面有char和nchar,那个n据说是指unicode的数据,这个是什么意思。"并不是所有简单的问题都很容易回答,就像这个问题一样。于是我答应专门写一篇BLOG来从头讲讲编码的故事。那么就让我们找个草堆坐下,先抽口烟,看看夜晚天空上的银河,然后想一想要从哪里开始讲起。嗯,也许
2017-08-03 18:02:16
3017
转载 屏幕适配
适配屏幕的技巧多屏幕分辨率可真是开发者的死对头啊!常言道:你若屏幕分辨多,我就自挂东南枝~不过对于游戏开发而言,一旦理解了适配屏幕的原理,便可无敌于众多的屏幕分辨率了。在开始游戏开发时,我们预设一个“原始屏幕“,在原始屏幕上绘制各种游戏元素;当实际将游戏部署到不同分辨率的设备上时,再将“原始屏幕”绘(ying)制(she)到实际屏幕上去。在映射到
2017-06-28 09:44:16
465
转载 游戏分包下载机制原理
一般RPG游戏资源安装包都比较庞大(相对于手机存储来说),而且我们的动画资源完全是序列帧动画,又进一步加大了程序安装包,而平台对安装包的大小有限制,不同大小的安装包需要的推广费用不同,对于玩家来说安装包尽量越小越好,这就要求我们控制游戏apk的大小,刚开始什么打包的时候apk大小在180M左右,后来通过各种优化资源,包括删减动画的序列帧,通过图片压缩工具压缩图片资源等手段将apk大小降低到120M
2017-04-27 21:58:50
5567
转载 Unity编辑器扩展-菜单项
Unity编辑器允许你去添加像内置菜单一样外观和行为的自定义菜单。自定义菜单对于那些经常使用的功能提供一种能从编辑器直接访问的便捷方式。在这一课程中我将对每个描述的主题提供真实的使用示例,用于说明在unity中的菜单项是如何创建和使用的。添加菜单项为了要在顶层工具栏中创建一个新的菜单项,你必须去创建一个编辑器脚本(在项目Editor目录下的一个脚本)。此菜单项需要是一个静态的方法且
2017-04-14 10:47:47
395
转载 20个位运算技巧
一提起位运算,人们往往想到它的高效性,无论是嵌入式编程还是优化系统的核心代码,适当的运用位运算总是一种迷人的手段,或者当您求职的时候,在代码中写入适当的位运算也会让您的程序增加一丝亮点,最初当我读《编程之美》求“1的数目”时,我才开始觉得位运算是如此之美,后来读到 《Hacker's Delight》,感慨到Henry S.Warren把位运算运用的如此神出鬼没,很多程序都十分精妙,我觉得在一
2017-04-05 19:16:54
392
转载 弧度与角度的关系
一、角的两种单位 “ 弧度”和“度”是度量角大小的两种不同的单位。就像“米”和“市尺”是度量长度大小的两种不同的单位一样。 在flash里规定:在旋转角度(rotation)里的角,以“度”为单位;在三角函数里的角要以“弧度”为单位。这个规定是我们首先要记住的!!!例如:rotation2--是旋转“2度”;sin(π/2)--是大小为“π/2弧度”的角的正弦。
2017-03-19 16:38:38
3504
转载 lua的string库和正则表达式
一.前提要了解一下lua 的string几个方法1. string库中所有的字符索引从前往后是1,2,...;从后往前是-1,-2,...2. string库中所有的function都不会直接操作字符串,而是返回一个结果string.len(s):返回字符串的长度.string.lower(s):变小写.string.upper(s):变大写.str
2017-02-22 09:51:17
451
转载 U3D Anchors功能详解
之前有写过NGUI系列的功能博文,也写过4.6版本的UGUI。想不到Unity发展如此之快,5.0版本中不再支持NGUI了我也不得不使用UGUI了。UGUI的地位已经举足轻重了,所以之后的博客中我会更新整个5.0版本UGUI功能系列文章。正文:UGUI 5.0版本Anchors的参数详解首先看一下UGUI Anchors的界面以butto
2017-02-13 22:05:23
5256
转载 U3D Anchors
看Unity3D文档像看国内教课书一样,一些概念,不懂的时候看还是不懂,明白了以后再看,好像也没有说错。好几个做Unity3D的朋友跟我吐槽过U3D的文档质量,相比Apple贴心的技术文档相去甚远。话虽这么说,权威的资料当然还是官方的,建议先仔细读一遍,不懂的再往下读:http://docs.unity3d.com/Manual/UISystem.html网上的教程大多泛泛而谈
2017-02-13 21:44:21
2106
转载 (转)Unity3D中脚本的执行顺序和编译顺序(vs工程引用关系)
自:http://www.cnblogs.com/champ/p/execorder.html在Unity中可以同时创建很多脚本,并且可以分别绑定到不同的游戏对象上,它们各自都在自己的生命周期中运行。与脚本有关的也就是编译和执行啦,本文就来研究一下Unity中脚本的编译和执行顺序的问题。事件函数的执行顺序先说一下执行顺序吧。 官方给出的脚本中事件函数的执行顺序如下图:
2016-12-01 11:31:08
678
转载 深入理解Lua与C数据通信的栈
注:原文发在公司内部论坛上 Lua与Cjiāo互的栈是一个重要的概念。文章首先解释了为什么要引入Lua栈,然后对访问栈常用的API进行了总结,并使用这些API的注意事项,最后从Lua源代码来看栈的实现原理。 Lua栈概述 我们知道Lua是一种嵌入式语言,所有的Lua程序最后都需要通过Lua解释器(即Lua虚拟机)把其解析成字节码的形式才能执行。 一方面
2014-10-13 10:22:51
550
转载 Lua中实现类的原理 值得一看
Lua中没有类的概念,但我们可以利用Lua本身的语言特性来实现类。下文将详细的解释在Lua中实现类的原理,涉及到的细节点将拆分出来讲,相信对Lua中实现类的理解有困难的同学将会释疑。类是什么?想要实现类,就要知道类到底是什么。在我看来,类,就是一个自己定义的变量类型。它约定了一些它的属性和方法,是属性和方法的一个集合。所有的方法都需要一个名字,即使是匿名
2014-10-11 15:16:53
610
转载 Lua中table的遍历
当我在工作中使用lua进行开发时,发现在lua中有4种方式遍历一个table,当然,从本质上来说其实都一样,只是形式不同,这四种方式分别是:for key, value in pairs(tbtest) do XXX end for key, value in ipairs(tbtest) do XXX end for i=1, #(tbtest) do
2014-10-07 17:31:44
543
转载 Lua库和工具
相比Java、Python、Perl,Lua的开源工具和库可能并不算多,但其中不乏优秀之作。以下介绍的资源均可在http://lua-users.org/wiki/LuaAddons上找到,而且绝大多数都遵循着与Lua相同的许可协议。一、Kepler Kepler是一个简单且轻量的Web开发平台(但这并不意味着只能用它来开发简单的应用),支持用Lua撰写Web程序,因此相
2014-08-22 16:08:09
1058
转载 Lua table 简单理解
1、 table 是 lua 中最重要的数据类型。 2、 table 类似于 python 中的字典。 3、 table 只能通过构造式来创建 例1: Lua代码 mytable = { a = 10, b = 11, c = 20, ddd = 30 } print(mytable["a"]) 注释: 1)、 ta
2014-05-13 14:29:21
542
转载 Lua模块化开发
定义模块的方式定义module有两种方式,旧的方式,适用于Lua 5.0以及早期的5.1版本,新的方式支持新发布的Lua5.1和5.2版本。旧的方式通过module("...", package.seeall)来显示声明一个包。看很多github上面早期的开源项目使用的都是这种方式,但官方不推荐再使用这种方式。定义:1234567
2014-05-13 14:16:53
1750
转载 Lua中的基本函数库
基本函数库为Lua内置的函数库,不需要额外装载assert (v [, message])功能:相当于C的断言,参数:v:当表达式v为nil或false将触发错误,message:发生错误时返回的信息,默认为"assertion failed!"-----------------------------------------------------------
2014-05-13 11:48:12
464
转载 Lua OS库
这个库通过表os实现。os.clock ()功能:返回一个程序使用CPU时间的一个近似值例如:View Row Code1local x= os.clock();2print(os.clock())3local s=0;4for i=1, 10000000
2014-05-13 10:51:50
2338
转载 Lua中的IO库
I/O库为文件操作提供了两种不同的模型,简单模型和完整模型。简单模型假设一个当前输入文件和一个当前输出文件,他的I/O操作均作用于这些文件。完整模型则使用显式的文件句柄,并将所有的操作定义为文件句柄上的方法。 1. 简单模型: I/O库会将进程标准输入输出作为其缺省的输入文件和输出文件。我们可以通过io.input(filename)和io.output(filename)这两
2014-05-12 19:31:22
5062
转载 Lua 闭包
Lua 的函数是一种“第一类值(First-Class Value)”。它可以:存储在变量或 table (例如模块和面向对象的实现)里12t = { p = print}t.p("just a test!")作为实参(也称其为“高阶函数(higher-order fun
2014-05-12 18:50:44
407
转载 Lua中的table函数库
一部分的table函数只对其数组部分产生影响, 而另一部分则对整个table均产生影响. 下面会分开说明. table.concat(table, sep, start, end)concat是concatenate(连锁, 连接)的缩写. table.concat()函数列出参数中指定table的数组部分从start位置到end位置的所有元素, 元素间以指定的分隔符(sep
2014-05-12 16:39:02
427
转载 Lua中的string
1. string库中所有的字符索引从前往后是1,2,...;从后往前是-1,-2,...2. string库中所有的function都不会直接操作字符串,而是返回一个结果s = "[abc]"string.len(s) string.rep("abc", 2) string.lower("ABC") string.upper("abc
2014-05-12 16:14:39
493
转载 Lua面向对象之类和继承理解
其实 Lua 中的 table 是一种对象,因为它跟对象一样,有其自己的操作方法:1234567Role = { hp = 100}functionRole.addHp(hp) Role.hp = Role.hp + hpend
2014-05-12 14:06:36
508
转载 Lua 中的面向对象编程之封装和继承
表:Lua中的数据结构,可以存放各种域。由于Lua中的函数也是第一类值,于是表可以存放属性域和方法域,因此表可以描述一个类。 元表:元表也是一个表,可以设置给一个本表。一个表作为元表概念存在的意义在于它可以通过定义自身的一系列元方法来改变本表的行为。如果一个元表不被设置给一个本表,那么他是没有意义的,一个本表的元表可以是自身。 元方法:Lua
2014-05-12 11:52:43
651
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人