0%

AssetBundle 简介

AssetBundle 是一个存档文件,包含可在运行时加载的特定平台资源(模型、纹理、预制体、音频、甚至整个场景,除了C#脚本)。

AssetBundle 可以表达彼此之间的依赖关系;例如 AssetBundle A 中的材质可以引用 AssetBundle B 中的纹理。

为了通过网络进行有效传递,可以根据用例需求选用内置算法来压缩 AssetBundle(LZMA 和 LZ4)。

AssetBundle 可用于可下载内容(DLC,又称追加内容下载包),减小初始安装大小,加载针对最终用户平台优化的资源以及减轻运行时内存压力。

AssetBundle 资源打包

阅读全文 »

LuaInterface 库

LuaInterface下载地址

  • LuaInterface是一个用于在Lua语言和Microsoft .NET平台的公共语言运行时(CLR)之间集成的库。 Lua脚本可以使用它来实例化CLR对象,访问属性,调用方法,甚至使用Lua函数处理事件。
  • LuaInterface.Lua类是CLR访问Lua解释器的主要接口,一个LuaInterface.Lua类对象就代表了一个Lua解释器(或Lua执行环境),Lua解释器可以同时存在多个,并且它们之间是完全相互独立的。
阅读全文 »

Lua 语言本身是非常简单的(相对于 C#,C++,Java …),由于 Lua 语言的创始人的初衷,就是设计一款简单而又小巧的语言,所以说 Lua语言本身是没有“类和对象”的概念的。

类定义模拟

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
-- 定义一个表,模拟类
Person = {name, age, gender} -- 模拟字段

<!-- more -->
Person.Id = 1 -- 模拟静态变量

function Person:New() -- 模拟构造函数,通过设置元表的方式
4local object = {}
4setmetatable(object, Person)
4self.__index = Person
4return object
end

function Person.Print() -- 模拟类方法
4print("Print something")
end

function Person:Show() -- 模拟成员方法
4print(self.name, self.age, self.gender)
end

类调用模拟

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
zak = Person:New()  -- 创建对象
zak.name = "zak" -- 字段使用
zak.age = 18
zak.gender = "男"
kyle = Person:New() -- 创建对象
kyle.name = "kyle" -- 字段使用
kyle.age = 16
kyle.gender = "男"


print(Person.Id) -- 静态字段使用
print(zak.Id)
print(kyle.Id)

Person.Print() -- 类方法调用

zak:Show() -- 成员方法调用
kyle:Show()

继承模拟

1
2
3
4
5
6
7
8
9
10
11
12
Programer = Person:New()	-- 模拟继承父类

function Programer:New()
4local object = Person:New()
4setmetatable(object, Programer)
4self.__index = Programer
4return object
end

function Programer:Code()
4print(self.name.." is coding")
end

调用

1
2
3
4
5
6
zac = Programer:New()
zac.name = "zac" -- 调用父类成员
zac.age = 20
zac.gender = "男"
zac:Show()
zac:Code() -- 调用子类自己成员

代码分离

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
-- Hero.lua
Hero = {name}

function Hero:New()
4local object = {}
4setmetatable(object, self)
4self.__index = self
4return object
end

function Hero:Info()
4print("Hero's name : " .. self.name)
end

-- Enemy.lua
Enemy = {name}

function Enemy:New()
4local object = {}
4setmetatable(object, self)
4self.__index = self
4return object
end

function Enemy:Info()
4print("Enemy's name : " .. self.name)
end

-- main.lua
dofile("Hero.lua") -- 引用类,参数为类文件路径
dofile(".\\Enemy.lua")

hero = Hero:New()
hero.name = "a"
hero:Info()

enemy = Enemy:New()
enemy.name = "b"
enemy:Info()

模块定义

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
-- MyMath.lua   -- 脚本的名称要和模块的名称一样
MyMath = {} -- 定义模块

PI = 3.1415 -- 定义常量

<!-- more -->
function Add(first, second) -- 定义公开方法
return first + second
end

local function fun() -- 定义私有方法
print("这是私有方法")
end

return MyMath -- 结束模块

模块使用

1
2
3
4
5
require("MyMath")   -- 加载模块
print(MyMath.Add(MyMath.PI, 10))

myMath = require("MyMath") -- 加载模块,别名使用
print(myMath.Add(1, 2))

基础语法速记

  • 单行注释 --
  • 多行注释 —[[]]—
  • 数据类型,nil、boolean、number、string、、table、function、userdata和thread
  • 不等于,~=
  • 逻辑运算符,and,or,not
阅读全文 »

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <stdio.h>

#define MAX 100000

int main(void) {

int count;
int array[MAX];
int i;
int maxSum;
int tempSum;
<!-- more -->
scanf("%d", &count);
for (i = 0; i < count; i++) {
scanf("%d", &array[i]);
}

maxSum = 0;
tempSum = 0;
for (i = 0; i < count; i++) {
tempSum += array[i];
if (tempSum > maxSum) {
maxSum = tempSum;
}
if (tempSum < 0) {
tempSum = 0;
}
}

printf("%d", maxSum);

return 0;
}

  • 索引是一种特殊的查询表,可以被数据库搜索引擎用来加速数据的检索。
  • 索引能够提高 SELECT 查询和 WHERE 子句的速度,但是却降低了包含 UPDATE 语句或 INSERT 语句的数据输入过程的速度。
  • 索引可以是唯一的。

创建索引

  1. 单列索引
1
2
CREATE INDEX index_name
ON table_name (column_name);
阅读全文 »

  • SQL 别名用于为表或表中的列提供临时名称,数据库中的实际表名不会更改。
  • SQL 一个别名只存在于查询期间。

列的别名

1
2
SELECT column_name AS alias_name
FROM table_name;

表的别名

1
2
SELECT column_name, column_name...
FROM table_name AS alias_name;