Unity 如何处理导出游戏中的文件夹和文件?

How does Unity handle folders and files in exported games?

我在使用 Unity 进行游戏开发方面还很陌生,想知道 unity 的 "export game" 功能是如何工作的。我还没有统一使用这个函数,但我读到它会从你的完整游戏中生成一些 .exe 文件。我还读到它会创建一个 "data" 文件夹或类似的东西。

我的问题是:这个 "data" 文件夹中到底存储了什么?以及我如何编写逻辑来保存我自己的文件(例如包含保存状态、设置、配置等的文件)在此目录中的某个文件中(然后随完整游戏一起提供/在本地游戏目录中创建之后)例如,用户第一次保存了他的游戏?我可以将这些文件保存在相对路径中吗(例如 ./MyGame/data/savegames)?

我可以创建哪些类型的文件?文本/二进制?或者我什至可以使用一些关系数据库(一些像 HSQLDB 这样的小数据库)?

模型、声音、动画和其他资产是如何处理的?它们是否都打包在我的完整游戏 .exe 文件中?或者我是否有一些单独的文件夹,其中包含为他们提供的游戏?

谢谢!

数据文件夹(与exe文件同名,但末尾是_Data而不是.exe,后者是can be safely renamed to just Data) contains all of the dlls that actually run the game (even a blank Unity project will have them! The unity engine itself compiles to several dlls) as well as any Resources you might have (tip: stop using resources and use Asset Bundles)。

省略这个文件夹确实很糟糕!

至于 reading/writing 来自硬盘的其他数据(这在所有平台上都是不可能的——看看你的网络部署)我建议使用你自己的文件夹,例如。 RuntimeData 可以包含外部音频、图像或视频文件以及可变数据,例如 save games 或屏幕截图。几乎任何你可以让你的用户在不严重破坏东西的情况下修改的东西(现在改装是 "in")。

至于文件的类型:好吧,那完全由你决定,真的!创建文本文件(任何扩展名:xml、html、dat、qqq...)非常容易。图像往往是通过第 3 方脚本完成的(您 真的 想编写自己的 JPG 转换器吗?视频,同样的事情)。您还可以 create binary files 遵循您自己选择的格式。唯一的困难是为数据编写序列化器和反序列化器,这将随着数据规模的复杂性而增加。

您拥有完整的文件系统访问权限*,因此您实际上可以在任何地方读写。这是我们正在谈论的 C#。但能力越大,责任越大。

*注意:移动设备对这类事情非常不满,并且会拒绝访问明确指定给该应用程序的文件夹之外的文件夹。