2016-11-09 2 views
1

Я использую Unity 5.4.2f2 Personal, и я написал C# сценарий, подобный следующему:Использование вложенного класса, как Unity3D компонент

using UnityEngine; 
using System; 

public class Outer : MonoBehaviour { 

    // Some public outer fields 

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

} 

Я хотел бы, чтобы иметь возможность прикрепить как Outer и Inner к GameObjects в моей сцене. К сожалению, Inner не отображается как доступный скрипт в Инспекторе Unity, даже если я добавлю к нему [Serializable]. Я знаю, что многие люди, вероятно, скажут, что что-то не так с моей настройкой, если я пытаюсь сделать вложенный класс видимым для внешнего мира, но ради этого вопроса я просто хочу знать, может ли этот быть сделанный. I.e., есть ли способ сделать вложенные классы пригодными для использования в качестве компонентов Unity?

ответ

3

Нет, нет способа использовать вложенный класс как компонент единства. Чтобы использовать ваш класс MonoBehaviour как компонент единства, имя класса должно быть равно имени файла вашего скрипта, поэтому использовать вложенный класс было бы невозможно.

Если вы переименуете свой внешний класс на любое другое имя без переименования файла сценария, вы увидите, что использовать новый внешний класс тоже невозможно.

[EDIT]

Я нашел 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

Смежные вопросы