2016-11-11 70 views
3

我想用Linerenderer在兩個UI GameObjects之間劃一條線。在場景模式下一切正常,但在遊戲模式下線是不可見的。我試圖改變物體的Z位置,但線條仍然不可見。誰能幫我?在此先感謝Unity3d Linerenderer不可見

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

愚蠢的問題,但你的背景是什麼顏色?我曾經做過一個顏色相同的線條,我認爲它也是無形的。 – code11

+0

我的背景是綠色的東西,線條是白色的 –

回答

0

除非我忽略了您發佈的代碼中的一些邏輯錯誤,我認爲問題可能與材料有關。線路

通用調試渲染器的幫助:

嘗試將行渲染器的顏色/材質:

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

如果不工作,也許你需要指定的數頂點手動?

mineLaser.SetVertexCount (2); 

最後,如果這兩者都不起作用,它可能只是一個邏輯錯誤;嘗試將lineRenderer的位置變換設置爲某個預定義的值,並查看它是否顯示。

對於這個特定的問題:

啊,所以其在畫布上。假設你的意思是UI畫布,我認爲linerenderer是在這種情況下使用的錯誤工具。檢查出this question

答案之一有建議到:

只是用充滿任何你想要的顏色,並使用高度和寬度的面板設置長度和您的線路

+0

我嘗試過,但不幸的是,線條仍然沒有在遊戲模式中顯示。可能是因爲我想在畫布上劃線? –

+0

@AlexRED帆布確實可能是問題所在。更新了答案。 – code11

0

這的寬度在「Screen Space - Overlay」畫布模式下是不可能的。在這種模式下,UI疊加層繪製了場景中的所有內容(包括LineRenderer,實際上非UI元素)。

嘗試爲您的畫布使用「屏幕空間 - 相機」選項,併爲您的線渲染器使用「使用世界空間」選項。