「这是我参与2022首次更文挑战的第2天,活动详情查看:2022首次更文挑战」。
概述
上一篇文章我们介绍到使用openCV插件,获取到鼠标点击的图像的对应像素点的颜色,本篇文章我们仍然介绍获取图片指定像素点的颜色,但是并不是使用OpenCV插件,而是使用Unity的Texture2D.GetPixel来进行获取。
效果展示
ps:注意看右下角的颜色条,就是获取到的颜色。有一下变绿是写的测试代码( ̄ェ ̄;)和效果无关
Texture2D.GetPixel
Unity的Texture2D.GetPinxel的功能是返回坐标 (x, y) 上的像素颜色。而获取的坐标是从左下角开始。和Input.mousePosition相同。
注意:如果想要使用GetPinxel,那么Texture的格式必须要进行设置:图片必须要设置为可读写模式,否则无法进行颜色读取
获取颜色
场景搭建
场景的搭建仍然身份的简单,场景中放一个RawImage,将我们要获取颜色图片放到RawImage上,然后新建脚本,进行像素颜色获取。
脚本编写
首先定义两个变量,一个是Texture2D:用来进行颜色拾取的图片,一个是Color:用来显示提取出来的颜色
private Texture2D _texture;
public Color _color;
紧接着获取,RawImage上的Texture,用来进行颜色拾取
_texture = GetComponent<RawImage>().texture as Texture2D;
接下来就是要进行颜色拾取了。先来看一下GetPixel是如何使用的。
通过上图我们可以看出,GetPixel返回的直接就是一个Color,而通过查看API知道,x,y两个参数就是我们要获取颜色的像素点的位置,所以我们可以直接将鼠标点击的位置传进去。
注意:本篇文章使用的图片大小是1920×1080和场景的大小是一样,所以直接使用鼠标的输入坐标,如果图片的大小和场景的大小不相同,那么就要进行相对应的换算,这个会在后期的分享中进行介绍(很快就会出现的)
言归正传,一起来看一下获取对应像素点的颜色代码
_color = _texture.GetPixel((int)Input.mousePosition.x, (int)Input.mousePosition.y);
就是如此的简单就实现了获取对应像素点的颜色功能。
写在最后
所有分享的内容均为作者在日常开发过程中使用过的各种小功能点,分享出来也变相的回顾一下,如有写的不好的地方还请多多指教。欢迎大家相互学习进步。本片文章就先写到这里,希望对你能够有所帮助.欢迎大家在下方留言讨论,想要源文件的也可以在下方进行留言。