linerender的标记参考
unity linerenderer在Game窗口中任意画线_游戏内编辑linerender-CSDN博客

让生成的标记转化为ARMarks游戏对象的子物体
LineMark.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
();//获得该物体上的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");
-
- }
-
- }
- }
如果显示的背景尺寸太大,则线会很细,如下

Game窗口

放大之后的scene窗口
这时需要将代码中的值修改一下即可
line.SetWidth(2f, 2f);//设置宽度
