##lua与C
---
###Lua的虚拟栈
---
- 每一个与Lua通信的C函数都有其独有的虚拟栈,虚拟栈由Lua管理
- 栈中的数据通过索引值进行定位
- 其中栈顶是-1,栈底是1,也就是第1个入栈的在栈底
- 正数表示相对于栈底的位置(位移),负数表示相对于栈顶的位置(位移)
---
---
###方法调用
```C
//nargs 参数个数
//nresu
###table相关api
---
```c
lua_createtable
原型: void lua_createtable (lua_State *L, int narr, int nrec);
描述: 创建一个新的table并将之放在栈顶.narr是该table数组部分的长度,nrec是该table hash部分的长度.
当我们确切的知道要放多少元素到table的时候,使
##Lua的基本类型
---
- 简单变量类型:
- `number`:数字类型,所有的数字都是number类型,内部实现中区分为整形和浮点型。
- `string`:字符串类型 , “xxx” 或 ‘xxx’
- `boolean` 布尔类型 , true 或 false
- `nil` 空类型 , 未声明的变量均为nil类型
- 复
##装箱拆箱
---
- 装箱是将`值类型转换为引用类型`,详细点就是`值类型到Object类型或值类型所实现的任何接口类型的隐式转换`
- 将引用类型转换为值类型,详细点就是`从object类型到值类型`或`从接口类型到实现该接口的值类型`的显示转换
---
###装箱步骤
- 首先从托管堆中为新生成的引用对象`分配内存`
- 然后将值类型的数据`拷贝`到刚刚分
## Socket编程 TCP粘包
---
### TCP粘包
- 粘包可能在服务端产生也可能在客户断产生,提交数据给tcp发送时,tcp并不立刻发送此段数据,而是等待一
小段时间,看看在等待期间是否还有要发送的数据,若有则会一次把这两段数据发送出去,造成粘包;
- 另一端在接收到数据后,放到缓冲区中,如果消息没有被及时从缓存区取走,下次在取数据的时候可能就会出现一次取出多个数据包
##虚方法调用
---
- 现在面向对象的封装、继承、多态中的`多态`实现主要就是靠`虚方法`
- 一个类型可能会有子类,子类可能会重写类型的方法从而达到不同的行为(多态),而这些`重写的方法`都在`虚方法表`里,`调用`的话就需要`查表`。
- 编译器在编译的时候为每一个含有`虚函数的类`分配一个`虚函数表`,生成对象的时候为`每一个对象`分配一个`虚表指针`,指向本类的`虚函数表
##C# 版本与 Unity 的关系
---
###Unity 与 C# 版本
Unity 版本 | C# 版本 |
---|
Unity 2021.2 | C# 9 |
Unity 2020.3 | C# 8 |
Unity 2019.4 | C# 7.3 |
Unity 2017 | C# 6 |
Unity 5.5 | C# 4 |
---
- 不同Unity版本支持的C#版
##unity坐标系
---
屏幕坐标系 Screen Space
- 屏幕坐标系是建立在屏幕上的二维坐标系。
- 以像素来定义的,屏幕的左下角为(0,0),右上角为(Screen.width, Screen.height),z轴的坐标是相机的世界坐标中z轴坐标的负值。
- 鼠标位置坐标属于屏幕坐标,通过Input.mousePosition可以获得该位置的坐标。
- 屏幕也
- 两数之和-01
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
你可以按任意顺序返回答案。
示例 1:
输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nu
- 648. 单词替换-字节
在英语中,我们有一个叫做 词根(root) 的概念,可以词根后面添加其他一些词组成另一个较长的单词——我们称这个词为 继承词(successor)。例如,词根an,跟随着单词 other(其他),可以形成新的单词 another(另一个)。
现在,给定一个由许多词根组成的词典 dictionary 和一个用空格分隔单词形成的句子 sentence。你需要将句子中