2016-11-11 1 views
3

Я пытаюсь провести линию между двумя UI GameObjects с Linerenderer. В режиме сцены все работает нормально, но в игровом режиме линия невидима. Я попытался изменить позицию Z объектов, но линии по-прежнему невидимы. Может кто-нибудь мне помочь? Заранее спасибоUnity3d Linerenderer not visible

private LineRenderer lineRenderer; 
private float counter; 
private float dist; 
private Vector3 aPos; 
private Vector3 bPos; 
public Transform origin; 
public Transform destination; 
public float lineDrawSpeed = 6f; 

// Use this for initialization 
void Start() 
{ 
    lineRenderer = GetComponent<LineRenderer>(); 
    aPos = new Vector3(origin.position.x, origin.position.y, origin.position.z); // Using these to move the lines back 
    bPos = new Vector3(destination.position.x, destination.position.y, destination.position.z); 

    lineRenderer.SetPosition(0, aPos); 
    lineRenderer.SetWidth(3f, 3f); 

    dist = Vector3.Distance(origin.position, destination.position); 
} 

// Update is called once per frame 
void Update() 
{ 

    if (counter < dist) 
    { 
     counter += .1f/lineDrawSpeed; 

     float x = Mathf.Lerp(0, dist, counter); 

     Vector3 pointA = aPos; 
     Vector3 pointB = bPos; 

     Vector3 pointAloneLine = x * Vector3.Normalize(pointB - pointA) + pointA; 

     lineRenderer.SetPosition(1, pointAloneLine); 
    } 

} 
+0

немой вопрос, но какой цвет ваш фон? Я однажды сделал lineRenderer тем же цветом, и я подумал, что это тоже невидимо. – code11

+0

Мой фон - это что-то вроде зеленого, а линии белые –

ответ

0

Если я не уверен, с видом на некоторую логическую ошибку в коде, вы в курсе, я думаю, что проблема может быть с материалом.

Generic отладки помощь для линии рендеры:

Попробуйте установить цвет/материал линии визуализатора:

lineRenderer.sortingOrder = 1; 
lineRenderer.material = new Material (Shader.Find ("Sprites/Default")); 
lineRenderer.material.color = Color.red; 

Если это не работает, возможно, вам нужно указать количество вершины вручную?

mineLaser.SetVertexCount (2); 

И, наконец, если они оба не работают, это может быть просто логическая ошибка; попробуйте установить трансформации для позиции lineRenderer, чтобы быть определенным предопределенным значением и посмотреть, появляется ли она.

Для этого конкретного вопроса:

Ах, так его на холсте. Предполагая, что вы имеете в виду холст пользовательского интерфейса, я считаю, что linerenderer - неправильный инструмент для использования в этой ситуации. Выезд this question.

Один из ответов есть предлагает:

просто использовать панель, заполненную любым цветом вы хотите и используйте высоту и ширину, чтобы установить длину и ширину вашей линии

+0

Я пробовал это, но, к сожалению, линии все еще не показывались в игровом режиме. Может быть, потому, что я пытаюсь нарисовать линию на холсте? –

+0

@ AlexRED canvas действительно может быть проблемой. Обновленный ответ. – code11

0

Этот невозможно в режиме «Экранное пространство - наложение». В этом режиме наложение пользовательского интерфейса нарисовано поверх всего в Сцене (включая LineRenderer, что фактически не является элементом UI).

Попробуйте использовать опцию «Screen Space - Camera» для вашего Canvas и «Use World Space» для вас Line Renderer.

 Смежные вопросы

  • Нет связанных вопросов^_^