直接先上效果:
gif里面有些颜色不一样是gif功能导致的,绘制出来的都是同一个颜色。
原理其实也简单,通过一些列的坐标转换得到当前绘制的坐标,然后根据画笔的宽度计算像素数量,最后填充像素块颜色。
备注:
纹理必须在导入设置中设置了 Is Readable 标志
Texture2D.SetPixels :设置像素颜色块。
Texture2D.Apply :实际应用任何先前的 SetPixels 更改。
直接上代码吧:
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Draw : MonoBehaviour
{
public static Color Pen_Colour = Color.red;
public static int Pen_Width = 3;
public LayerMask Drawing_Layers;
private Sprite drawable_sprite;
private Texture2D drawable_texture;
private Vector2 previous_drag_position;
private Color[] clean_colours_array;
private Collider2D[] rayResult = new Collider2D[2];
private Color32[] cur_colors;
private bool no_drawing_on_current_drag = false;
private bool mouse_was_previously_held_down = false;
void Awake()
{
drawable_sprite = this.GetComponent<SpriteRenderer>().sprite;
drawable_texture = drawable_sprite.texture;
clean_colours_array = new Color[(int)drawable_sprite.rect.width * (int)drawable_sprite.</