Не содержит определения «AddComponent» и нет доступного метода расширения «AddComponent» ошибка в Unity - PullRequest
0 голосов
/ 02 марта 2020

В приведенном ниже коде я пытаюсь создать экземпляр игрового объекта и добавить компонент в экспозицию в Editor, но в Unity возникает ошибка, приведенная ниже. Кажется, _currentPiece не может быть добавлен в ExposeToEditor, и я пытаюсь найти решение для этого. Какой будет обходной путь?

ошибка CS1061: «SnapPiece» не содержит определения для «AddComponent», и нет доступного метода расширения «AddComponent», принимающего первый аргумент типа «SnapPiece» (вы пропустили директиву using или ссылка на сборку?)

public class SnappableSpawner : MonoBehaviour
        {
            public GameObject prefabSnapPiece;
            public float initialDistanceToSpawnAt = 1f;
            private float _currentDistanceToPositionAt;

            private SnapPiece _currentPiece;
            private int _spawnSuffix = 1;

            public void SpawnGhostToMouse()
            {
                if( _currentPiece == null )
                {
                    _snapMode = PointerSnapMode.ABSOLUTE_PROJECTION;
                    _currentDistanceToPositionAt = initialDistanceToSpawnAt;
                    _currentPiece = GameObject.Instantiate( prefabSnapPiece ).GetComponent<SnapPiece>();
                    _currentPiece.name = "Spawned-"+_spawnSuffix;
                    _spawnSuffix++;

                    ExposeToEditor exposeToEditor = _currentPiece.AddComponent<ExposeToEditor>();
                    IRTE editor = IOC.Resolve<IRTE>();
                    editor.Undo.RegisterCreatedObjects(new[] { exposeToEditor }); 
            } 
       }

1 Ответ

2 голосов
/ 02 марта 2020

Отличается от GetComponent, который реализован как GameObject и Component (от которого наследуется MonoBehaviour)

AddComponent это только реализовано GameObject.

Вам необходимо всегда go через соответствующий GameObject как

ExposeToEditor exposeToEditor = _currentPiece.gameObject.AddComponent<ExposeToEditor>();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...