2013-03-09 75 views
1

我正在使用UIToolkit爲Unity上的android遊戲項目製作GUI。 示例場景(例如Kitchen Sink)在Unity編輯器上工作正常。 但是當我在android設備上運行完全相同的示例場景時,它不起作用。 按鈕紋理與實際的觸摸區域略有偏移。 我試過不同的Android設備,但結果是一樣的。適用於Android和Unity的UIToolkit

我試圖訪問使用功能雪碧位置,例如

public float getYpos(this IPositionable sprite) 
{ 
    if(sprite == null) 
     return ; 
    float toRet = sprite.position.y; 
    return toRet; 
} 

但它的代碼返回一個沒有價值!

我甚至用「IPositionablePositioningExtensions」並返回雪碧位置嘗試。但沒有成功。雖然我不確定如何使用'IPositionablePositioningExtensions',但我剛剛開始在這個領域的初學者。

我的按鈕創建看起來是這樣的:

playButton = UIButton.create("playUp.png", "playDown.png",0,0); 
    playButton.positionCenter(); 
    playButton.scale = new Vector3(0.4f,0.4f,0); 

這裏的樣本場景看起來如何在Android設備上的屏幕截圖。 「邊界」框是觸摸工作的區域,而Button紋理正在其他位置呈現。

enter image description here

該按鈕的質感應該是在中鋒位置上,雖然它移動到其他位置,而觸摸區域保持它應有的水平。

回答

1

找到解決方案。 onAwake方法返回與實際屏幕大小不同的屏幕大小。

所以下面的代碼添加到uiCamera在ui.cs文件

public static void setSize() 
    { 
     _uiCamera.orthographicSize = Screen.height/2; 
     // Set the camera position based on the screenResolution/orientation 
     _uiCamera.transform.position = new Vector3(Screen.width/2, -Screen.height/2, -10.0f); 
    } 

這一次屏幕已成立之稱。

0

從在毛髮工具的網站上的指南: (...) 不要嘗試在喚醒中創建您的用戶界面,因爲UI腳本可能尚未完成初始化。改爲使用開始。

編輯:我還以爲你在清醒法創建UI,但我想我和我有你同樣的問題,即使我在start方法創建的指南建議。現在我將測試你的解決方案。事實上,如果我改變場景並重新加載UI場景而不重新啓動應用程序,那麼一切正常。

+0

只需添加上述代碼中UI.cs,然後從UI.CS()的更新調用它一次,或者在每次創建畫面/場景時調用它。 – Kyuubi 2013-03-13 15:57:46

+0

無論如何,我想通了,但非常感謝答案kyuubi! – membersheep 2013-04-22 14:55:47