Unity3d AddComponent принимает переменную

Детали: В C# на Unity3d Поиск производился в документации по Unity, но этот пример не подходит для моего случая, как и для других веб-сайтов, которые я посетил. (Я не перечислил их, как я должен.)

То, что я пытаюсь сделать, это передать переменную класса с конструктором в качестве компонента:

CustomComponentClass ccc = new CustomComponentClass(2343, "blop");
gameObject.AddComponent(ccc);

Я хочу знать, что я пытаюсь сделать, или я что-то пропустил...

Проблема:

gameObject.AddComponent(ccc); -> cannot convert ccc to string.

gameObject.AddComponent<ccc>(); -> Are you missing a using directive or an assembly reference? (i'm not, i'm using a variable and all is in the same namespace)

gameObject.AddComponent<CustomComponentClass>(ccc); -> UnityEngine.GameObject.AddComponent(string) cannot be used with the type arguments

gameObject.AddComponent<CustomComponentClass>(2343, "blop"); -> No overload for method AddComponent takes 2 arguments

Все, что я пытаюсь, не работает. C# не совсем похож на javascript, если я прав, мы привыкли передавать переменные в addcomponent в js.

Контекст: я должен обязательно передать это в конструкторе. У меня есть 2 поля, которые являются частными, и я не могу преобразовать их в статические, постоянные или открытые по соображениям безопасности.

Опции: Если ответ слишком сложен для меня, я, вероятно, сделаю get/set и проверим, не заполнены ли поля.

1 ответ

Решение

Вам абсолютно не нужно передавать это конструктору.

Вместо этого создайте компонент как обычно (без параметров), добавьте компонент к игровому объекту, затем вызовите метод настройки для компонента, который предоставляет необходимые параметры и запускает любой код, который у вас есть в конструкторе.

Другие вопросы по тегам