在我的团结2D项目中,我希望能够绘制多行程..
正如我现在尝试的那样,我可以使用LineRenderer组件绘制unistroke线,就像绘制“C”或“S”字母一样。但是例如“A”或“X”字母表需要超过1个笔画(多笔画)并且我无法使用LineRenderer绘制它。因为LineRenderer存储点并将这些点与一条线连接起来,所以我们不能在外线中有断开的部分
你们有任何想法怎么做吗?
作为附加信息,我使用的是C#语言和Unity 4.5 Free。谢谢
这是我的Line Renderer配置:
这是我的“C”和“A”字母的结果示例,“A”是失败的一个:
答案 0 :(得分:3)
所以,我得到了一个问题的答案
要在Unity中绘制多笔画线,我需要将每个笔画(每个连续线)作为一个线渲染器。这是制作" A" 2冲程:
要团结一致:
第一步,为每个LineRenderer制作一个预制件,并为其指定一个唯一的标签。需要此标签可在不需要时删除预制件。在这个例子中,我给出了#34; 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);
}
}
}
}
完成了!