【问题标题】:Does not contain a definition for 'AddComponent' and no accessible extension method 'AddComponent' error in Unity不包含“AddComponent”的定义,并且 Unity 中没有可访问的扩展方法“AddComponent”错误
【发布时间】:2020-06-14 22:33:26
【问题描述】:

在下面的代码中,我正在尝试创建一个实例化游戏对象并将组件添加到对编辑器的公开,但在 Unity 中出现以下错误。似乎 _currentPiece 无法添加到 ExposeToEditor 中,我正在尝试找到解决方法。解决方法是什么?

错误 CS1061:“SnapPiece”不包含“AddComponent”的定义,并且找不到接受“SnapPiece”类型的第一个参数的可访问扩展方法“AddComponent”(您是否缺少 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 }); 
            } 
       }

【问题讨论】:

  • 你可能想要 _currentPiece.gameObject.AddComponent... 之类的,你不会将单一行为添加到单一行为,而是添加到游戏对象
  • 谢谢。这似乎行得通!

标签: c# unity3d components


【解决方案1】:

不同于GetComponent,后者由GameObjectComponent(MonoBehaviour 继承自)实现

AddComponentGameObject实现。

你需要一直按照GameObject点赞

ExposeToEditor exposeToEditor = _currentPiece.gameObject.AddComponent<ExposeToEditor>();

【讨论】:

  • 感谢 derHugo 的澄清!您推荐的代码解决了我的编码错误。
猜你喜欢
  • 2023-01-19
  • 2022-07-21
  • 2023-01-12
  • 2020-10-06
  • 2019-05-05
  • 1970-01-01
  • 1970-01-01
  • 2023-03-13
  • 2020-01-22
相关资源
最近更新 更多