通过触摸屏幕/鼠标 滑动

《领导关怀版本 需求2》
原来基础上需求增加《领导关怀》图片本地加载,打字效果,循环播放
新增五张图片,从自身滚动播放,到手指可以自由左右滑动,一分钟之后,检测到没有手指,再切换成自动滚动的这样一个功能

   /// <summary>
    /// 事件委托
    /// </summary>
    public Action<PointerEventData> actions;
    
    void Update()
    {
        if (Input.touchCount>0)
        {
            IsDrag = true;
            Timers = 0;
        }
        else
        {
            IsDrag = false;//是否拖动
            Timers += Time.deltaTime;//计时
            if (Timers>=60)
            {
                Timers = 60;
            }
        }
    }
    /// <summary>
    /// 鼠标拖动物体移动
    /// </summary>
    /// <param name="data"></param>
    public void fn_MoveObj(BaseEventData data) 
    {
        actions?.Invoke(data as PointerEventData);
    }
    private void OnEnable()
    {
        DrugUI.instance.actions += fn_MySelfMove;
    }
    private void OnDisable()
    {
        DrugUI.instance.actions -= fn_MySelfMove;
    }
    void LateUpdate()
    {
        if (!DrugUI.instance.IsDrag&&DrugUI.instance.Timers>=60)
        {
            updateEvent.Invoke();
        }
        else
        {
            return;
        }
    }
    /// <summary>
    /// 自身移动
    /// </summary>
    /// <param name="data"></param>
    public void fn_MySelfMove(PointerEventData data) 
    {
        //print(data.delta.x);
        var v = data.delta.x;
        RectTransform rtf = (RectTransform)transform;
        Vector2 v2 = rtf.anchoredPosition;
        v2.x += v;
        //rtf.anchoredPosition = v2;
        rtf.anchoredPosition = Vector2.Lerp(rtf.anchoredPosition,v2,0.5f);//缓动效果
        #region 如果不用协程最后一个与第一个之间的间隙会有问题,所以要等待这一帧结束之后调用
        //if (v2.x <= -LoadInfo.instance.values)
        //{
        //    //Vector2 v22= LastObjs.anchoredPosition;
        //    //v22.x += 618.0003f;
        //    //print(v22.x);
        //    rtf.anchoredPosition = new Vector2(LastObjs.anchoredPosition.x + 618.0003f, LastObjs.anchoredPosition.y);
        //    //v2.x = 1247;
        //}
        #endregion
        StartCoroutine(fn_Move(v2, rtf));
    }
    IEnumerator fn_Move(Vector2 v2, RectTransform rtf)
    {
        yield return new WaitForEndOfFrame();
        if (v2.x <= -LoadInfo.instance.values)
        {
            rtf.anchoredPosition = new Vector2(LastObjs.anchoredPosition.x + 618.0003f, LastObjs.anchoredPosition.y);
        }
        else if(v2.x >= -607f)
        {
            LastObjs.anchoredPosition = new Vector2(rtf.anchoredPosition.x - 618.0003f, rtf.anchoredPosition.y);
        }
    }

在这里插入图片描述

因项目急,时间紧,没有大幅度改动,
缺点:
目前总共有几十张图片;如果图片到几百张几千张,这样写就会很消耗内存,占用资源
解决办法:
加载全部所需图片,只生成五六个预设体占满屏幕,超过边界就切换,按照顺序赋值即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值