[英]Create Rect at global coordinate
我的場景是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);
}
我不知道我完全理解了我提出的兩個問題,但是我確實發現,無論分辨率不是使用全局坐標,而是使用相機的坐標,獲取矩形坐標以匹配屏幕的方法都是如此,並且將代碼放置在Update()
,以便更新rect的坐標:
timeBarRect.x = cam.pixelWidth / timerWidth;
timeBarRect.y = cam.pixelHeight / timerHeight;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.