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

Unity开发象棋游戏:如何判断object数组元素为Piece或int?

解决Unity象棋游戏中数组元素类型判断问题

你不需要用int.TryParse,因为数组里的int是装箱后的int对象,不是字符串,直接做类型检查就可以。下面是几种简单的实现方式:

方法1:使用is关键字(推荐)

is关键字可以直接判断对象是否为指定类型,代码最简洁:

object[,] board = memoryBoard.createChessBoard(Piece.starting_pos);

// 判断是否为int类型
bool isInt = board[0, 0] is int;
Debug.Log(isInt); // 是int返回true,否则false

// 同时还能直接获取对应值
if (board[0, 0] is int zero)
{
    Debug.Log($"是int类型,值为{zero}");
}
else if (board[0, 0] is Piece piece)
{
    Debug.Log($"是Piece类型,可直接使用piece对象");
}

方法2:使用GetType()对比类型

通过获取对象的运行时类型,和typeof(int)做对比:

// 先判断元素不为null,避免空引用异常
bool isInt = board[0, 0] != null && board[0, 0].GetType() == typeof(int);
Debug.Log(isInt);

方法3:使用可空类型配合as关键字

因为int是值类型,不能直接用as转换,需要用可空int(int?):

int? num = board[0, 0] as int?;
bool isInt = num.HasValue;
Debug.Log(isInt);
if (isInt)
{
    Debug.Log($"值为{num.Value}");
}

为什么int.TryParse不行?

int.TryParse的作用是把字符串转换成int类型,而你的数组元素要么是装箱的int对象,要么是Piece对象,根本不是字符串,所以这个方法完全不适用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 01:57:04