2016-07-03 19 views
2

TangoSDK/Core/Scripts/TangoWrappers/PoseProvider.cs中,有兩個變量在Unity中按下MonoDevelop上的Play時出現問題:adjustedTimeStamp2和targetToDevice。 MonoDevelop抱怨「使用未分配的局部變量」,可能是因爲它只檢查該部分的第一部分。PoseProvider.cs和Tango: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已經不抱怨。

我想知道它是否只有我,或者是否有一些事情我應該在編輯器上激活以讓它理解它。

+0

感謝指針,工程師說。是的,我的意思是PoseProvider,看起來它可能是一個IDE問題(我從來沒有用過C#,但在Java中類似的東西會起作用),但是因爲Google上沒有任何關於它的東西,我從一切乾淨安裝開始很奇怪 – lolollo

回答

2

你提到這個問題很有趣,我注意到在Unity的Mono/c#版本中涉及||!的語句完全一樣。

我實際上傾向於說這個問題,這只是Unity的一個已知問題。

作爲cusiotisy你可以嘗試將更多或更少的空間/換行,說

if (
! GetFrameToDeviceTransformation(...) 
|| 
! GetFrameToDeviceTransformation(...) 
) 

您也可以嘗試這個,說...

if (
(! GetFrameToDeviceTransformation(...)) 
|| 
(! GetFrameToDeviceTransformation(...)) 
) 

BTW我敢肯定你」重新意識到這一點:你的替換代碼在行爲上是非常不同的。您的代碼運行這兩個調用。如果第一個是假的.. ERR ..真正的原始代碼將不會運行第二個電話(你明白我的意思!)

所以,爲了肛門,怎麼樣...

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,但它完全有可能存在某種複雜的硬件條件賽道回事。所以,可能在Google的辦公室裏,示例代碼工作正常,但工程師開始工作,事實上,由於硬件設置它只能隨機工作;你發現它不起作用。 (TBC如果是這樣的話,我在這裏說的第一句話是無關緊要的。)

+0

我很快就會嘗試使用空格技巧,但正如你所說我的代碼和原始代碼不同,因爲我一定會調用這兩個函數來防止變量被分配。奇怪的是,如果原始代碼具有統一無關的問題,則從Tango應用程序下載一千次。 謝謝 – lolollo

+0

對不起,我沒有更具體的信息!關於1000次下載。 99%的統一用戶是新興業餘愛好者,沒有線索:-) – Fattie