golang游戏等资源压缩包创建和操作方法
作者:csdn93033 发布时间:2024-04-30 10:00:22
标签:golang,压缩包
游戏资源包的创建、修改、读取等操作。
注意:资源包为游戏等需要快速读取的场景使用,所以并未对文件进行分块操作,都是一整个读取压缩的,所以需要自行保证文件大小的合理或者自行更改代码进行分包压缩,再则不对重复文件做校验,不同路径的同一个文件将被认为是两个文件。
引入包:
gpk "github.com/lsq51201314/go-pack"
创建资源包:
gpk.Object.Create(创建空的资源包)
gpk.Object.CreateFromFolder(从文件夹创建资源包)
var g gpk.Object
defer g.Close()
if err := g.CreateFromFolder(
"D:/UserData/Desktop/resource",
"D:/UserData/Desktop/resource.gpk",
"123456",
process,
); err != nil {
fmt.Println(err)
return
}
用于显示处理进度的函数:
func process(file string, current, count int) {
fmt.Println(file, current, count)
}
载入资源包:
if err:= g.Load("D:/UserData/Desktop/resource.gpk","123456");err!= nil {
fmt.Println(err)
return
}
获取资源包内文件数量:
g.GetTotal()
获取资源包内文件列表:
g.GetList()
读取资源包内文件:
if data, err := g.GetData("image 6021.png"); err != nil {
fmt.Println(err)
return
} else if err := os.WriteFile("D:/UserData/Desktop/image 6021.png", data, 0777); err != nil {
fmt.Println(err)
return
}
删除资源包内文件:
注意:为了快速处理,并没有实际删除文件,仅删除了文件列表内索引,资源包的大小并不会有变化。
g.Delete("image 6021.png")
if err := g.Save(); err != nil {
fmt.Println(err)
return
}
添加或更新文件:
注意:为了快速处理,并没有实际更新文件,不管是添加还是更新都是在文件的末尾操作,资源包的大小会随着操作不断变大。
if err := g.AddOrUpdate("test.txt", []byte("hello world")); err != nil {
fmt.Println(err)
return
}
if err := g.Save(); err != nil {
fmt.Println(err)
return
}
重建文件:
说明:当资源包不断的操作之后将产生很多的无用碎片导致资源包非常大,使用此方法重新生成一个资源包删除掉无用的碎片是最好的选择,此操作为漫长过程,需要用户等待。
if err := g.NewFile("D:/UserData/Desktop/newRes.gpk", process); err != nil {
fmt.Println(err)
return
}
合并资源包:
说明:合并来自另外一个资源包的资源。
if err := g.Merge("D:/UserData/Desktop/update.gpk", "123456", process); err != nil {
fmt.Println(err)
return
}
来源:https://blog.csdn.net/csdn93033/article/details/126331349
0
投稿
猜你喜欢
- 如下所示:#coding:utf8import pandas as pdimport numpy as npfrom pandas impo
- if"""条件语句:ifif...elseif...elif...elseif 语句的格式:if 条件: &n
- 有一个需求就是需要对url进行进一步的划分得到详细的各个字段信息,下面是简单的实现:#!/usr/bin/python# -*- codin
- 如下所示:import numpy as npfrom torchvision.transforms import Compose, ToT
- 利用 CSS 框架,可以简化你的工作,提高工作效率。CSS 框架是一系列 CSS 文件的集合体,包含了基本的元素重置,页面排版、网格布局、表
- 如下所示:import osimport cv2import sysimport numpy as nppath = "F:\\I
- 一、相关知识点讲解1.1 需要使用的相关库import numpy as npimport pand
- 一般跟踪训练的ground_truth的数据保存在文本文文件中,故每一行的数据为一张图片的标签数据,这个时候读取每一张图片的标签,具体实现如
- 本文实例为大家分享了python实现最大优先队列的具体代码,供大家参考,具体内容如下说明:为了增强可复用性,设计了两个类,Heap类和Pri
- 前言有时候在使用Python处理比较耗时操作的时候,为了便于观察处理进度,这时候就需要通过进度条将处理情况进行可视化展示,以便我们能够及时了
- HTML转PDF:1.页面底层实现——Vue:最低兼容ie102.实现思路:1> 使用html2canvas.js将网页转换为图片2&
- 调取摄像头的实现import numpy as npimport cv2cap = cv2.VideoCapture(0)#参数为0时调用本
- lambda函数用法lambda非常重要的一个定义。lambda在【运行时】才绑定,【不是】在定义的时候绑定。下面这个列子:本意想:让X分别
- numpy array存储为.npy存储:import numpy as npnumpy_array = np.array([1,2,3])
- 对于大多数数据科学家而言,线性回归方法是他们进行统计学建模和预测分析任务的起点。这种方法已经存在了 200 多年,并得到了广泛研究,但仍然是
- XML被设计用来描述数据,其焦点是数据的内容。HTML被设计用来显示数据,其焦点是数据的外观。
- 如何做一个文本书写器?我们有下面的的函数,可做“文本书写器”:<%function WriteToFile(FileName
- #! /usr/bin/env python ##python2.7-批量下载壁纸 ##壁纸来自桌酷网站,所有权归属其网站 ##本代码仅做为
- 微信小程序image组件binderror使用例子(对应html、js中的onerror)官方文档 binderrorHandle
- 1、使用empty方法创建数组该方式可以创建一个空数组,dtype可以指定随机数的类型,否则随机采用一种类型生成随机数。import num