C# 单位线渲染器错误
我正在Unity中制作一个绘图应用程序,我正在使用线条渲染器。这是代码,问题是每次我用另一种颜色画新线时,它都是在第一种颜色的后面画的。有人能帮我吗?我只是不知道如何修复 当我切换颜色时,我正在考虑向线条渲染器添加更多的z位置,但我不确定它是否能正常工作C# 单位线渲染器错误,c#,unity3d,drawing,paint,C#,Unity3d,Drawing,Paint,我正在Unity中制作一个绘图应用程序,我正在使用线条渲染器。这是代码,问题是每次我用另一种颜色画新线时,它都是在第一种颜色的后面画的。有人能帮我吗?我只是不知道如何修复 当我切换颜色时,我正在考虑向线条渲染器添加更多的z位置,但我不确定它是否能正常工作 public GameObject lineDrawPrefabs; public Material black; public Material green1; public Material blue;
public GameObject lineDrawPrefabs;
public Material black;
public Material green1;
public Material blue;
public Material pink;
public Material orange;
public Material brown;
public Material green2;
public Material blue2;
public Material yellow;
public Material red;
public Material white;
public static string nowcolor;
private bool isMousePressed;
private GameObject lineDrawPrefab;
private LineRenderer lineRenderer;
List<Vector3> drawPoints = new List<Vector3>();
// public static bool pencil;
void Start()
{
isMousePressed = false;
}
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>();
CheckColor();
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);
mousePos.z = -1000;
if (!drawPoints.Contains(mousePos))
{
drawPoints.Add(mousePos);
lineRenderer.SetVertexCount(drawPoints.Count);
lineRenderer.SetPosition(drawPoints.Count - 1, mousePos);
}
}
}
public static void deletedrawing() {
// // 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]);
}
公共游戏对象线条预设;
公共材料黑色;
公共材料绿色1;
公共材料蓝色;
公共材料粉红色;
公共材料橙色;
公共材料棕色;
公共材料2;
公共材料2;
公共材料黄色;
公共材料红色;
公共材料白色;
公共静态字符串颜色;
私人住宅;
私有游戏对象线绘制预制;
专用线条渲染器线条渲染器;
列表绘制点=新列表();
//公共静电笔;
void Start()
{
isMousePressed=false;
}
无效更新()
{
//if(Input.GetMouseButtonDown(1))
// {
////鼠标右键按下时删除线条渲染器
//GameObject[]delete=GameObject.FindGameObjectsSwithTag(“LineDraw”);
//int deleteCount=delete.Length;
//对于(int i=deleteCount-1;i>=0;i--)
//销毁(删除[i]);
// }
if(Input.GetMouseButtonDown(0))
{
//按住鼠标左键,创建新行渲染器
isMousePressed=true;
lineDrawPrefable=GameObject。实例化(lineDrawPrefables)为GameObject;
lineRenderer=lineDrawPrefable.GetComponent();
CheckColor();
lineRenderer.SetVertexCount(0);
}
else if(Input.GetMouseButtonUp(0))
{
//鼠标左键向上,停止绘图
isMousePressed=false;
支点。清除();
}
如果(按下按钮)
{
//当按下鼠标左键时
//继续将顶点添加到线渲染器
Vector3 mousePos=Camera.main.ScreenToWorldPoint(Input.mousePosition);
mousePos.z=-1000;
如果(!drawPoints.Contains(鼠标点))
{
支点。添加(鼠标点);
lineRenderer.SetVertexCount(drawPoints.Count);
lineRenderer.SetPosition(drawPoints.Count-1,鼠标点);
}
}
}
公共静态void deletedrawing(){
////鼠标右键按下时删除线条渲染器
GameObject[]delete=GameObject.FindGameObjectsSwithTag(“LineDraw”);
int deleteCount=delete.Length;
对于(int i=deleteCount-1;i>=0;i--)
销毁(删除[i]);
}
我解决了这个问题,我只是在图层中使用了order,每次用户选择颜色时添加+1,现在工作正常 将此添加到主脚本中
public static int orderinlayer = 1;
并添加lineRenderer.sortingOrder=orderinlayer;这里
if (Input.GetMouseButtonDown(0))
{
isMousePressed = true;
lineDrawPrefab = GameObject.Instantiate(lineDrawPrefabs) as GameObject;
lineRenderer = lineDrawPrefab.GetComponent<LineRenderer>();
lineRenderer.sortingOrder = orderinlayer;
CheckColor();
lineRenderer.SetVertexCount(0);
}
对于每种
颜色。现在
工作正常 你能提供一张说明问题所在的带注释的图片吗?我认为对于视觉问题,这类信息将非常有用。
ScriptLineGameobject.orderinlayer += 1;