linerender的标记参考
unity linerenderer在Game窗口中任意画线_游戏内编辑linerender-CSDN博客
让生成的标记转化为ARMarks游戏对象的子物体
LineMark.cs
cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class LineMark : MonoBehaviour
{
private GameObject clone;
private LineRenderer line;
private int i;
public GameObject obs;
public GameObject arMarks;
// Use this for initialization
void Start()
{
//arMarks = new GameObject("ARMarks");
}
// Update is called once per frame
void Update()
{
//0是鼠标左键 按下时重新生成标记
if (Input.GetMouseButtonDown(0))
{
clone = (GameObject)Instantiate(obs, obs.transform.position, transform.rotation);//克隆一个带有LineRender的物体
line = clone.GetComponent<LineRenderer>();//获得该物体上的LineRender组件
line.SetColors(Color.blue, Color.red);//设置颜色
line.SetWidth(0.2f, 0.1f);//设置宽度
i = 0;
//将标记设为子物体
print("11111111111111111");
}
//长按左键绘制标记
if (Input.GetMouseButton(0))
{
i++;
line.SetVertexCount(i);//设置顶点数
line.SetPosition(i - 1, Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, 15)));//设置顶点位置
//GameObject lines_mark = GameObject.Find(clone.name);
clone.layer = 3;
clone.transform.parent = arMarks.transform;
print("222222222222222222222");
}
//1是鼠标右键 按右键清除标记
if (Input.GetMouseButton(1))
{
for (int i = 0; i < arMarks.transform.childCount; i++)
{
Destroy(arMarks.transform.GetChild(i).gameObject);
}
print("33333333333333333333333");
}
}
}