Как автоматически масштабировать объекты Unity в соответствии с заданными значениями.? - PullRequest
0 голосов
/ 30 октября 2018

У меня есть линейный график в моей игре Unity. График рисует в соответствии со значениями, приведенными в списке. Но когда значение становится высоким, координата исчезает с экрана. Как я могу уменьшить мой график, когда приходит большое значение?

This is how graph looks like with a large value.

Я использовал этот код для уменьшения графика, но он уменьшает только тогда, когда последнее значение в списке велико.

public void ChangeScale(){
    Debug.Log (valueList [valueList.Count-1]);
    temp = graphContainer.localScale;
    if (valueList [valueList.Count - 1]>600) {

        temp.x -= 1f;
        temp.y -= 1f;
        graphContainer.localScale = new Vector2 (temp.x, temp.y);
        //temp.Set(temp.x+0.05f,temp.y+0.05f,0);
        Debug.Log (temp.x);
        Debug.Log (temp.y);
    }

    if (valueList [valueList.Count - 1]>1000) {

        temp.x -= 0.6f;
        temp.y -= 0.6f;
        graphContainer.localScale = new Vector2 (temp.x, temp.y);
        //temp.Set(temp.x+0.05f,temp.y+0.05f,0);
        Debug.Log (temp.x);
        Debug.Log (temp.y);
    }
    if (valueList [valueList.Count - 1]>1600) {

        temp.x -= 0.3f;
        temp.y -= 0.3f;
        graphContainer.localScale = new Vector2 (temp.x, temp.y);
        //temp.Set(temp.x+0.05f,temp.y+0.05f,0);
        Debug.Log (temp.x);
        Debug.Log (temp.y);
    }
    Debug.Log (temp.x);
    Debug.Log (temp.y);
}

1 Ответ

0 голосов
/ 30 октября 2018

Вы можете использовать Linq

using System.Linq;

//....

if(valueList.Exists(i => i > 600))
{
    //...
}

Становится истинным, если какой-либо из элементов в valueList соответствует заданному условию, в данном случае >600.


В качестве альтернативы вы также можете получить самый большой из всех элементов:

var bigggestElement = valueList.OrderByDescending().First();

Или просто

var biggest = valueList.Max();

и отметьте только это

if(biggest > 600)
{
    //...
}

И теперь вы действительно можете / должны каким-то образом нормализовать график в зависимости от значения biggest вместо поиска через определенные интервалы (600, 1000, ...).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...