Mad*_*ark 4 c# mono unity-game-engine
我正在寻找一种方法来禁用在 Unity 编辑器中附加我的 MonoBehaviour 组件的可能性。所以我不希望我的组件出现在用户可见的任何地方。
原因是我从带有AddComponent<T>(). 所以这更像是一个方便的问题,我只是不希望用户认为他必须手动添加我的组件才能让我的插件工作。(如果他无论如何都这样做,那不会造成任何麻烦。同样,这只是方便)
我正在编写一个库(dll 插件),所以我不能使用与我的组件不同的文件命名技巧,但这正是我正在寻找的效果。
我还尝试简单地将我的类作为内部类,因为它确实是这样,程序集应该是唯一可以访问此组件的类。但是,恐怕即使使用内部类从 MonoBehaviour 继承也会使该组件在编辑器中可用...
该HideInInspector属性似乎不适用于类。
我AddComponent从静态方法调用,RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.AfterSceneLoad)所以我不会有任何其他行为可以依赖。
相当大的挑战,如果我们能找到答案,那就太奢侈了。任何的想法?非常感谢
一个非常简单的解决方案是使您的类成为某个所有者的内部类:
class NotAMonoBehaviour {
class MyMonoBehaviour : MonoBehaviour {
//etc.
}
}
Run Code Online (Sandbox Code Playgroud)
你可以很容易地添加这个类:
gameObject.AddComponent<NotAMonoBehaviour.MyMonoBehaviour>()
Run Code Online (Sandbox Code Playgroud)
它不会出现在检查器的添加组件列表中。按照建议设置使用隐藏标志也将阻止它在检查器本身中显示,尽管不能完全依赖,因为您可以在检查器中打开 Debug 视图并仍然看到隐藏的组件。