2016-11-09 65 views
1

我使用Unity 5.4.2f2个人,我已经写了类似如下的C#脚本:使用嵌套类为Unity3D组件

using UnityEngine; 
using System; 

public class Outer : MonoBehaviour { 

    // Some public outer fields 

    public class Inner : MonoBehaviour { 
     // Some public inner fields 
    } 

} 

我希望能够既OuterInner重视GameObjects在我的场景中。不幸的是,Inner不会显示为Unity Inspector中的可用脚本,即使我向其中添加了[Serializable]。我知道很多人可能会说我的设置有问题,如果我试图让外部世界可见的嵌套类,但为了这个问题,我只想知道这个是否可以是完成。也就是说,有没有办法让嵌套类可以用作Unity组件?

回答

3

不,没有办法将嵌套类用作统一组件。要将MonoBehaviour类用作统一组件,类名必须必须与脚本的文件名相同,因此使用嵌套类将不可能。

如果您将外部类重命名为您想要的任何其他名称,而无需重命名脚本文件,您将看到无法使用新的外部类。

[编辑]

我发现documentation。正如我所说: “类名和文件名必须相同才能将脚本组件附加到GameObject上。”

+0

感谢您的回答!我在Unity Answers上发现了一个似乎与您同意的问题(下面的链接),但在文档中找不到任何官方提及的此规则。你偶然有链接吗? http://answers.unity3d.com/questions/497914/does-every-c-class-need-to-have-its-own-script-wit.html – Rabadash8820

+0

当我看到你的问题,我搜索统一文件,但我也找不到那些信息。我只知道这是因为以前的经验。尝试重命名外部类并将脚本拖放到某个游戏对象,您将看到一条错误消息 – luizcarlosfx

+0

真棒,感谢您的链接。非常感谢您的帮助! – Rabadash8820