Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Emo_Tiny
ZFramework
提交
ee96f089
Z
ZFramework
项目概览
Emo_Tiny
/
ZFramework
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Z
ZFramework
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
ee96f089
编写于
8月 18, 2021
作者:
Z
zhengxiaofeng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
【lua框架】提交将多个lua脚本打包成一个文件
上级
f8d4540c
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
122 addition
and
0 deletion
+122
-0
Assets/Script/Xlua/PakFile.cs
Assets/Script/Xlua/PakFile.cs
+111
-0
Assets/Script/Xlua/PakFile.cs.meta
Assets/Script/Xlua/PakFile.cs.meta
+11
-0
未找到文件。
Assets/Script/Xlua/PakFile.cs
0 → 100644
浏览文件 @
ee96f089
using
System.Collections.Generic
;
using
System.Security.Cryptography
;
using
System.IO
;
using
ZFramework.Core
;
namespace
ZFramework.XLua
{
/// <summary>
/// 用于将多个文件合并成一个大文件,在本框架内主要的作用是见将多个lua文件合并成一个大的文件
/// </summary>
public
class
PakFile
:
System
.
IDisposable
{
public
enum
Mode
{
Read
,
Write
}
private
struct
PakEntry
{
public
string
name
;
public
uint
offset
;
public
uint
size
;
}
private
string
_pakFilePath
;
private
Mode
_mode
;
private
uint
_version
;
private
byte
[]
_md5
;
private
Dictionary
<
string
,
PakEntry
>
_entriesMap
;
private
List
<
PakEntry
>
_entriesList
;
private
uint
_dataOffset
;
private
byte
[]
_data
;
public
uint
Version
{
get
{
return
_version
;
}
}
private
PakFile
(
string
path
,
Mode
mode
)
{
_pakFilePath
=
path
;
_mode
=
mode
;
}
/// <summary>
/// 向大文件内增加小文件
/// </summary>
/// <param name="path"></param>
/// <param name="relativeRootPath"></param>
/// <param name="pathSepInName"></param>
public
void
AppendFile
(
string
path
,
string
relativeRootPath
=
null
,
char
pathSepInName
=
'.'
)
{
if
(!
string
.
IsNullOrEmpty
(
path
))
{
path
=
path
.
Replace
(
'\\'
,
'/'
);
using
(
FileStream
fileStream
=
new
FileStream
(
path
,
FileMode
.
Open
))
{
PakEntry
info
;
if
(
string
.
IsNullOrEmpty
(
relativeRootPath
))
{
int
si
=
path
.
LastIndexOf
(
'/'
);
int
ei
=
path
.
LastIndexOf
(
'.'
);
info
.
name
=
path
.
Substring
(
si
+
1
,
ei
-
si
-
1
);
}
else
{
int
si
=
path
.
LastIndexOf
(
relativeRootPath
)
+
relativeRootPath
.
Length
;
int
ei
=
path
.
LastIndexOf
(
'.'
);
info
.
name
=
path
.
Substring
(
si
+
1
,
ei
-
si
-
1
);
info
.
name
=
info
.
name
.
Replace
(
'/'
,
pathSepInName
);
}
info
.
offset
=
0
;
info
.
size
=
(
uint
)
fileStream
.
Length
;
byte
[]
data
=
new
byte
[
info
.
size
];
fileStream
.
Read
(
data
,
0
,
(
int
)
info
.
size
);
if
(
_data
==
null
)
{
_data
=
data
;
}
else
{
int
srcOffset
=
_data
.
Length
;
System
.
Array
.
Resize
(
ref
_data
,
_data
.
Length
+
data
.
Length
);
System
.
Buffer
.
BlockCopy
(
data
,
0
,
_data
,
srcOffset
,
data
.
Length
);
}
if
(
_entriesList
==
null
)
_entriesList
=
new
List
<
PakEntry
>();
_entriesList
.
Add
(
info
);
}
}
}
~
PakFile
()
{
Dispose
();
}
public
void
Dispose
()
{
}
}
}
\ No newline at end of file
Assets/Script/Xlua/PakFile.cs.meta
0 → 100644
浏览文件 @
ee96f089
fileFormatVersion: 2
guid: 8b196c97fe7ca7247bf4a136cf59e76b
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录