我为桌面和移动平台创建了一个 Unity 应用程序。屏幕左上角有一张地图。我每帧都在这个地图上画圆圈。圆圈的位置在运行时随时更改。
为了完成这项任务,我在纹理上画圆并绘制这个纹理。此代码适用于模拟器,但不适用于安卓手机或平板电脑。我在地图上看不到任何圆圈。
我的代码在这里:
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
变量来更改这种纹理。
使用精灵,为什么你使用OnGui函数而不是更新?
也许看看资源商店:2DToolkit
您的设备和图像的分辨率是多少?
我问这个是因为您应该考虑更改计算机屏幕和设备之间的分辨率。
正如您在此处看到的,矩形值必须以像素为单位。
我建议您使用原始图像来加载纹理,使用画布来处理绘图,并使用 RectTransform 来控制圆形位置。
这些组件具有许多功能来处理可能发生的此解决方案问题。