2016-04-22 70 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用于控制您的圆形位置。

这些组件具有很多功能来处理可能发生的这些分辨率问题。