【发布时间】:2020-07-25 01:51:44
【问题描述】:
我正在使用 Unity(+Vuforia),我在尝试打印一些我想识别 vuMark 增强现实对象(这是 Vuforia 的东西)的变量时遇到了一些问题,但我似乎无法让它工作。
我的代码如下,我希望将 vuMarkID 与“表格”进行比较。然而,在 DebugLog 中,我的第二条语句 (Debug.Log("vuMarkCompareToTable...")) 返回 1。即使第一条语句 (Debug.Log("ID = {0}"...)) 返回“表”。我试过修剪 vuMarkID 字符串对象,也试过直接转换它,如下所示。
另一个奇怪的事情是,在调试日志中的“Table”之后,对于第一条语句,什么都不会打印。我尝试过使用vuMarkID+"END" 之类的东西进行连接,并且该语句只是在“表”处中断。我什至尝试过使用"ID = {0}{0}" 进行打印,但只打印了第一个“表格”。即使 vuMarkID 对象发生变化(例如,变为 Stool),它仍然不会在初始 vuMarkID 对象之后打印任何内容。
当参数(看似)相同时,如何让 Debug.Log 识别“表格”之后的文本并让 CompareTo 函数返回 0?
编辑:我也试过Debug.Log(string.Format("ID = " + vuMarkID + "DONE"));(我想看看文本后面是否有什么东西),但这也会在vuMarkID之后立即中断。我尝试替换换行符,以防万一它在那里,但它没有效果。
//Gets the id of a VuMark Object
string vuMarkID = GetVuMarkId(vuMarkObj).ToString();
if (vuMarkID.CompareTo("Table ") == 0)
{
Debug.Log("Table found from tracking!");
}
else
{
string logdebug = vuMarkID;
object[] args = new object[] { (vuMarkID), vuMarkID.CompareTo("Table") };
Debug.Log(string.Format("ID = {0}", logdebug));
Debug.Log("vuMarkCompareToTable = " + (vuMarkID.Trim().CompareTo("Table")));
}
【问题讨论】:
-
您不能像 Console.WriteLine 一样使用 Debug.Log,请将 (string.Format("ID = {0}", logdebug) 替换为 (string.Format("ID = {0} " +日志调试)。
-
出于某种原因,它不喜欢那样。我得到
Exception in callback: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.FormatException: Index (zero based) must be greater than or equal to zero and less than the size of the argument list. -
恭喜。您的“未显示整个文本”的问题已修复,现在您的 vuMarkID 似乎超出范围(小于 0),您必须修复它才能使用它的值。
-
@ArmanPapikyan 例外是因为你的建议。因为它是 String.Format() 的错误语法。
-
哦,那是 string.Format 的一个参数,好吧,我的错。我以为 oyu 将它作为 Debug.Log 的参数传递。