当前位置:   article > 正文

unity学习笔记-随笔-动态修改颜色透明度,左右滑动优化_unity 动态修改图片颜色

unity 动态修改图片颜色

动态修改颜色透明度

在代码中获得场景中的对象
获得其中image组件
设置color = new color(值f/255f,值f/255f,值f/255f,值f/255f);
其中最后一个值为透明度

单例模式

当一个脚本需要被多次调用的时候,用这个好像能省一点资源,因为我的脚本里被多次访问而且里面有很多的静态变量,这些比较消耗资源和内存,所以使用了单例模式,让程序在运行的时候有且只有一个脚本被多次访问

方法

在脚本中添加下面的代码
private static 你的脚本名称 _instance;
private static 你的脚本名称 Instance(){
	get{
		if(_instance == null){
			_instance = FindObjectOfType(typeof(你的脚本名称)) as 你的脚本名称;
		}
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

左右滑动优化

思路

使用scroll view组件,进行自定义
添加新的脚本,重写ibegindraghandler和ienddraghandler的方法,在end的时候对scrollrect的x值进行判断,如果在我们需要的范围内则选我们需要的位置,然后赋值回去即可

代码

public class ScrollViewPlus : MonoBehaviour,IBeginDragHandler,IEndDragHandler
{
    ScrollRect rect;

    private float[] posArray = new float[] {0,0.12f,0.24f,0.365f,0.49f,0.61f};
    private float targetPos = 0;
    private bool isDrag = false;
    int index = 0;
    public void OnBeginDrag(PointerEventData eventData)
    {
        isDrag = true;
    }
    

    public void OnEndDrag(PointerEventData eventData)
    {
        isDrag = false;
        Vector2 pos = rect.normalizedPosition;
        float x = Mathf.Abs(pos.x);
        for (int i = 0; i<6;i++)
        {
            float temp = Mathf.Abs(pos.x-posArray[i]);
            if (temp<=x)
            {
                x = temp;
                index = i;
            }
        }
        targetPos = posArray[index];
        Debug.Log(targetPos);
    }

    // Start is called before the first frame update
    void Start()
    {
        rect = GetComponent<ScrollRect>();
    }

    // Update is called once per frame
    void Update()
    {
        if (!isDrag)
        {
            rect.horizontalNormalizedPosition = Mathf.Lerp(rect.horizontalNormalizedPosition,targetPos,Time.deltaTime*4);
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47

这里的代码是参照了b站教程的,cv之后运行发现第一个图片怎么都拖不到,后来自己检查了一下是因为在for循环的时判断不是<而是<=,这样当图片在0这个范围的时候就能判定了~

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/116285?site
推荐阅读
相关标签
  

闽ICP备14008679号