簡體   English   中英

在全局坐標處創建Rect

[英]Create Rect at global coordinate

我的場景是2048 x 1152,並且相機永不動。 當我創建具有以下內容的矩形時:

timeBarRect = new Rect(220, 185, Screen.width / 3, Screen.height / 50);

它的位置根據我的游戲的分辨率而變化,所以我不知道如何使它始終放置在屏幕上想要的位置。 要澄清的是,如果我將分辨率設置為16:9,並更改預覽窗口的大小,則游戲將以16:9的比例調整大小,但該條會從應有的位置移出。

我有兩個相關的問題:

  1. 是否可以將Rect放置在全局坐標上? 由於屏幕始終為2048 x 1152,如果我可以將其放置在某個坐標上,那將是完美的。
  2. Rect是UI元素嗎? 創建它時,我無法在層次結構中找到它。 如果它是一個UI元素,我覺得應該相對於畫布/相機創建它,但是我也找不到解決方法。

更新:

我現在意識到我不清楚實際顯示的內容。 這些信息是:創建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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM