我的场景是2048 x 1152,相机从不移动。当我使用以下内容创建一个矩形时:
timeBarRect = new Rect(220, 185, Screen.width / 3, Screen.height / 50);
它的位置根据游戏的分辨率而变化,所以我无法弄清楚如何让它始终落在我想要的屏幕上。为了澄清,如果我将分辨率设置为16:9并更改预览窗口的大小,游戏将以16:9的比例调整大小,但是条形图将从它应该的位置移出。
我有两个相关的问题:
更新
我现在意识到我不清楚实际上是什么形象。这是信息:一旦创建了Rect,我创建一个纹理,在Update()中更新该纹理的大小,并将其绘制到OnGui()中的Rect:
timeTexture = new Texture2D (1, 1);
timeTexture.SetPixel(0,0, Color.green);
timeTexture.Apply();
纹理大小发生了变化:
void Update ()
{
if (time < timerMax) {
playerCanAttack = false;
time = time + (10 * Time.deltaTime);
} else {
time = timerMax;
playerCanAttack = true;
}
Rect的实际可视化,根据屏幕大小在不同的位置绘制:
void OnGUI(){
float ratio = time / 500;
float rectWidth = ratio * Screen.width / 1.6f;
timeBarRect.width = rectWidth;
GUI.DrawTexture (timeBarRect, timeTexture);
}
答案 0 :(得分:0)
我不知道我完全理解我提出的两个问题中的任何一个,但我确实发现无论什么分辨率没有使用全局坐标,使用相机的方法来获得矩形坐标以匹配屏幕的方式坐标,并将代码放在Update()
中,以便更新rect的坐标:
timeBarRect.x = cam.pixelWidth / timerWidth;
timeBarRect.y = cam.pixelHeight / timerHeight;