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