关于项目里配套资源产生的 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。。

原来vs code就是最终解决方案,好的,确实使用得可以。。我之前一眼扫过去以为是要用VS那个大编辑器编写代码,原来这是一个轻量的编辑器。。。这个解决方案可以。

嗯,代码的meta文件,vscode里面直接过滤就行了。还有文件名跳转和各种自定义snippets让VSCode无比好用,所以官方真的没有必要再花精力去搞内置编辑器,在这一点上官方团队的选择是对的。自从用了vscode两天以后,sublime已经被我卸了。

文本编辑器里都可以设置过滤条件的,以sublime为例,在 user settings 里添加

	"file_exclude_patterns": 
	[
		"*.meta"
	]
1赞

这么贴心,还帮我找了sublime的过滤方法~~~好的,谢谢,这个我觉得应该放在官方文档上面让更多的人知道,我相信有很多之前用lua的都是用这个编辑器的

不过既然你们都改了标题了,那我就来讨论一下这个meta文件的问题

我曾经让我弟用这个编辑器,他不是做游戏开发的,但是也是做游戏的,是游戏汉化,日翻加美工,所以绝对会PS但是是零程序基础,他使用这工具的时候是感觉一看到代码心情就低落,因为会被程序员笑话不懂程序,然后自己也会感觉自己什么都不懂,这就是单纯一个美术来用这个工具的用后感,所以,要想用好这个工具的美术,我看还是需要一点点的要求的。这是题外话。。

然后这个meta文件我觉得着实不应该到处放的,你们没考虑到真开发游戏后的人的感受,虽然后期可以打包图集,打包代码什么的,但是正在开发的时候呢?肯定要忍受打开系统资源管理器的时候面对double count的文件数量,这其中就包含了一个过滤任务,就是用开发者的人脑来过滤这些meta文件,这样的体验一定是不好的。。

我听了你们上面的解释,这是工具实现实时监测文件变化的一种技术手段,但是这种技术手段其实比较初级吧,我也是怕你们没什么精力去做太多事情,所以就不讨论太多,但是居然帮我改了标题,那我就讨论了。

至于解决方案,我的思考是这样:
可以做一个映射的方法,把meta的内容集中到其他地方,但是怎么实现我是完全不知道怎么讨论,你们的招你们自己想法吧,我只提供讨论,就举一个实例,sublime这个工具,假设我正在打开sublime中,正在开着某个文本文件,然后我用其它文本工具例如nodepad++,改了我在sublime正在打开的文件,那么我一切回sublime那也是一样会刷新成最新的改动结果。。那这个实现的效果不就是和你们的工具是一样的吗??那问题来了,sublime并没有加额外的东西给他的用户吧。。他的技术完全隐含了起来,完全让你感觉不到技术的存在了。。。。

1赞

我现在考虑将 meta 文件设为隐藏

文本编辑器里都是按照路径索引的,不存在类似数据库的映射需要,这类索引当然可以轻松实现无附加管理,但是想想你重构代码的时候改了一个文件的路径,然后就必须靠人肉全局搜索来修正所有代码引用里这个文件的路径。而 creator 的资源就没这个问题,只要你在资源管理器里修改,或者文件和 meta 同步修改,不管怎么改名、移动,引用都不会丢失

meta 主要是为了解决关闭编辑器后,文件在外部进行修改,移动操作时的索引问题。sublime 是一直开着编辑器的,没有可比性。

赞一个,标记一下。

我们可能有点土,只用本地svn工具,如果外部文件修改,都是主动去刷新;运行结果不对,也会去主动刷新。
说实话,为了同步外部编辑器修改,增加meta,代价有点大!

sublime 可以屏蔽特定格式的文件

求教如何通过prefab里的__type__关联到对应js文件的meta里的uuid,现在知道uuid通过base64转成__type__但是这个应该不存在反向还原的吧,那是如何通过__type__关联到这个js的uuid的呢?

感觉可以加一个文件夹. 同步映射assets的结构.
meta 存那个文件夹. 然后那个文件夹也需要版本管理

前面讨论过了,请看一下 11 楼附近,请不要重复发表一样的观点