Unity报错CS0101:全局命名空间已存在PlayerCollision定义
Unity CS0101 重复定义错误解决方法
Assets\Scripts\PlayerCollision.cs(4,14): 错误 CS0101: 命名空间''已包含'PlayerCollision'的定义
对应的脚本代码:
using UnityEngine; public class PlayerCollision : MonoBehaviour { void OnCollisionEnter (Collision collisionInfo) { if (collisionInfo.collider.tag == "Obstacle") { Debug.Log("We hit something"); } } }
解决这个重复定义问题,按以下步骤排查:
- 搜索项目内的同名脚本:在Unity的Project窗口搜索
PlayerCollision.cs,如果找到多个同名文件,删除多余的副本(比如误复制、不同目录下的重复文件)。 - 检查当前脚本的类定义:打开报错的
PlayerCollision.cs,确认文件内没有重复声明public class PlayerCollision的代码块(比如不小心粘贴了两次类代码)。 - 处理全局命名空间冲突:如果你的脚本没加命名空间,全局命名空间里不能有重名类。要么给其中一个类重命名,要么给不同类添加各自的命名空间,比如:
// 给其中一个类加命名空间区分 namespace PlayerSystems { public class PlayerCollision : MonoBehaviour { ... } } - 清理Unity编译缓存:关闭Unity,删除项目根目录下的
Library文件夹,重新打开项目等待编译完成。 - 强制触发重新编译:在Unity编辑器顶部选择
Edit > Project Settings > Player,找到Other Settings里的Scripting Runtime Version,切换到另一个版本再切回原版本,强制刷新编译缓存。
内容的提问来源于stack exchange,提问作者Enache Ianis
相关产品推荐
相关产品推荐

