Нарисуйте линию на холсте с помощью мышки в Unity 3D - PullRequest
0 голосов
/ 29 февраля 2020

Я следовал руководству, чтобы нарисовать линию, используя положение мыши, линия будет нарисована внутри холста. Но когда он запускался, линия не проходила! и это дает мне эту ошибку:

NullReferenceException: ссылка на объект не установлена ​​для экземпляра объекта

Что не так в моем коде?

Вот скрипт:

public GameObject Line;
GameObject CurrentLine;
LineRenderer linerenderer;
private List<Vector2> FingerPositions;
public Canvas Can;

void Update()
{
    if (Input.GetMouseButtonDown(0))
    {
        CreateLine();
    }

    if (Input.GetMouseButton(0))
    {
        Vector2 tempfingerpos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
        if (Vector2.Distance(tempfingerpos, FingerPositions[FingerPositions.Count - 1]) > 0.1f)
        {
            UpdateLine(tempfingerpos);
        }
    }
}

void CreateLine()
{
    CurrentLine = Instantiate(Line, Vector3.zero, Quaternion.identity);
    linerenderer = CurrentLine.GetComponent<LineRenderer>();
    FingerPositions.Clear();
    FingerPositions.Add(Camera.main.ScreenToWorldPoint(Input.mousePosition));
    FingerPositions.Add(Camera.main.ScreenToWorldPoint(Input.mousePosition));
    linerenderer.SetPosition(0, FingerPositions[0]);
    linerenderer.SetPosition(0, FingerPositions[1]);
    CurrentLine.transform.SetParent(Can.transform, false);
}

void UpdateLine(Vector2 NewFingerPos)
{
    FingerPositions.Add(NewFingerPos);
    linerenderer.positionCount ++;
    linerenderer.SetPosition(linerenderer.positionCount - 1, NewFingerPos);
}

1 Ответ

0 голосов
/ 04 марта 2020

Мое предложение состоит в том, чтобы сначала попытаться нарисовать средство визуализации линий с фиксированными позициями (Вы можете добавить два пустых объекта, а затем нарисовать средство визуализации линий между этими объектами). И если это сработает, то перейдите к логи c пальцами. Помните, что вы не можете видеть средство рендеринга строк, если используете наложение пространства экрана, поэтому вы должны использовать Canvas - World Space, чтобы увидеть его поверх холста.

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