c# – 在Switch语句中使用String
发布时间:2020-12-15 22:22:39 所属栏目:百科 来源:网络整理
导读:我试图基于两个字符串创建一个switch语句.但是,这似乎不起作用,并始终评估为默认值.那么,有人可以告诉我正确的方法吗? 这是我的(大概是不正确的)代码: string GetPieceCode(GameObject piece){ string pieceCode = ""; Debug.Log(piece.gameObject); piece
我试图基于两个字符串创建一个switch语句.但是,这似乎不起作用,并始终评估为默认值.那么,有人可以告诉我正确的方法吗?
这是我的(大概是不正确的)代码: string GetPieceCode(GameObject piece) { string pieceCode = ""; Debug.Log(piece.gameObject); pieceCode = piece.ToString().Remove(2,2); Debug.Log(pieceCode); return pieceCode; } Debug.Log(pieceType); switch (pieceType) { case "BP": Debug.Log("Black Pawn Selected"); break; case "WP": Debug.Log("White Pawn Selected"); break; case "WB": print("White Bishop Selected"); break; case "BB": print("Black Bishop Selected"); break; case "WK": print("White Knight Selected"); break; case "BK": print("Black Knight Selected"); break; case "WR": print("White Roook Selected"); break; case "BR": print("Black Rook Selected"); break; case "WKing": print("White King Selected"); break; case "WQueen": print("White Queen Selected"); break; case "BKing": print("Black King Selected"); break; case "BQueen": print("Black Queen Selected"); break; default; debug.log("Error"); break; } 初始Debug.Log(pieceType)打印出一个2字符的字符串代码,表明它与案例值匹配.所以我不知道出了什么问题. 此外,print()和Debug.Log()在此上下文中是相同的. 解决方法
问题在于我认为GameObject片段只返回Unity中分配给它的3个字符名称.因此,我假设要获得代码的前2个,我只需要删除第一个数字.
但是,我的所有调试尝试都受到以下事实的影响:我认为(错误地)BP(UnityEngine.GameObject)作为输出仅仅是BP作为带有一些添加的调试信息的字符串. 生成片段代码的正确方法是: string GetPieceCode(GameObject piece) { string pieceCode = ""; Debug.Log(piece.gameObject); pieceCode = piece.ToString().Substring(0,2); Debug.Log(pieceCode); return pieceCode; } 谢谢大家的帮助. 编辑:虽然不是原始问题的一部分,但我分别使用区分大小写将Kings和Queens的代码更改为B | Wk和B | Wq. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |