unity 选色板

前段时间做了一个小蛋糕,里面要用到一个选色(左上角那个哦)


废话不多说  先上代码

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轴 )


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值