热更新,通俗点说就是补丁,玩家那边知道重启客户端就可以更新到了的,不用卸载重新安装app,相对于单机游戏,这也是网络游戏用得比较多的一个东西吧。
首先,大概流程如下:
Are You Ready?
Go!
luaFileList.json文件内容一般是lua文件的键值对,key为lua文件路径+文件名,value为MD5值:
1
2
3
|
{
"lua/main.lua"
:
"151b0dea5fcd207b1bf0a2d94218de76"
,
}
|
这个配置可以写工具导出来:
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
|
public
static
void
ExportLuaJson
(
string
luaRootDir
,
string
outputPath
)
{
if
(
System
.
IO
.
Directory
.
Exists
(
outputPath
)
)
{
FileUtil
.
DeleteFileOrDirectory
(
outputPath
)
;
}
Dictionary
<
string
,
string
>
luaList
=
new
Dictionary
<
string
,
string
>
(
)
;
string
[
]
allLuaList
=
System
.
IO
.
Directory
.
GetFiles
(
luaRootDir
,
"*"
,
System
.
IO
.
SearchOption
.
AllDirectories
)
;
for
(
int
i
=
0
;
i
<
allLuaList
.
Length
;
i
++
)
{
string
filePath
=
allLuaList
[
i
]
;
if
(
filePath
.
EndsWith
(
".meta"
)
)
continue
;
if
(
filePath
.
Contains
(
".svn"
)
)
continue
;
if
(
filePath
.
Contains
(
".bak"
)
)
continue
;
if
(
filePath
.
Contains
(
".bat"
)
)
continue
;
if
(
filePath
.
Contains
(
".txt"
)
)
continue
;
if
(
filePath
.
Contains
(
".DS_Store"
)
)
continue
;
string
luaFilePath
=
filePath
.
Replace
(
"\\"
,
"/"
)
.
Replace
(
luaRootDir
,
""
)
;
string
luaFileMd5
=
GetFileMD5
(
filePath
)
;
luaList
.
Add
(
luaFilePath
,
luaFileMd5
)
;
string
toPath
=
filePath
.
Replace
(
luaRootDir
,
outputPath
)
;
string
toDirectory
=
System
.
IO
.
Path
.
GetDirectoryName
(
toPath
)
;
if
(
!
System
.
IO
.
Directory
.
Exists
(
toDirectory
)
)
{
System
.
IO
.
Directory
.
CreateDirectory
(
toDirectory
)
;
}
FileUtil
.
CopyFileOrDirectoryFollowSymlinks
(
filePath
,
toPath
)
;
}
LitJson
.
JsonWriter
writer
=
new
LitJson
.
JsonWriter
(
)
;
writer
.
PrettyPrint
=
true
;
LitJson
.
JsonMapper
.
ToJson
(
luaList
,
writer
)
;
System
.
IO
.
File
.
WriteAllText
(
outputPath
+
"luaFileList.json"
,
writer
.
TextWriter
.
ToString
(
)
)
;
}
|
上面用到的获取MD5的接口网上很多,这里就不写了哈。