gpt4 book ai didi

c# - 在 Switch 语句中使用字符串

转载 作者:行者123 更新时间:2023-11-30 12:42:29 26 4
gpt4 key购买 nike

我正在尝试创建一个基于两个字符串的 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 piece 只会返回在 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|WkB|Wq,利用大小写灵敏度。

关于c# - 在 Switch 语句中使用字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33680945/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com