2016-11-11 61 views
3

Linerendererで2つのUI GameObjectの間に線を描こうとしています。シーンモードではすべて正常に動作しますが、ゲームモードではラインは見えません。オブジェクトの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

ダム質問ですが、あなたの背景はどのような色ですか?私はかつてlineRendererを同じ色にしましたが、私はそれも見えませんでした。 – 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

この「スクリーンスペース - オーバーレイ」キャンバスモードでは不可能です。このモードでは、UIオーバーレイがSceneのすべての要素(UI要素ではないLineRendererを含む)の上に描画されます。

キャンバスに「スクリーンスペース - カメラ」オプションを使用し、ラインレンダラーに「ワールドスペースを使用」オプションを使用するようにしてください。

関連する問題