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

Unity中C#自定义类无法显示二维数组问题求助

Unity自定义Scoreboard类控制台无输出的问题排查与解决

我帮你分析下代码里的问题,主要是构造函数的变量引用错误导致数据没有被正确赋值,所以控制台看不到内容:

核心问题:构造函数中未正确赋值成员变量

在你的Scoreboard构造函数里,这行代码有问题:

data = data;

这里的两个data都是构造函数的参数,并没有修改类的成员变量data。因为参数名和成员变量名重名了,编译器优先识别局部参数,所以这行相当于自己给自己赋值,完全没作用,类里的data始终是空字符串。

其他细节问题

  1. strData是一个长度为1的数组,里面只有一个长字符串,循环逻辑虽然能执行,但因为成员data没被正确初始化,最终还是空的。
  2. 循环里每次追加逗号,最后会多一个多余的逗号,影响输出格式。

修正后的代码

CustomClass.cs

public class Scoreboard
{
    public string[,] tableBR { get; set; }
    // 可以去掉字符串里的多余空格,让输出更整洁
    string[] strData = {"P,B,B,P,B,B,B,B,B,B,P,P,B,P"};
    public string data = "";
    public int X_LENGTH = 104;
    public int Y_LENGTH = 15;

    // 建议修改参数名避免和成员变量重名,或者用this.data明确引用成员
    public Scoreboard(string inputData)
    {
        // 正确赋值成员变量
        this.data = inputData;
        // 用string.Join优化字符串拼接,避免手动循环加逗号
        this.data += string.Join(",", strData);
    }

    public override string ToString()
    {
        return "this are all the data :" + data;
    }
}

MainClass.cs

如果你想看到初始数据,可以传入非空的字符串,或者直接依赖strData的内容:

void Start()
{
    // 传入初始提示文本,或者空字符串也可以,只要成员data被正确赋值
    Scoreboard scoreBoard = new Scoreboard("");
    string s = string.Format("{0}", scoreBoard);
    Debug.Log("The data is : " + s);
}

为什么这样修改后就能正常输出?

  • 用this.data明确指向类的成员变量,确保构造函数里的赋值能生效,把传入的参数和strData的内容都加到data里。
  • 用string.Join替代循环拼接,既简洁又避免了末尾多余的逗号问题。

现在运行代码,Unity控制台就能看到完整的字符串数据了。

内容的提问来源于stack exchange,提问作者user9871139

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:18:22