Answers:
您也可以查看SharpZipLib或DotNetZip -DotNetZip使您可以Stream
直接访问,这很有用,因为大多数C#库都可以从流(而不是文件)中加载。此外,DotNetZip使用Ms-PL(BSD-Like),而不是具有法律可疑异常的GPL。
另一种选择是使用纹理地图集 -而不是让许多小图像有一些大图像。如果您对如何绘制它们很了解,它们实际上加载速度会稍快一些,并且在运行时会略快一些。
最后,您可以通过相关的无损压缩程序(PNG,FLAC等)运行每种资产类型,并将它们存储在平面文件(基本上是禁用压缩的zip文件)中。请记住避免压缩压缩数据,因为在大多数情况下,压缩数据会增加大小。
一些现有技术:
一种选择是以与制作压缩纹理相同的压缩格式存储图像。这样做的好处是,您不会将一种有损格式转换为另一种有损格式,而是以有损格式存储数据。根据纹理的不同,通过将此类文件存储在压缩档案中可能仍然会有所收获。
有关压缩纹理的更多信息,请参见以下答案:https : //gamedev.stackexchange.com/a/5177/3505
ZLIB可能是一个很好的答案,但是如果您知道有人开始抢资产,那么您也可以制作自己的文件格式来存储资产,尽管这并不难。
这是您的制作方法。
它是用C语言编写的,但学习起来并不难,因为C#与C和C ++类似。
当然,仍然具有较高知识的人可以利用您的资源,如果需要,可以添加少量加密,而不必太费力。
这可能非常有用,但是只会加入您的文件。对于压缩,您也有两种选择。
制作您的整个资源文件,将其压缩并运送。
此方法很简单,但不是很好,如果您只想使用一种资源,则应解压缩所有内容。
压缩每个资源,并将它们压缩后添加到资源文件中。
这也非常好,因为方法1旁边的大小会稍有增加,因为每个文件都是分别压缩的,但是如果需要灵活性,它会更好。
每种方法都有其自身的缺点,您应该明智地选择。通常,如果您的游戏的资源数量很少,则方法1应该更好;如果您有很多,则方法2应该适合您,因为所有资源的总和将压倒您获得的额外资源。
对于压缩库,您具有:
如果我想在游戏中快速访问游戏,我会选择LZO,所以如果我想要缩小文件的大小或压缩平衡,则不必担心实时解压缩;如果要缩小文件,则不必担心7-Zip压缩。
选择是你的:D
嗯,当然还有其他压缩数据的算法,您可以在谷歌搜索中找到。