tutorial_fs - seraph526/godot-se GitHub Wiki

文件系统File System

简介Introduction

文件系统的使用是另一个引擎开发的热点话题。资产(assets)如何存储,如何被访问,如何访问,程序员如何使相同的资源多样化等等

最初的引擎版本(包括之前更名为Godot以前的iterations引擎)使用数据库。资产被存储时被赋予一个ID.其他的实现方法也都测试过。使用本地数据库,文件元数据等等。说实话,经过很长一段时间,简单的证明了这一方式是最好的,Godot的文件系统存储所有的资产为各种文件。

实现Implementation

Gogot存储资源到磁盘是。任何东西,从脚本到场景或一张PNG图,都是引擎的一个资源。如果资源包含有指向磁盘上其他资源的属性,那么资源的存储路径被包含进来。如果它有一个子资源是内置的,那么资源和其他捆绑的子资源一起保存为一个单独的文件。如,一个字体资源通常有字符纹理绑定在其中。

元数据文件通常是被丢弃的,整个引擎的设计尝试避免这些。原因很简单,已经存在的资产管理和VCSs比我们能实现的要好得多。所以,Godot尽最大努力与SVN,Git,Mercurial,Perforce等等协作

engine.cfg

这个文件是为了标记它所在的目录和所有子目录是Godot工程文件。它是纯文本,仿win.ini风格的项目配置文档。可是,如果此文档是空的,它也会正常运行。

文件系列示例:


/engine.cfg
/enemy/enemy.scn
/enemy/enemy.gd
/enemy/enemysprite.png
/player/player.gd

目录分隔符(Directory Delimiter)

Godot只支持"/"做为目录分隔符。这是因为可移植性的原因。所有的操作系统都支持这个方式,甚至是Windows,所以如下面所示的路径: c:\project\engine.cfg 需要写成 c:/project/engine.cfg.

资源路径 (Resource Path)

访问资源使用操作系统本身的文件系统可能使得布局变得笨重,不方便。为了解决这个问题,创建了"res://"这个特殊的路径形式。

路径"res://"通常指向项目的根目录(engine.cfg所在的目录,所以,事实上"res://engine.cfg"是一直有效的)。

从编辑器本地运行时,这个文件系统是只读的。当导出或运行在不同的设备时(如phones或consoles,或从DVD运行),文件系统将变成只读,并且不再允许写入。

用户路径 (User Path)

写入磁盘有时还是需要的,从存盘到下载内容包。因此,引擎提供了一个特别的路径"user://",这个路径一直是可写的。

主机文件系统(Host Filesystem)

当然,开放主机文件系统通常是正常工作的,当Godot用来做写入工具时,还是很有用的,对于跨平台的项目,不建议这么做,因为有些平台可能不支持。

缺点 (Drawbacks)

并不是所有的事都是乐观的。使用资源和文件和纯文件系统有两个主要缺点。首先是移动资产(重命名或移动他们到项目的其他文件夹),一旦被引用并不是那么简单。如果是这样,相关的东西都要重新导入。

第二个缺点是在Windows或OSX下,文件访问是有区分大小写的。如果开发者是在这样的操作系统环境下,保存一个文件"myfile.PNG",那么,调用时用"myfile.png",它会工作,但是在其他的系统上不会,如Linux,Andrid等等。当导出为二进制压缩包时可能也不会正常工作。

因此,请确认在使用Godot工作时,你的团队使用定义好的开发命名规范。