C# 如何统一绘制多笔画线

C# 如何统一绘制多笔画线,c#,unity3d,C#,Unity3d,在unity 2D项目中,我希望能够绘制多行程线。 正如我现在尝试的,我可以使用LineRenderer组件绘制单程线,如绘制“C”或“S”字母表。但例如“A”或“X”字母表需要超过1个笔划(多笔划),我无法使用线条渲染器绘制。因为LineRenderer存储点并用一条线连接该点,所以我们不能将断开连接的零件放入输出线。 你们知道怎么做吗? 作为补充信息,我正在免费使用C#语言和Unity 4.5。多谢各位 这是我的行渲染器配置: 这是我对“C”和“A”字母表的结果示例,“A”是失败的: 所以

在unity 2D项目中,我希望能够绘制多行程线。
正如我现在尝试的,我可以使用LineRenderer组件绘制单程线,如绘制“C”或“S”字母表。但例如“A”或“X”字母表需要超过1个笔划(多笔划),我无法使用线条渲染器绘制。因为LineRenderer存储点并用一条线连接该点,所以我们不能将断开连接的零件放入输出线。
你们知道怎么做吗?
作为补充信息,我正在免费使用C#语言和Unity 4.5。多谢各位

这是我的行渲染器配置:

这是我对“C”和“A”字母表的结果示例,“A”是失败的:

所以,我的问题得到了答案。
要统一绘制多笔划线,我需要将每个笔划(每个连续线)作为一个线渲染器。这是用两个笔划制作“A”的图示:


要统一执行此操作:
第一步,为每个LineRenderer制作一个预置,并为其指定一个唯一的标记。当不需要时,需要此标记来删除预制件。在本例中,我为预制件提供了“LineDraw”标记。


第二步,创建一个空的游戏对象并附加脚本以检测鼠标按下事件。在本例中,我使用鼠标左键单击创建笔划线,并使用鼠标右键单击清除所有线

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);
        }
    }
}
公共类TestLineRenderer:MonoBehavior{
public GameObject linedrawprefables;//这是我们放置prefables对象的地方
私人住宅;
私有游戏对象线绘制预制;
专用线条渲染器线条渲染器;
私有列表支点=新列表();
//用于初始化
无效开始(){
isMousePressed=false;
}
//每帧调用一次更新
无效更新(){
if(Input.GetMouseButtonDown(1))
{
//鼠标右键按下时删除线条渲染器
GameObject[]delete=GameObject.FindGameObjectsSwithTag(“LineDraw”);
int deleteCount=delete.Length;
对于(int i=deleteCount-1;i>=0;i--)
销毁(删除[i]);
}
if(Input.GetMouseButtonDown(0))
{
//按住鼠标左键,创建新行渲染器
isMousePressed=true;
lineDrawPrefable=GameObject。实例化(lineDrawPrefables)为GameObject;
lineRenderer=lineDrawPrefable.GetComponent();
lineRenderer.SetVertexCount(0);
}
else if(Input.GetMouseButtonUp(0))
{
//鼠标左键向上,停止绘图
isMousePressed=false;
支点。清除();
}
如果(按下按钮)
{
//当按下鼠标左键时
//继续将顶点添加到线渲染器
Vector3 mousePos=Camera.main.ScreenToWorldPoint(Input.mousePosition);
如果(!drawPoints.Contains(鼠标点))
{
支点。添加(鼠标点);
lineRenderer.SetVertexCount(drawPoints.Count);
lineRenderer.SetPosition(drawPoints.Count-1,鼠标点);
}
}
}
}


完成了

您应该将自己的答案标记为已接受,这样问题就不会留在未回答部分