前段时间做了一个小蛋糕,里面要用到一个选色(左上角那个哦)
废话不多说 先上代码
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
public class setColor : MonoBehaviour {
public GameObject m;
public static setColor _instance;
float temp;
public Texture2D setCo;
private RectTransform im;
public float _sizeDeltaY;
public float local_V;
public float local_y;
public float scenceY;
private float height;
private float baifeibi;
void Awake()
{
_instance = this;
}
void Start()
{
height = Screen.height;
im = GetComponent<RectTransform> ();
_sizeDeltaY = im.sizeDelta.y;
local_V = im.anchoredPosition3D.y;
local_y = im.anchoredPosition3D.y + _sizeDeltaY;
}
// Update is called once per frame
public void OnMouseDown ()
{
if (m == null)
return;
temp = (Input.mousePosition.y - height);
baifeibi=(temp - local_V)/_sizeDeltaY;
//(int)(baifeibi*setCo.height)
Color co= setCo.GetPixel (1,(int)(baifeibi*setCo.height));
print ((int)(baifeibi * setCo.height));
MeshRenderer[] mrs;
mrs = m.GetComponentsInChildren<MeshRenderer>();
foreach (var item in mrs)
{
foreach (Material items in item.materials)
{
items.color = co;
}
}
}
}
首先获取 选色版被点击时的点击坐标相对于选色版本身的百分比
然后读取选色版这张图片实际百分比的实际像素
获取像素的颜色信息
然后赋值给物体
当然这里有个坑 会报无法读写像素的错误 你可以参照下面设个设置图片的属性
如果你想获取图片的绝对像素信息(选折板这里就是需要绝对坐标)
那么 你的anchors 应该是这样
好了 赶紧做一个自己的着色版吧 (这个是一维的 只需要Y轴的百分比 二维的也基本一致需要获取下X轴 )