unity3d - 除了在 Unity3D 中使用 "Assets/Gizmos"之外,如何使用自定义脚本图标

标签 unity3d customization unity3d-editor unity-editor

我知道这可能被问了很多次......但它经常被错误地回答。

我想要的是:

在 Inspector(例如图 2 和图 3)和 ProjectView(例如图 1)中为特定组件/脚本使用自定义图标
alt text

到目前为止我所做的:

对于每个应具有图标的组件/类,我在文件夹中有一个 accroding Icon 文件

Assets/Gizmos/<Path>/<To>/<Namespace>/<ClassName> icon

Import Settigns设置 TextureTypeEditor GUI and Legacy GUI
这工作正常.. 直到现在我才能实现这一目标的唯一方法(记住下面的部分 我绝对不想要的 )。



但是,我想知道是否真的没有更好的方法让每个脚本都有一个唯一的图标文件。这使得项目/UnityPackage 变得不必要地庞大。此外,如果我重命名一个类,我总是必须重命名相应的图标文件......这意味着感觉不对!

大多数 Unity 内置行为和组件都有一个独特的图标。但来自新 PackageManager 的外部包也有内置图标,有时还有 Gizmos文件夹,但它不遵循上述命名规则......所以显然图标是为他们配置的。

因此我的问题:
有没有更好的方法来为脚本/组件设置这些图标?

最好编写脚本并重用一个单独的图标文件,而不是在多个不同命名的文件中使用相同的图标。

和/或还有这些图标在哪里/如何为来自 PackageManager 的脚本定义?

!笔记!我绝对不想要的:

还在 SceneView 中为所有 GameObjects 显示图标连接这些组件(例如图 4)。这是由于通过 Inspector 选择此脚本的图标,如图 5 所示(如在 this posthere 甚至 Unity - Assign Icons 中始终建议的那样)或使用 OnDrawGizmosDrawGizmo . 使用我目前对 Gizmos 使用的方法不会发生这种情况。文件夹!

alt text

更新

因为这是在 this answer 中提出的。 : 我也知道我可以这样做并通过 Gizmos 关闭它们场景 View 的设置。 但是想象一下,我有 25 个不同的模块和各种不同的图标。我不想在每个项目的基础上一个一个地在 SceneView 设置中禁用他们的 Gizmo!甚至提供的脚本似乎也是一个巨大的hackaround。反射(reflection)将是我最后的手段。此外,我宁愿根本不让这些图标显示为可能的 Gizmo,而不是全部禁用它们。

最佳答案

因此,我对内置类型以及来自包管理器和 Assets 商店的包进行了更多研究。任何外部的(packagemanager 或 assetsstore),如果它有脚本和检查器的自定义图标,它将 总是 在场景 View 中有一个小工具。因为它使用您的图 5 示例设置了图标,如调试检查器的屏幕截图所示。

此外,如果您想使用脚本设置图标或隐藏它,当前反射是您的仅限 选项,因为这些 API 不可公开访问。

My Script showing the debug inspector for its script

PixelPerfect package script from the packagemanager in the debug inspector

PixelPerfect Icon showing in the scene

我希望将此作为评论添加到您的原始问题,但还没有足够的代表。

关于unity3d - 除了在 Unity3D 中使用 "Assets/Gizmos"之外,如何使用自定义脚本图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51397355/

相关文章:

c# - 在 Content Size Fitter 更新内容的 Rect Transform 后,如何让 Unity Scroll Rect 滚动到底部?

audio - 如何使用谐波数据计算麦克风输入的基频

c# - 标识符不在范围内 [Unity, VS2019]

android - Unity 2019 - SDK 工具版本 0.0 < 26.1.1

ruby-on-rails - 自定义 spree 的最佳方式?

r - 直接从 R 实现自定义停止指标以在 H2O 模型训练期间进行优化

android - osmdroid XYTileSource 不显示来自 Android 服务器的图 block

unity3d - unity 条件字段自定义编辑器

c# - 统一 5 : Clean way to manage dynamically created GameObjects

c# - 如何在 CustomEditor 中选择嵌套的 ReorderableList 中的元素?