2016-04-22 89 views
-1

我爲桌面和移動平臺創建了統一應用程序。屏幕左上角有一張地圖。我在這張地圖上畫出了每一幀的圓圈。隨時可以在運行時改變圓的位置。如何在屏幕上顯示2D圖像unity3d

爲了完成這個任務,我在紋理上繪製圓並繪製這個紋理。此代碼適用於模擬器,但不適用於android手機或平板電腦。我在地圖上看不到任何圈子。

我的代碼是在這裏:

TextAsset imageAsset; // .png changes to .png.bytes. And the file dragged to this variable on inspector. 

Start() { 
    texture.LoadImage(imageAsset.bytes); 
} 

void OnGUI() { 

    Circle(texture, x, y, Color.red); 

    if (Event.current.type.Equals(EventType.Repaint)) 
    { 
    Graphics.DrawTexture(new Rect(..), texture); 
    } 
} 

有人說棄用OnGUI。但是,如果我在OnGUI中創建了一個按鈕,它將在運行時顯示在android上。

我試過另一種解決方案。我在場景中創建一個3d平面對象,並將.png文件拖放爲紋理。但是我不會使用Texture2D變量繪製圓圈來更改此紋理。

+1

爲什麼不使用'sprites'? –

+0

if(Event.current.type.Equals(EventType.Repaint))'只返回OnGUI函數,而不是更新,在您的Rect – LumbusterTick

回答

0

您應該使用精靈,爲什麼使用OnGui函數而不是更新?

也許得到的資產商店一看:2DToolkit

+0

中將屏幕寬度和高度除以x和y的位置。我會嘗試使用精靈。 – zumma

0

什麼是你的設備和您的圖像的分辨率是多少?

我問這是因爲你應該考慮在你的計算機的屏幕和你的設備之間的分辨率的變化。

正如你可以看到here你的矩形值必須以像素爲單位。

我建議您使用raw image加載您的紋理,Canvas用於處理圖形,RectTransform用於控制您的圓形位置。

這些組件具有很多功能來處理可能發生的這些分辨率問題。