Unity: проблема с индексом вышла за пределы массива - PullRequest
0 голосов
/ 16 января 2019

Я рисую, используя LineRenderer, но я включаю и отключаю игровой объект, где скрипт находится в разное время.

При первом включении он отлично работает, после отключения и включения я получаю эту ошибку

IndexOutOfRangeException: индекс находился за пределами массива.

ошибка показывает эту строку кода

Vector2 touchPos = Camera.main.ScreenToWorldPoint(Input.touches[0].position);

Вот и весь код

public GameObject linePrefab;
private Line activeLine;

private void Update()
{
    if (Input.touchCount > 0)
    {
        if (Input.GetTouch(0).phase == TouchPhase.Began)
        {
            GameObject lineGO = Instantiate(linePrefab);
            activeLine = lineGO.GetComponent<Line>();
        }

        if (Input.GetTouch(0).phase == TouchPhase.Ended)
        {
            activeLine = null;
        }
    }

    if (activeLine != null)
    {
        Vector2 touchPos = Camera.main.ScreenToWorldPoint(Input.touches[0].position);
        activeLine.UpdateLine(touchPos);
    }
}

1 Ответ

0 голосов
/ 16 января 2019

Вы предполагаете, что пользователь касается экрана в вашем коде.

Вам необходимо проверить, есть ли какие-либо активные касания, прежде чем обрабатывать позицию касания. В частности, вы можете добавить в свой if, если проверить, есть ли Input.touchCount> 0

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