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”是失败之一:


因此,我得到了我的问题的答案。
要在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)
}
完成!
| 归档时间: |
|
| 查看次数: |
9936 次 |
| 最近记录: |