如何统一绘制多行程线

Sch*_*hro 3 c# unity-game-engine

在我的统一2D项目中,我希望能够绘制多
笔画线。正如我现在所尝试的,我可以使用LineRenderer组件绘制单笔画线,例如绘制“ C”或“ S”字母。但是例如“ A”或“ X”字母需要超过1个笔画(多笔画),而我无法使用LineRenderer绘制它。由于LineRenderer会存储点并将其与直线连接,因此我们不能在出线中断开零件的连接。
你们有什么想法吗?
作为附加信息,我正在使用C#语言和Unity 4.5 Free。谢谢

这是我的Line Renderer配置:
行渲染器配置

这是我的“ C”和“ A”字母的结果示例,“ A”是失败之一:
一种C

Sch*_*hro 5

因此,我得到了我的问题的答案。
要在Unity中绘制多笔画线,我需要将每个笔画(每条连续线)作为一个线渲染器。这是用2笔画制作“ A”的插图:
插图

要统一执行此操作:
第一步,为每个LineRenderer制作一个预制件,并为其分配一个唯一的标签。不需要此标签时,将其删除。在此示例中,我为预制件提供了“ LineDraw”标签。
预制件

第二步,创建一个空的gameObject并附加脚本以检测Mouse Down事件。在此示例中,我使用鼠标左键单击以创建描边线,并使用鼠标右键单击以清除所有线。

public class TestLineRenderer : MonoBehaviour {
public GameObject lineDrawPrefabs; // this is where we put the prefabs object

private bool isMousePressed;
private GameObject lineDrawPrefab;
private LineRenderer lineRenderer;
private List<Vector3> drawPoints = new List<Vector3>();

// Use this for initialization
void Start () {
    isMousePressed = false;
}

// Update is called once per frame
void Update () {
    if(Input.GetMouseButtonDown(1))
    {
        // delete the LineRenderers when right mouse down
        GameObject [] delete = GameObject.FindGameObjectsWithTag("LineDraw");
        int deleteCount = delete.Length;
        for(int i = deleteCount - 1; i >= 0; i--)
            Destroy(delete[i]);
    }

    if(Input.GetMouseButtonDown(0))
    {
        // left mouse down, make a new line renderer
        isMousePressed = true;
        lineDrawPrefab = GameObject.Instantiate(lineDrawPrefabs) as GameObject;
        lineRenderer = lineDrawPrefab.GetComponent<LineRenderer>();
        lineRenderer.SetVertexCount(0);
    }
    else if(Input.GetMouseButtonUp(0))
    {
        // left mouse up, stop drawing
        isMousePressed = false;
        drawPoints.Clear ();
    }

    if(isMousePressed)
    {
        // when the left mouse button pressed
        // continue to add vertex to line renderer
        Vector3 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
        if (!drawPoints.Contains (mousePos)) 
        {
            drawPoints.Add (mousePos);
            lineRenderer.SetVertexCount (drawPoints.Count);
            lineRenderer.SetPosition(drawPoints.Count - 1, mousePos);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

}

完成!