前段时间做了一个小蛋糕,里面要用到一个选色(左上角那个哦)
废话不多说 先上代码
- 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;
- }
-
-
- public void OnMouseDown ()
- {
- if (m == null)
- return;
- temp = (Input.mousePosition.y - height);
- baifeibi=(temp - local_V)/_sizeDeltaY;
-
- 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轴 )