以前用过Vectrosity来画过线,但时间久了忘记怎么用了,也忘记能不能画虚线了。试了一下Unity的LineRenderer加上一个材质来画虚线,但是它是把我们的贴图给拉伸覆盖创建出来的mesh的,忘记保存我的实验效果了。。。可能改改Shader还可以用吧。针扎一番后决定自己用GL写,由于Unity中GL与真正的GL有差距,所以虚线费了点事。
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public enum LineType
{
Dashed,
Line
}
public class VectorLines : MonoBehaviour
{
private static VectorLines inst;
public static VectorLines instance
{
get
{
if (inst == null)
{
inst = Camera.main.transform.gameObject.AddComponent<VectorLines>();
}
return inst;
}
}
private Dictionary<Line, Callback0> lines;
private Material lineMaterial;
void Awake()
{
lines = new Dictionary<Line, Callback0>();
lineMaterial = new Material("Shader \"Lines/Colored Blended\" {" +
"SubShader { Pass {" +
" BindChannels { Bind \"Color\",color }" +
" Blend SrcAlpha OneMinusSrcAlpha" +
Unity实现虚线与实线绘制技巧

本文介绍了在Unity中使用LineRenderer结合材质尝试画虚线的方法,但因Unity的GL实现与标准GL存在差异,导致实现过程较为复杂。作者最终选择使用GL直接编写,虽然这种方法画出的线条颜色和宽度受限,但能有效减少Draw Call。文章还提到,当虚线长度分割为奇数时会出现线条连接错误的bug,并暗示有潜在的优化方案。
最低0.47元/天 解锁文章
2428





