调整 UI 元素以适应分辨率屏幕

问题描述 投票:0回答:0

伙计们,我正在做猜字母游戏。 GameManager 从 JSON 中选择问题和答案,然后生成白色方块(代表答案中的一个字母)。答案有不同的字母计数,我想调整这个白色方块的比例和位置。我的分辨率只有 12 个白色方块适合屏幕,所以我想在答案有例如 2 个单词 = 15 个字母时做。一行中出现一个单词的白色方块,第二行出现第二个单词。

现在我的代码生成这样的白色方块: 你可以看到第二个单词被分成两行。

我想做这样的事情:(带有“V”的白色方块是答案方块/答案中的字母) 如果字数超过每行 12 个,那么一行中出现一个字,第二行中出现第二个字。

或者当答案很长时这样的东西: 答案太长,所以白色方块变小,每个单词分成三行。

我生成白色方块的代码:

 public void InstantiateSecretAnswerRPC()
{
    answer_value = replacedString;
    for (int i = 0; i < replacedString.Length;)
    {
        char currentChar = replacedString[i];
        if (currentChar.Equals(','))
        {
            Instantiate(secretaryCommaPrefab, secretaryParrent.transform);
            i++;
        }
        else
        {
            var parrent = i > 12 ? secretaryParrentSecond : secretaryParrent;
            var spawnedObj = Instantiate(secretaryPrefub, parrent.transform);
            TMP_Text spawnedObjText = spawnedObj.GetComponentInChildren<TMP_Text>();
            answerInstatiatedGameObjects.Add(spawnedObj);
            spawnedObjText.text = currentChar.ToString();
            spawnedObjText.enabled = false;
            i++;
        }
    }
}

replacedString 是来自 JSON 但没有空格的答案 (

replacedString = jsonAnswer.Replaced(" ", ",")
)

secretaryParrentsecretaryParrentSecond 是具有两条线的水平层组的游戏对象。

所以我想做的是: 不要将一个单词分成两行,当答案字母数太大时缩小白色方块,当两个单词适合一行时,然后将其生成一行。

我怎样才能做到我想要的?我可以只在我的代码中实现一些代码部分,还是我必须从这个函数中全部返工。我希望我解释得足够多了。

c# unity3d
© www.soinside.com 2019 - 2024. All rights reserved.