关于项目里配套资源产生的 meta 文件的讨论

从这里点进去打开的项目资源


然后对比一下我之前的quick-x项目文件夹,明显干净程度是有差别的



那些 meta 不是和游戏项目无关的东西,meta 需要和资源一一对应, 并且一同提交到版本管理系统。

我是说这与我要做的游戏的内容无关。这些文件是工具所需要的。我其实只关心里面的js脚本和各种资源,如果用其他代码编辑器就会明显有感觉了,成倍的文件数量,打开代码文件都需要过滤meta文件。

用户直接对文件系统的操作都必须同步对 meta 进行,如果隐藏 meta,Creator 的资源管理器将无法追踪外部的文件系统变动,也无法支持 Git, SVN 等工具。
目前我们还没找到 meta 文件在技术上的替代品,如果你有好的方案欢迎进一步探讨。

最后还是感谢你的反馈,对你使用上的不便,建议在外部工具里使用过滤选项过滤掉 meta,或者在 Creator 里查找和定位资源。

简单说说为什么需要 meta 文件:
meta 里面保存了资源 id,有了 id 就能追踪资源文件的变化。当资源内容被美术修改,同时也被重命名时,资源管理器就能通过 meta 里的 id 重新检索到资源。
为什么需要检索资源呢?因为在大型项目中,解耦资源使用者和资源开发者能提高协作效率。使用者不关心资源路径,开发者也可以任意管理资源。
程序员一般不是资源使用者更不是开发者,所以也不需要关心资源放在哪,不用关心资源后缀名是 png 还是 psd。

meta文件可以默认设置为隐藏文件或统一放到一个meta文件下,这样估计效果会好点。

用户直接对文件系统的操作都必须同步对 meta 进行,隐藏的话,用户修改资源路径时就没办法同步更新 meta。

都直接映射到另外一个统一的目录不知道可以不?不要跟原始资源放到一个文件夹下

那样用户操作完资源目录后,容易忘了更新映射后的文件夹。就算都更新了,提交 Git 时也容易忘记提交 meta 文件夹。

…目前“用户操作完资源目录后,容易忘了更新映射后的文件夹”这个工作不都是creator自动完成的吗?根本不需要用户来做才对啊~至于忘记提交Git那就个开发者自己维护项目的事情了我觉得不需要管吧~就算是代码也有忘记提交的可能啊。我瞎说的哈,理解的可能哪里不对,存讨论

只有在 Creator 的资源管理器中操作资源,才会自动更新 meta 文件。如果用户关掉 Creator,自己在外部更新资源,那 Creator 要如何自动完成?
如果 meta 存在另外一些奇怪的目录中,提交 Git 会容易出错,特别是用户本地文件一多的时候。如果把 meta 和资源放在一起,是对是错一目了然,出了问题要追溯历史也方便的多。

1.只有在 Creator 的资源管理器中操作资源,才会自动更新 meta 文件。如果用户关掉 Creator,自己在外部更新资源,那 Creator 要如何自动完成?

这个可以在资源管理器中一个xx目录,对于关闭掉Creator的情况,可以在Creator启动的时候自检,很多工具都是这样的,启动的时候如果检测到有新变动就自动更新~
对于git出错这个我不太了解,不发表观点~·

自检的话,当资源内容被美术修改,同时也被重命名时,怎么知道哪个资源对应哪个 meta?

我之前一直在用creator内置的编辑器,所以没什么感觉,但是开发游戏内容核心的时候都是纯代码,需要同时打开多个文件进行coding,然后之前是习惯于干净一点的文件数量,其实内置的编辑器也很好用,我只用内置编辑器不会有什么体验上面的问题,如果能改善一下内置编辑器,可以同时快速的在多个文件切换,那可能才是好一点的解决方案。。。


ps:看不清图ctrl键 + 鼠标滚轮放大

我觉得最重要有一点

**

内置编辑器要有说明书看

**

因为我发现其实在编码的时候使用内置编辑器效率更高,代码提示的什么都有,修改直接保存就可以看到浏览器刷新的游戏运行结果,但很可惜,我根本不会用,快捷键什么的都是猜。。这么适合creator的代码编辑器为什么不多花一点精力优化完善一下呢?

Q:编辑器里的代码编辑器提示不够智能/不能自动排版/不能显示文件列表/打开太慢/…

A:代码编辑器只提供快速查看编辑脚本的功能,不胜任也不建议作为工作用的编辑器。目前已经支持 VSCode 里的代码提示和语法高亮功能,推荐使用,参考 配置代码编辑环境 文档。

另外,如果各位不爽 Sublime 中的文件有成倍的数量,那建议掌握下跳转文件的快捷键,直接输入文件名跳转,不要看目录,那样工作效率会大大提高。

Q:自检的话,当资源内容被美术修改,同时也被重命名时,怎么知道哪个资源对应哪个 meta?

A:如果是在非编辑器环境下重命名,就作为一个新都资源加入,之前都所有文件关联都会断开。unity就是这样处理都,他的文档里明确说明,不让用户自己手动操作资源目录,如果用户自己到资源文件下去重命名结果就是上面说的那样。
而且这个问题跟开不开这编辑器没关系,你开着编辑器我也可以去资源目录重命名啊

其实这就是个规则的事:你把过则定好了“必须在编辑器下去重命名文件,否者会导致XXXX”,别人自己不按要求来,出了问题就是他自己都事了,unity这么干这么多年了,也没人说啥不好。

多人协作时,Unity 也不是像你说的那样,下面引用自 Unity 官网

Before checking your project in, you have to tell Unity to modify the project structure slightly to make it compatible with storing assets in an external version control system. This is done by selecting Edit->Project Settings->Editor in the application menu and enabling External Version Control support by selecting Visible Meta Files in the dropdown for Version Control. This will show a text file for every asset in the Assets directory containing the necessary bookkeeping information required by Unity. The files will have a .meta file extension with the first part being the full file name of the asset it is associated with. Moving and renaming assets within Unity should also update the relevant .meta files. However, if you move or rename assets from an external tool, make sure to syncronize the relevant .meta files as well.

When creating new assets, make sure both the asset itself and the associated .meta file is added to version control.

如果你真的要求 “必须在编辑器下去重命名文件,否者会导致XXXX”,那就用不了 Git 了。你觉得 Unity 都是这么干的,那应该是因为你没用到 Git。

soga,原来是这样,确实没有用git。。