C# PoseProvider.cs和Tango:MonoDevelopment错误

C# PoseProvider.cs和Tango:MonoDevelopment错误,c#,unity3d,mono,google-project-tango,C#,Unity3d,Mono,Google Project Tango,在中,有两个变量在按“单一开发”时出现问题:调整的时间戳2和目标设备。 MonoDevelop抱怨“使用未分配的局部变量”,可能是因为它只检查该变量的第一部分 我将第104行和第105行替换为: if (!GetFrameToDeviceTransformation(framePair.baseFrame,timeStamp, out adjustedTimeStamp1, out baseToDevice) || !GetFrameToDeviceTransformation(framePai

在中,有两个变量在按“单一开发”时出现问题:调整的时间戳2和目标设备。 MonoDevelop抱怨“使用未分配的局部变量”,可能是因为它只检查该变量的第一部分

我将第104行和第105行替换为:

if (!GetFrameToDeviceTransformation(framePair.baseFrame,timeStamp, out adjustedTimeStamp1, out baseToDevice)
|| !GetFrameToDeviceTransformation(framePair.targetFrame, timeStamp, out adjustedTimeStamp2, out targetToDevice))
使用等效代码:

        bool a = !GetFrameToDeviceTransformation(framePair.baseFrame, timeStamp, out adjustedTimeStamp1, out baseToDevice);
        bool b = !GetFrameToDeviceTransformation(framePair.targetFrame, timeStamp, out adjustedTimeStamp2, out targetToDevice);
        if (a||b)
        {
            pairIsValid = false;
        }
现在monodevelop不再抱怨了


我想知道是不是只有我一个人,还是我应该在编辑器上激活一些东西让它理解。

有趣的是,你提到这个问题时,我注意到了与
|
相关的语句完全相同的问题在Unity版本的Mono/c#中

实际上,我倾向于在这个问题上说,这只是一个已知的统一问题

作为一个习惯,你可以尝试插入更多或更少的空格/换行符,比如

if (
 ! GetFrameToDeviceTransformation(...)
 ||
 ! GetFrameToDeviceTransformation(...)
 )
你也可以试试这个,比如说

if (
 ( ! GetFrameToDeviceTransformation(...) )
 ||
 ( ! GetFrameToDeviceTransformation(...) )
 )
顺便说一句,我相信您已经意识到了这一点:您的替换代码在行为上略有不同。您的代码将运行这两个调用。如果第一个调用为false,则原始代码将不会运行第二个调用。。犯错误真的(你明白我的意思!)

那么,说实话,那

bool finalCondition = false;
bool a = !GetFrameToDeviceTransformation(...);
if (a == true)
 {
 finalCondition = true;
 }
else
 {
 bool b = !GetFrameToDeviceTransformation(...);
 if (b == true)
  {
  finalCondition = true;
  }
 }
if (finalCondition)
 {
 pair whatever...
 }
最后请注意


我不知道
GetFrameToDeviceTransformation
做了什么,但完全有可能存在某种复杂的硬件赛道状况。因此,可能是在谷歌的办公室,示例代码工作得很好,但工程师们失败了,事实上,由于硬件设置的原因,它只是随机工作;你会发现它不起作用。(如果是这样的话,我在第一句话中说的话就无关紧要了。)

谢谢你的指点,工程师说。是的,我指的是PoseProvider,它看起来可能是一个IDE问题(我从未使用过C#,但在Java中类似的东西也可以工作),但由于Google上没有关于它的任何东西,而且我从一个干净的安装开始,这很奇怪,我很快就会尝试使用空格技巧,但正如你所说,我的代码和原始代码确实不同,因为我肯定会调用这两个函数来防止变量被取消分配。奇怪的是,如果最初的代码有unity独立的问题,那么Tango应用程序会有上千次的下载。谢谢,对不起,我没有更多的具体信息!关于1000次下载。99%的unity用户是新爱好者,没有线索:-)