Unity开发报错CS0101:全局命名空间已存在PlayerShoot定义
解决Unity CS0101错误:命名空间已包含PlayerShoot定义
你遇到的CS0101错误,本质是全局命名空间里已经存在一个PlayerShoot类的定义,和你当前脚本里的类重名了。解决方法分这几个方向:
排查重名脚本文件
直接去Assets\Low Poly Guns\Scripts目录下检查,是不是存在两个(或多个)名为PlayerShoot.cs的文件,删掉多余的那个就行。检查当前脚本内部的重复定义
打开你的PlayerShoot.cs,确认文件里有没有重复写public class PlayerShoot : MonoBehaviour的代码。如果不小心复制了两次类定义,删掉其中重复的部分。给类添加自定义命名空间隔离冲突
如果项目里确实需要保留两个同名类(很少见),可以给你的类加上专属命名空间,避免全局冲突:
using System.Collections; using System.Collections.Generic; using UnityEngine; namespace LowPolyGunSystem { public class PlayerShoot : MonoBehaviour { [Header("References")] [SerializeField] GunData gunData; private void Start() // 注意这里首字母要大写,Unity生命周期方法必须大写才会被调用 { PlayerShoot.shootInput += Shoot; } public void Shoot() { Debug.Log("Shot Gun!"); } } }
另外提个小细节:你的代码里start()方法首字母是小写的,Unity的生命周期方法(比如Start、Update)必须首字母大写才能被引擎正确调用,建议改成Start()。
内容的提问来源于stack exchange,提问作者George Moule
相关产品推荐
相关产品推荐

