Android 如何在屏幕上显示二维图像unity3d

Android 如何在屏幕上显示二维图像unity3d,android,unity3d,graphics,texture2d,Android,Unity3d,Graphics,Texture2d,我为桌面和移动平台创建了一个unity应用程序。屏幕左上角有一张地图。我在这张地图上每帧画一个圈。圆的位置在运行时随时更改 为了完成这个任务,我在纹理上画了一个圆圈,然后画了这个纹理。此代码适用于emulator,但不适用于android手机或平板电脑。我在地图上没有看到任何圆圈 我的代码在这里: TextAsset imageAsset; // .png changes to .png.bytes. And the file dragged to this variable on inspec

我为桌面和移动平台创建了一个unity应用程序。屏幕左上角有一张地图。我在这张地图上每帧画一个圈。圆的位置在运行时随时更改

为了完成这个任务,我在纹理上画了一个圆圈,然后画了这个纹理。此代码适用于emulator,但不适用于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
。但是,如果我在OnGUI中创建一个按钮,它将在运行时显示在android上


我尝试了另一种解决办法。我在场景中创建了一个3d平面对象,并将.png文件作为纹理拖动。但我不会使用绘制圆的
Texture2D
变量来更改此纹理。

您应该使用精灵,为什么要使用OnGui函数而不是更新


也许可以查看资产存储:2DToolkit

您的设备和图像的分辨率是多少

我问这个是因为你应该考虑改变你的电脑屏幕和你的设备之间的分辨率。

正如您所看到的,rect值必须以像素为单位

我建议您使用加载纹理、处理图形和控制圆位置


这些组件具有许多功能来解决可能出现的问题。

为什么不使用
精灵
?如果(Event.current.type.Equals(EventType.Repaint)),则将矩形中的x和y位置除以屏幕宽度和高度
if(Event.current.type.Equals(EventType.Repaint))
仅返回OnGUI函数,而不返回更新。我会试着用雪碧。