求助:C#中无法跨文件访问public类Character的问题
问题解决方法
1. 统一命名空间或检查脚本目录
如果两个类不在同一命名空间,HeroInfo无法识别Character:
- 给两个类添加相同的命名空间,并在HeroInfo中引用:
// Character.cs 文件 namespace GameCore { public class Character { public string name; public int exp = 0; public Character(string name) { this.name = name; } } } // HeroInfo.cs 文件 using GameCore; public class HeroInfo : MonoBehaviour { void Start() { Character hero = new Character("玩家1"); Debug.LogFormat("Hero: {0} - Experience {1}", hero.name, hero.exp); } }
- 若未使用命名空间,确保两个脚本都放在Unity的可编译目录(如
Assets/Scripts),Unity仅编译这些目录下的脚本。
2. 匹配脚本文件名与类名
Unity要求C#脚本文件名必须和public类名完全一致(大小写也要匹配)。Character类所在文件必须命名为Character.cs,否则Unity无法正确编译该类。
3. 修复构造函数调用错误
当前new Character()会报错,因为Character仅定义了带string参数的构造函数,无无参构造:
- 要么添加无参构造函数:
public class Character { public string name; public int exp = 0; public Character() { name = "默认角色"; } public Character(string name) { this.name = name; } }
- 要么实例化时传入名字参数:
Character hero = new Character("我的英雄");
4. 强制重新编译项目
若以上操作后仍有问题,可尝试:
- 右键Project窗口,选择
Reimport All重新导入资源 - 关闭并重新打开Unity,清除编译缓存
内容的提问来源于stack exchange,提问作者JunPixel
相关产品推荐
相关产品推荐

