我知道这个问题可能已经被问了很多次,但是很多时候回答都是错误的。
我想要的是:
在检查器中为特定的组件/脚本(例如图2和图3)以及项目视图(例如图1)使用自定义图标
我到目前为止所做的:
对于每个需要有图标的组件/类,我在文件夹中有一个相应的图标文件。
Assets/Gizmos/<Path>/<To>/<Namespace>/<ClassName> icon
在“导入设置”中,将“TextureType”设置为“Editor GUI和Legacy GUI”
这很好用...直到现在我能够实现它(考虑下面的部分“我绝对不想要什么”)。
但是
然而,我想知道是否真的没有更好的方法来为每个脚本设置唯一的图标文件。这使得项目/UnityPackage变得不必要地巨大。而且如果我重命名一个类,我总是需要重新命名相应的图标文件…这似乎不太合适!
大多数Unity内置的Behaviours和Components都有一个独特的图标。但是来自新的PackageManager的外部Packages也有内置的图标,有时还有一个文件夹,但它并没有遵循上述命名规则…所以显然它们的图标是以其他方式配置的。
因此我的问题是:
是否有更好的方法来为脚本/组件设置这些图标?
最好是通过脚本编写,并重用一个单一的图标文件,而不是在多个不同命名的文件中使用相同的图标。
或者那些来自PackageManager的脚本的图标是如何定义的?
!注意! 我绝对不想要的内容:
在所有已附加这些组件的GameObjects
中(例如图4),也在SceneView中显示图标。这是通过通过检查器选择该脚本的图标(如图5中始终建议的那样,例如在this post或here中,甚至通过Unity - Assign Icons)或使用OnDrawGizmos或DrawGizmo引起的。 使用我当前使用的Gizmos
文件夹的方法不会发生这种情况!
更新
因为这是在此答案中建议的:我也知道我可以通过场景视图的Gizmos
设置来关闭它们。 但是想象一下,我有大约25个不同的模块和各种不同的图标。我不想每个项目都需要逐个禁用它们在SceneView设置中的Gizmos!即使提供的脚本看起来像是一个巨大的hackaround。反射将是我最后采取的选择。此外,我更喜欢根本不要让这些图标出现为可能的Gizmos,而不是全部禁用它们。
scriptClass = ""
,你应该也差不多。另外,我添加了一个检查,一旦检测到没有名称的 scriptClass 就跳过它。 - BrightenedLight