赞
踩
在代码中获得场景中的对象
获得其中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 你的脚本名称;
}
}
}
使用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); } } }
这里的代码是参照了b站教程的,cv之后运行发现第一个图片怎么都拖不到,后来自己检查了一下是因为在for循环的时判断不是<而是<=,这样当图片在0这个范围的时候就能判定了~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。