关于最近Unity编辑器代码使用总结(三)
关于最近Unity编辑器代码使用总结(三)
前言
在写项目的过程中,我又遇到了一些关于Unity编辑器代码使用的问题。所以我再次开了一份新文章来记录我所遇到的问题。我是没想到这玩意还能到三的,不过我现在倒是觉得如果出四也正常了。毕竟只要还在做项目,问题总是有的。o(╥﹏╥)o
获取EditorWindow的位置和大小信息
EditorWindow中有一个变量名为position。如果只看名字你或许会以为这只是一个提供位置的Vector2或是Vector3类型的变量,但实际上他是一个Rect类型的变量。因此我们可以通过它来获取到EditorWindow的位置和大小信息。
个人认为这个变量的取名实在是很不好,如果开发者单纯想获取到编辑器窗口的大小,谁能想到一个'position'就涵盖了大小呢?
监听编辑器运行状态变换
有时候,我们需要游戏运行起来后,或是需要游戏结束后去开启部分功能。那么就可以使用EditorApplication.playModeStateChanged来监听编辑器运行状态变换。
居中显示
居中显示的场景其实有很多,比如文本居中,单个控件/控件组的居中显示。如果我们要做一个居中排布的做法,你可以按照下面的方法来做:
1 | GUILayout.FlexibleSpace(); |
上面的代码是我自己实践工程中的(我虽然记得我是从某个网站里看到的,但是我不知道这个网站了)。GUILayout.FlexibleSpace是一个插入灵活的空白元素的方法。如果你只在前面或者后面设定,则会变成右端对齐或者左端对齐。所以如果我们中间对齐的话就是在你所需要的居中对齐的元素前后使用这个函数。上面的代码仅仅只是做了控件上的居中显示。当你用这个方法在LabelField上时,你会发现这个方法并不适用。这是因为LabelField的文字是向左对齐的,且其控件大小是Unity内部自动给的,不一定就是我们文字所占的宽度。这时候我们可以用下面的代码来保证居中显示:
1 | // 获取LabelField的默认style |
闲言碎语
整整一年多,虽然我一直都在补充,但是这篇文章的内容还是有点少了。主要是还是我没有足够多的需求去探索。所以我决定把这篇文章定位为持续更新的文章,直到这文章的篇幅到达一定的长度。2025.7.31留




