You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助: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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 18:33:26