Unity中SceneManager.activeSceneChanged编译器生成副本歧义问题求解
解决Unity SceneManager.activeSceneChanged 歧义错误(CS0229)的思路
显式指定成员所属命名空间/类型
歧义源于存在两个同名的activeSceneChanged成员,直接通过完整命名空间限定Unity的SceneManager来消除歧义:UnityEngine.SceneManagement.SceneManager.activeSceneChanged += OnSceneChanged;如果你自定义了同名类/事件,也可以用同样方式限定自己的代码,或者直接重命名自定义成员避免冲突。
排查并移除冗余定义
编译器生成的成员通常来自自动实现的事件或重复定义。检查Plugin.cs及相关代码文件,确认是否存在自定义的activeSceneChanged事件,比如:public static event Action<Scene, Scene> activeSceneChanged;若存在,直接删除该自定义事件,或重命名为
CustomSceneChanged这类不冲突的名称。使用命名空间别名简化代码
若必须保留自定义的SceneManager类,可在文件顶部给Unity的命名空间设置别名:using UnityScene = UnityEngine.SceneManagement.SceneManager;后续绑定事件时直接使用别名:
UnityScene.activeSceneChanged += OnSceneChanged;清理项目编译缓存
旧的编译缓存文件可能引发这类歧义问题。清理项目的obj、bin目录,重新生成解决方案,确保没有残留的过时编译产物。
内容的提问来源于stack exchange,提问作者icecub
相关产品推荐
相关产品推荐

