文章目录
前言
心血来潮实现下场景中提供一张纹理进行涂鸦的功能。
最终实现效果:
实现过程
UV坐标和UI坐标对齐
这里的纹理使用了UGUI的Canvas进行显示,所以这里使用一张RawImage。
因为Unity的视口坐标是以左下角为(0,0)坐标基准的,所以对RawImage的RectTransform进行调整。锚点改成左下角,Pivot坐标改成(0,0)
因为使用鼠标进行输入的,所以这里需要获取鼠标后,在对坐标进行偏差计算,这里由视口坐标转换成纹理的UV坐标的格式为:
uvPos = mousePos - rectOffest
rectOffset是RawImage的矩形坐标
修改像素代码
计算出相应的x,y坐标后写入纹理,代码如下
private RawImage m_rawImage;
private Texture2D m_texture2D;
private int m_widht = 500, m_height = 500;
private Vector2 m_offsetVect = new Vector2();
private void Awake()
{
m_rawImage = GetComponent<RawImage>();
m_texture2D = new Texture2D(m_widht,m_height);
Color[] colors = new Color[m_widht * m_height];