how to make a dotted line renderer ?

i dont have any idea on this. can someone please enlighten me ? any help is appreciated. thanks!

@romelleayala You could just set the material of a line renderer to a texture of a dotted line and then have the material repeat. Hope this helps!

Had to do the same thing in Unity 2019.3. Even though the TextureMode field exists on the LineRenderer, I was not able to figure out the correct math for not distorting the dots. So, I went with TextureMode set to Stretch. On the texture that I used as the dot on the line, I set WrapMode to Repeat. Edited the texture in PS to add some padding to spread the dots apart from each other (Canvas Size in PS). Created a material with this texture. Used the shader Mobile/Particles/AlphaBlended.

Here’s a script that I used on my dotted line prefab (attached to the same object that has the LineRenderer component):

using UnityEngine;

public class DottedLineRenderer : MonoBehaviour
{
public bool scaleInUpdate = false;
private LineRenderer lR;
private Renderer rend;

 private void Start () 
 {
     ScaleMaterial();
     enabled = scaleInUpdate;
 }

 public void ScaleMaterial()
 {
     lR = GetComponent<LineRenderer>();
     rend = GetComponent<Renderer>();
     rend.material.mainTextureScale =
         new Vector2(Vector2.Distance(lR.GetPosition(0), lR.GetPosition(lR.positionCount - 1)) / lR.widthMultiplier,
             1);
 }

 private void Update ()
 {
     rend.material.mainTextureScale =
         new Vector2(Vector2.Distance(lR.GetPosition(0), lR.GetPosition(lR.positionCount - 1)) / lR.widthMultiplier,
             1);
 }

}
Another issue that I’ve encountered - I wanted to fade the start and end of the line into transparency by setting the color gradient on the line. For some reason this did not work for me if the line had only 2 points and both ends were transparent, but it did work when the line had more than 2 points. Here’s the code that I used to resolve this and add more points to the line:

// line renderer with 2 points only does not handle transparency properly:
lineRenderer.positionCount = linePointsCount; // I used linePointsCount = 10
for (var i = 0; i < linePointsCount; i++)
{
lineRenderer.SetPosition(i,
Vector3.Lerp(fromPoint, toPoint, (float) i / (linePointsCount - 1)));
}

     var dottedLine = lineObject.GetComponent<DottedLineRenderer>();
     if(dottedLine != null) dottedLine.ScaleMaterial();

I hope this helps someone.

Since it took way to long to fix this myself here is the complete solution:

https://www.reddit.com/r/Unity2D/comments/kt01nv/dotted_linerenderer_fixed/

Hope this helps!

173834-dottedparabel.png

For me it didn’t worked. The only solution I found is to create a script that creates a dotted line. I have also written a blog to share how I achieved this.

https://www.knowledgescoops.com/2019/07/creating-dotted-line-in-unity_29.html

Both LineRenderer and TrailRenderer have a property TextureMode. Set it to Tile or RepeatPerSegment to achieve a dotted or dashed line.

There is no need for creating a script, nor a very complicated setup…

Just set a material with a dotted line as it’s albedo (don’t forget to configure the transparency). If it doesn’t work and the texture shows only at the end/beginning of the line then: select the picture that contains your dotted line and SET THE WRAP MODE TO REPEAT!!!

(this last part was what I was missing xD and now it works, even for a trail)