不包含“AddComponent”的定义,并且 Unity 中没有可访问的扩展方法“AddComponent”错误

Posted

技术标签:

【中文标题】不包含“AddComponent”的定义,并且 Unity 中没有可访问的扩展方法“AddComponent”错误【英文标题】:Does not contain a definition for 'AddComponent' and no accessible extension method 'AddComponent' error in Unity 【发布时间】: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... 之类的,你不会将单一行为添加到单一行为,而是添加到游戏对象 谢谢。这似乎行得通! 【参考方案1】:

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

AddComponentGameObject实现。

你需要一直按照GameObject点赞

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

【讨论】:

感谢 derHugo 的澄清!您推荐的代码解决了我的编码错误。

以上是关于不包含“AddComponent”的定义,并且 Unity 中没有可访问的扩展方法“AddComponent”错误的主要内容,如果未能解决你的问题,请参考以下文章

[树形DP]没有上司的舞会

为啥 AddComponent 会添加太多脚本? [关闭]

关于一个Unity的问题,AddComponent<>和GetComponent<>有啥区别?

Javascript Regex 检查 URL 是不是包含一个单词并且不包含另一个单词

“System.Data.DataTable”不包含“tables”的定义,并且找不到可接受类型为“System.Data.DataTable

在Prolog中定义包含函数类型的类型层次结构