0

我正在制作一个游戏,玩家将解决一个短语,就像命运之轮减去轮子一样,但问题是当单词超过 15 列时,一些单词会被删除。有什么办法让这个词充满到下一行?

我只用我知道的为每个字母制作瓷砖来尝试它

我似乎无法在网上找到任何解决方案,我才开始学习团结

private const int Columns = 15;
private const float Space = 35.0f;
public void LettertoBox()
{

    for (int i = 0; i < currentWord.Length; i++)
    {
        int row = i / Columns;
        int column = i % Columns;


        Vector3 newPosition3;
        newPosition3 = new Vector3((cen.transform.position.x + column * Space), (((cen.transform.position.y )) - row * Space), cen2.transform.position.z);

        if (currentWord[i].ToString() != " ")
        {
            GameObject k = (GameObject)Instantiate(letterimage, newPosition3, Quaternion.identity);
            k.name = "letterimage" + (i + 1);
            k.transform.SetParent(GameObject.Find("Canvas").transform);
        }
        else
        {
            GameObject k = (GameObject)Instantiate(noletterimage, newPosition3, Quaternion.identity);
            k.name = "letterimage" + (i + 1);
            k.transform.SetParent(GameObject.Find("Canvas").transform);
        }

        GameObject l = (GameObject)Instantiate(letter, newPosition3, Quaternion.identity);
        l.name = "letter" + (i + 1);
        l.transform.SetParent(GameObject.Find("Canvas").transform);   
    }
}

实际结果

预期结果

4

1 回答 1

0

只要短语中没有单词对于该行来说太大,这应该对您有用(在这种情况下,您只需要识别它并用'-'分隔它)

public void LetterToBox() {
    int rowCount = 0;
    int position = 0;
    foreach (string word in phraseToSplitToWords.Split(" ")) {
        if (CannotFitWordWithoutCuttingPastTheLimit(position,word, whateverIsTheNumberOfLettersPerLineYouWant)) {
            rowCont++;
            position= 0;
        }
        PlaceTheWordLetterByLetterInThisPosition(position,row,word);
        position = position + word.Length +1; //+1 for the space between words
    }
}

public void PlaceTheWordLetterByLetterInThisPosition(int positionInLine, int row, string word) {
    foreach (char letter in word) {
        var x = positionInLine* LETTER_WIDTH;
        var y = row* LETTER_HEIGHT;
        InstantiateLetter(x, y, letter); //basically the same way you did

    }
}


public bool CannotFitWordWithoutCuttingPastTheLimit(int position, string word, int limit) {
    return (position + word.Length > limit);
}
于 2019-04-01T13:56:05.767 回答