设为首页收藏本站
网站公告 | 这是第一条公告
     

 找回密码
 立即注册
缓存时间07 现在时间07 缓存数据 抱怨是一件最没意义的事情,如果实在难以忍受周围的环境,那就暗自努力练好本领,然后跳出那个圈子,早安!

抱怨是一件最没意义的事情,如果实在难以忍受周围的环境,那就暗自努力练好本领,然后跳出那个圈子,早安!

查看: 913|回复: 4

Unity3D UGUI实现缩放循环拖动卡牌展示效果

[复制链接]

  离线 

TA的专栏

  • 打卡等级:常驻代表
  • 打卡总天数:31
  • 打卡月天数:0
  • 打卡总奖励:414
  • 最近打卡:2025-04-02 05:15:42
等级头衔

等級:晓枫资讯-上等兵

在线时间
0 小时

积分成就
威望
0
贡献
398
主题
370
精华
0
金钱
1607
积分
838
注册时间
2023-2-10
最后登录
2025-5-31

发表于 2023-2-26 17:30:05 | 显示全部楼层 |阅读模式
本文实例为大家分享了Unity3D UGUI实现缩放循环拖动卡牌展示的具体代码,供大家参考,具体内容如下
需求:游戏中展示卡牌这种效果也是蛮酷炫并且使用的一种常见效果,下面我们就来实现以下这个效果是如何实现。
183009fzeh6zcdbd5dmz2h.gif

思考:第一看看到这个效果,我们首先会想到UGUI里面的ScrollRect,当然也可以用ScrollRect来实现缩短ContentSize的width来自动实现重叠效果,然后中间左右的卡牌通过计算来显示缩放,这里我并没有用这种思路来实现,我提供另外一种思路,就是自己去计算当前每个卡牌的位置和缩放值,不用UGUI的内置组件。
CODE:
1.卡牌拖动组件:
  1. using UnityEngine;
  2. using UnityEngine.EventSystems;
  3. using UnityEngine.UI;

  4. public enum DragPosition
  5. {
  6. Left,
  7. Right,
  8. Up,
  9. Down,
  10. }

  11. [RequireComponent(typeof(Image))]
  12. public class CDragOnCard : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler
  13. {
  14. public bool dragOnSurfaces = true;
  15. public ScrollRect m_ScrollRect = null;
  16. public CFixGridRect m_FixGridRect = null;
  17. private RectTransform m_DraggingPlane;

  18. public bool isVertical = false;
  19. private bool isSelf = false;
  20. private DragPosition m_dragPosition = DragPosition.Left;

  21. public System.Action<DragPosition> DragCallBack = null;

  22. public void OnBeginDrag(PointerEventData eventData)
  23. {
  24.   Vector2 touchDeltaPosition = Vector2.zero;
  25. #if UNITY_EDITOR
  26.   float delta_x = Input.GetAxis("Mouse X");
  27.   float delta_y = Input.GetAxis("Mouse Y");
  28.   touchDeltaPosition = new Vector2(delta_x, delta_y);

  29. #elif UNITY_ANDROID || UNITY_IPHONE
  30. touchDeltaPosition = Input.GetTouch(0).deltaPosition;
  31. #endif
  32.   if (isVertical)
  33.   {
  34.    if(touchDeltaPosition.y > 0)
  35.    {
  36.     UnityEngine.Debug.Log("上拖");
  37.     m_dragPosition = DragPosition.Up;
  38.    }
  39.    else
  40.    {
  41.     UnityEngine.Debug.Log("下拖");
  42.     m_dragPosition = DragPosition.Down;
  43.    }

  44.    if (Mathf.Abs(touchDeltaPosition.x) > Mathf.Abs(touchDeltaPosition.y))
  45.    {
  46.     isSelf = true;
  47.     var canvas = FindInParents<Canvas>(gameObject);
  48.     if (canvas == null)
  49.      return;

  50.     if (dragOnSurfaces)
  51.      m_DraggingPlane = transform as RectTransform;
  52.     else
  53.      m_DraggingPlane = canvas.transform as RectTransform;

  54.    }
  55.    else
  56.    {
  57.     isSelf = false;
  58.     if (m_ScrollRect != null)
  59.      m_ScrollRect.OnBeginDrag(eventData);
  60.    }
  61.   }
  62.   else //水平
  63.   {
  64.    if (touchDeltaPosition.x > 0)
  65.    {
  66.     UnityEngine.Debug.Log("右移");
  67.     m_dragPosition = DragPosition.Right;
  68.    }
  69.    else
  70.    {
  71.     UnityEngine.Debug.Log("左移");
  72.     m_dragPosition = DragPosition.Left;
  73.    }

  74.    if (Mathf.Abs(touchDeltaPosition.x) < Mathf.Abs(touchDeltaPosition.y))
  75.    {
  76.     isSelf = true;
  77.     var canvas = FindInParents<Canvas>(gameObject);
  78.     if (canvas == null)
  79.      return;

  80.     if (dragOnSurfaces)
  81.      m_DraggingPlane = transform as RectTransform;
  82.     else
  83.      m_DraggingPlane = canvas.transform as RectTransform;
  84.    }
  85.    else
  86.    {
  87.     isSelf = false;
  88.     if (m_ScrollRect != null)
  89.      m_ScrollRect.OnBeginDrag(eventData);
  90.    }
  91.   }
  92. }

  93. public void OnDrag(PointerEventData data)
  94. {
  95.   if (isSelf)
  96.   {

  97.   }
  98.   else
  99.   {
  100.    if (m_ScrollRect != null)
  101.     m_ScrollRect.OnDrag(data);
  102.   }
  103. }

  104. public void OnEndDrag(PointerEventData eventData)
  105. {
  106.   if (isSelf)
  107.   {

  108.   }
  109.   else
  110.   {
  111.    if (m_ScrollRect != null)
  112.     m_ScrollRect.OnEndDrag(eventData);
  113.    if (m_FixGridRect != null)
  114.     m_FixGridRect.OnEndDrag(eventData);
  115.   }

  116.   if (DragCallBack != null)
  117.    DragCallBack(m_dragPosition);
  118. }

  119. static public T FindInParents<T>(GameObject go) where T : Component
  120. {
  121.   if (go == null) return null;
  122.   var comp = go.GetComponent<T>();

  123.   if (comp != null)
  124.    return comp;

  125.   Transform t = go.transform.parent;
  126.   while (t != null && comp == null)
  127.   {
  128.    comp = t.gameObject.GetComponent<T>();
  129.    t = t.parent;
  130.   }
  131.   return comp;
  132. }
  133. }
复制代码
2.卡牌组件
  1. using UnityEngine;
  2. using System.Collections;
  3. using UnityEngine.UI;

  4. public class EnhanceItem : MonoBehaviour
  5. {
  6. // 在ScrollViewitem中的索引
  7. // 定位当前的位置和缩放
  8. public int scrollViewItemIndex = 0;
  9. public bool inRightArea = false;

  10. private Vector3 targetPos = Vector3.one;
  11. private Vector3 targetScale = Vector3.one;

  12. private Transform mTrs;
  13. private Image mImage;

  14. private int index = 1;
  15. public void Init(int cardIndex = 1)
  16. {
  17.   index = cardIndex;
  18.   mTrs = this.transform;
  19.   mImage = this.GetComponent<Image>();
  20.   mImage.sprite = Resources.Load<Sprite>(string.Format("Texture/card_bg_big_{0}", cardIndex % 6 + 1));
  21.   this.gameObject.GetComponent<Button>().onClick.AddListener(delegate () { OnClickScrollViewItem(); });
  22. }

  23. // 当点击Item,将该item移动到中间位置
  24. private void OnClickScrollViewItem()
  25. {
  26.   Debug.LogError("点击" + index);
  27.   EnhancelScrollView.GetInstance().SetHorizontalTargetItemIndex(scrollViewItemIndex);
  28. }

  29. /// <summary>
  30. /// 更新该Item的缩放和位移
  31. /// </summary>
  32. public void UpdateScrollViewItems(float xValue, float yValue, float scaleValue)
  33. {
  34.   targetPos.x = xValue;
  35.   targetPos.y = yValue;
  36.   targetScale.x = targetScale.y = scaleValue;

  37.   mTrs.localPosition = targetPos;
  38.   mTrs.localScale = targetScale;
  39. }

  40. public void SetSelectColor(bool isCenter)
  41. {
  42.   if (mImage == null)
  43.    mImage = this.GetComponent<Image>();

  44.   if (isCenter)
  45.    mImage.color = Color.white;
  46.   else
  47.    mImage.color = Color.gray;
  48. }
  49. }
复制代码
3.自定义的ScrollView组件
  1. using UnityEngine;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using UnityEngine.UI;

  5. public class EnhancelScrollView : MonoBehaviour
  6. {
  7. public AnimationCurve scaleCurve;
  8. public AnimationCurve positionCurve;
  9. public float posCurveFactor = 500.0f;
  10. public float yPositionValue = 46.0f;

  11. public List<EnhanceItem> scrollViewItems = new List<EnhanceItem>();
  12. private List<Image> imageTargets = new List<Image>();

  13. private EnhanceItem centerItem;
  14. private EnhanceItem preCenterItem;

  15. private bool canChangeItem = true;

  16. public float dFactor = 0.2f;

  17. private float[] moveHorizontalValues;
  18. private float[] dHorizontalValues;

  19. public float horizontalValue = 0.0f;
  20. public float horizontalTargetValue = 0.1f;

  21. private float originHorizontalValue = 0.1f;
  22. public float duration = 0.2f;
  23. private float currentDuration = 0.0f;

  24. private static EnhancelScrollView instance;

  25. private bool isInit = false;
  26. public static EnhancelScrollView GetInstance()
  27. {
  28.   return instance;
  29. }

  30. void Awake()
  31. {
  32.   instance = this;
  33. }

  34. public void Init()
  35. {
  36.   if ((scrollViewItems.Count % 2) == 0)
  37.   {
  38.    Debug.LogError("item count is invaild,please set odd count! just support odd count.");
  39.   }

  40.   if (moveHorizontalValues == null)
  41.    moveHorizontalValues = new float[scrollViewItems.Count];

  42.   if (dHorizontalValues == null)
  43.    dHorizontalValues = new float[scrollViewItems.Count];

  44.   if (imageTargets == null)
  45.    imageTargets = new List<Image>();

  46.   int centerIndex = scrollViewItems.Count / 2;
  47.   for (int i = 0; i < scrollViewItems.Count; i++)
  48.   {
  49.    scrollViewItems[i].scrollViewItemIndex = i;
  50.    Image tempImage = scrollViewItems[i].gameObject.GetComponent<Image>();
  51.    imageTargets.Add(tempImage);

  52.    dHorizontalValues[i] = dFactor * (centerIndex - i);

  53.    dHorizontalValues[centerIndex] = 0.0f;
  54.    moveHorizontalValues[i] = 0.5f - dHorizontalValues[i];
  55.    scrollViewItems[i].SetSelectColor(false);
  56.   }

  57.   //centerItem = scrollViewItems[centerIndex];
  58.   canChangeItem = true;
  59.   isInit = true;
  60. }

  61. public void UpdateEnhanceScrollView(float fValue)
  62. {
  63.   for (int i = 0; i < scrollViewItems.Count; i++)
  64.   {
  65.    EnhanceItem itemScript = scrollViewItems[i];
  66.    float xValue = GetXPosValue(fValue, dHorizontalValues[itemScript.scrollViewItemIndex]);
  67.    float scaleValue = GetScaleValue(fValue, dHorizontalValues[itemScript.scrollViewItemIndex]);
  68.    itemScript.UpdateScrollViewItems(xValue, yPositionValue, scaleValue);
  69.   }
  70. }

  71. void Update()
  72. {
  73.   if (!isInit)
  74.    return;
  75.   currentDuration += Time.deltaTime;
  76.   SortDepth();
  77.   if (currentDuration > duration)
  78.   {
  79.    currentDuration = duration;

  80.    //if (centerItem != null)
  81.    //{
  82.    // centerItem.SetSelectColor(true);
  83.    //}

  84.    if (centerItem == null)
  85.    {
  86.     var obj = transform.GetChild(transform.childCount - 1);
  87.     if (obj != null)
  88.      centerItem = obj.GetComponent<EnhanceItem>();
  89.     if (centerItem != null)
  90.      centerItem.SetSelectColor(true);
  91.    }
  92.    else
  93.     centerItem.SetSelectColor(true);
  94.    if (preCenterItem != null)
  95.     preCenterItem.SetSelectColor(false);
  96.    canChangeItem = true;
  97.   }

  98.   float percent = currentDuration / duration;
  99.   horizontalValue = Mathf.Lerp(originHorizontalValue, horizontalTargetValue, percent);
  100.   UpdateEnhanceScrollView(horizontalValue);
  101. }

  102. private float GetScaleValue(float sliderValue, float added)
  103. {
  104.   float scaleValue = scaleCurve.Evaluate(sliderValue + added);
  105.   return scaleValue;
  106. }

  107. private float GetXPosValue(float sliderValue, float added)
  108. {
  109.   float evaluateValue = positionCurve.Evaluate(sliderValue + added) * posCurveFactor;
  110.   return evaluateValue;
  111. }

  112. public void SortDepth()
  113. {
  114.   imageTargets.Sort(new CompareDepthMethod());
  115.   for (int i = 0; i < imageTargets.Count; i++)
  116.    imageTargets[i].transform.SetSiblingIndex(i);
  117. }

  118. public class CompareDepthMethod : IComparer<Image>
  119. {
  120.   public int Compare(Image left, Image right)
  121.   {
  122.    if (left.transform.localScale.x > right.transform.localScale.x)
  123.     return 1;
  124.    else if (left.transform.localScale.x < right.transform.localScale.x)
  125.     return -1;
  126.    else
  127.     return 0;
  128.   }
  129. }

  130. private int GetMoveCurveFactorCount(float targetXPos)
  131. {
  132.   int centerIndex = scrollViewItems.Count / 2;
  133.   for (int i = 0; i < scrollViewItems.Count; i++)
  134.   {
  135.    float factor = (0.5f - dFactor * (centerIndex - i));

  136.    float tempPosX = positionCurve.Evaluate(factor) * posCurveFactor;
  137.    if (Mathf.Abs(targetXPos - tempPosX) < 0.01f)
  138.     return Mathf.Abs(i - centerIndex);
  139.   }
  140.   return -1;
  141. }

  142. public void SetHorizontalTargetItemIndex(int itemIndex)
  143. {
  144.   if (!canChangeItem)
  145.    return;

  146.   EnhanceItem item = scrollViewItems[itemIndex];
  147.   if (centerItem == item)
  148.    return;

  149.   canChangeItem = false;
  150.   preCenterItem = centerItem;
  151.   centerItem = item;

  152.   float centerXValue = positionCurve.Evaluate(0.5f) * posCurveFactor;
  153.   bool isRight = false;
  154.   if (item.transform.localPosition.x > centerXValue)
  155.    isRight = true;

  156.   int moveIndexCount = GetMoveCurveFactorCount(item.transform.localPosition.x);
  157.   if (moveIndexCount == -1)
  158.   {
  159.    moveIndexCount = 1;
  160.   }

  161.   float dvalue = 0.0f;
  162.   if (isRight)
  163.    dvalue = -dFactor * moveIndexCount;
  164.   else
  165.    dvalue = dFactor * moveIndexCount;

  166.   horizontalTargetValue += dvalue;
  167.   currentDuration = 0.0f;
  168.   originHorizontalValue = horizontalValue;
  169. }

  170. public void OnBtnRightClick()
  171. {
  172.   if (!canChangeItem)
  173.    return;
  174.   int targetIndex = centerItem.scrollViewItemIndex + 1;
  175.   if (targetIndex > scrollViewItems.Count - 1)
  176.    targetIndex = 0;
  177.   SetHorizontalTargetItemIndex(targetIndex);
  178. }

  179. public void OnBtnLeftClick()
  180. {
  181.   if (!canChangeItem)
  182.    return;
  183.   int targetIndex = centerItem.scrollViewItemIndex - 1;
  184.   if (targetIndex < 0)
  185.    targetIndex = scrollViewItems.Count - 1;
  186.   SetHorizontalTargetItemIndex(targetIndex);
  187. }
  188. }
复制代码
上面的代码好像不能用 我自己写了两种方法
1  使用 Scroll View 实现效果如下
183009be1d7jz7x71x3t8q.png

183010nz5wgff9hf3zjyv1.gif

代码如下
  1. public int totalItemNum;//共有几个单元格

  2. public int currentIndex;//当前单元格的索引

  3. private float bilv ;

  4. public float currentBilv = 0;

  5. private void Awake()
  6. {
  7.   scrollRect = GetComponent<ScrollRect>();

  8. scrollRect.horizontalNormalizedPosition =0;
  9. }
  10. // Use this for initialization
  11. void Start () {
  12. Button[] button = scrollRect.content.GetComponentsInChildren<Button>();
  13. totalItemNum= button.Length;
  14. bilv = 1 / (totalItemNum - 1.00f);

  15. }
  16. public void OnBeginDrag(PointerEventData eventData)
  17. {


  18. beginMousePositionX = Input.mousePosition.x;
  19. }

  20. public void OnEndDrag(PointerEventData eventData)
  21. {

  22. float offSetX = 0;
  23. endMousePositionX = Input.mousePosition.x;

  24. offSetX = beginMousePositionX - endMousePositionX;

  25. if (Mathf.Abs(offSetX)>firstItemLength)
  26. {
  27.   if (offSetX>0)
  28.   {
  29.   //当前的单元格大于等于单元格的总个数
  30.   if (currentIndex >= totalItemNum-1 )
  31.   {
  32.    Debug.Log("左滑动-------");
  33.    return;
  34.   }
  35.   currentIndex += 1;
  36.   scrollRect.DOHorizontalNormalizedPos(currentBilv += bilv, 0.2f);

  37.   Debug.Log("左滑动");
  38.   }
  39.   else
  40.   {
  41.   Debug.Log("右滑动");
  42.   //当前的单元格大于等于单元格的总个数
  43.   if ( currentIndex < 1)
  44.   {
  45.    return;
  46.   }
  47.   currentIndex -= 1;
  48.   scrollRect.DOHorizontalNormalizedPos(currentBilv -= bilv, 0.2f);

  49.   }
  50. }

  51. }
复制代码
183010x655ffoeey6jcy8e.gif
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using DG.Tweening;
  5. using UnityEngine.UI;

  6. public class ThreePage1 : MonoBehaviour {
  7. public GameObject[] images;
  8. int currentIndex;
  9. public float DistancesNum = 250;
  10. public float min = 0.8f;
  11. public float max = 1.4f;

  12. public float speed = 0.2f;
  13. public float Alpha = 0.8f;


  14. void Start () {
  15. InitRectTranform();
  16. }
  17. public void InitRectTranform()
  18. {
  19. currentIndex = images.Length / 2;
  20. for (int i = currentIndex + 1; i < images.Length; i++)
  21. {
  22.   images[i].GetComponent<RectTransform>().anchoredPosition = new Vector3((i - currentIndex) * DistancesNum, 0, 0);
  23. }
  24. int num = 0;
  25. for (int i = currentIndex; i >= 0; i--)
  26. {
  27.   images[i].GetComponent<RectTransform>().anchoredPosition = new Vector3(-num * DistancesNum, 0, 0);
  28.   num++;
  29. }
  30. foreach (var item in images)
  31. {
  32.   if (item != images[currentIndex])
  33.   {
  34.   item.GetComponent<RectTransform>().localScale = new Vector3(min, min);
  35.   item.GetComponent<Image>().color = new Color(1, 1, 1, Alpha);
  36.   }
  37.   else
  38.   {
  39.   item.GetComponent<RectTransform>().localScale = new Vector3(max, max);
  40.   }
  41. }
  42. }
  43. public void Left()
  44. {

  45. ButtonManager._Instances.PlayInput();

  46. OnLeftButtonClick();
  47. }

  48. public void OnLeftButtonClick()
  49. {

  50. if (currentIndex < images.Length-1)
  51. {
  52.   foreach (GameObject item in images)
  53.   {
  54.   (item.GetComponent<RectTransform>()).DOAnchorPosX(item.GetComponent<RectTransform>().anchoredPosition.x- DistancesNum, speed);
  55.   }
  56.   images[currentIndex].GetComponent<Image>().color = new Color(1, 1, 1, Alpha);
  57.   images[currentIndex].GetComponent<RectTransform>().DOScale(min, speed);
  58.   currentIndex += 1;
  59.   images[currentIndex].GetComponent<RectTransform>().DOScale(max, speed);
  60.   images[currentIndex].GetComponent<Image>().color = new Color(1, 1, 1, 1f);
  61. }
  62. }

  63. public void Right()
  64. {
  65.   
  66. ButtonManager._Instances.PlayInput();

  67. OnRightButtonClick();
  68. }

  69. public void OnRightButtonClick()
  70. {


  71. if (currentIndex > 0)
  72. {
  73.   foreach (GameObject item in images)
  74.   {
  75.   (item.GetComponent<RectTransform>()).DOAnchorPosX(item.GetComponent<RectTransform>().anchoredPosition.x + DistancesNum, speed);
  76.   }
  77.   images[currentIndex].GetComponent<RectTransform>().DOScale(min, speed);
  78.   images[currentIndex].GetComponent<Image>().color = new Color(1, 1, 1, Alpha);
  79.   currentIndex -= 1;
  80.   images[currentIndex].GetComponent<RectTransform>().DOScale(max, speed);
  81.   images[currentIndex].GetComponent<Image>().color = new Color(1, 1, 1, 1f);
  82. }
  83. }

  84. private void OnEnable()
  85. {
  86. isOn = true;
  87. timess = 0;
  88. //jarodInputController.IsShiYong = true;
  89. }

  90. private void OnDisable()
  91. {
  92. InitRectTranform();
  93. jarodInputController.IsShiYong = false;
  94. }
  95. }
复制代码
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持晓枫资讯。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
晓枫资讯-科技资讯社区-免责声明
免责声明:以上内容为本网站转自其它媒体,相关信息仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同其观点或证实其内容的真实性。
      1、注册用户在本社区发表、转载的任何作品仅代表其个人观点,不代表本社区认同其观点。
      2、管理员及版主有权在不事先通知或不经作者准许的情况下删除其在本社区所发表的文章。
      3、本社区的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,举报反馈:点击这里给我发消息进行删除处理。
      4、本社区一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
      5、以上声明内容的最终解释权归《晓枫资讯-科技资讯社区》所有。
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
0
主题
0
精华
0
金钱
22
积分
24
注册时间
2022-12-27
最后登录
2022-12-27

发表于 2023-4-10 22:44:24 | 显示全部楼层
感谢分享~~~~学习学习~~~~~~
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
0
主题
0
精华
0
金钱
15
积分
10
注册时间
2022-12-26
最后登录
2022-12-26

发表于 2024-1-25 04:48:15 | 显示全部楼层
感谢楼主分享。
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
0
主题
0
精华
0
金钱
18
积分
16
注册时间
2022-12-25
最后登录
2022-12-25

发表于 2024-11-5 00:32:17 | 显示全部楼层
路过,支持一下
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
0
主题
0
精华
0
金钱
20
积分
20
注册时间
2022-12-27
最后登录
2022-12-27

发表于 前天 22:42 | 显示全部楼层
感谢楼主,顶。
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~
严禁发布广告,淫秽、色情、赌博、暴力、凶杀、恐怖、间谍及其他违反国家法律法规的内容。!晓枫资讯-社区
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1楼
2楼
3楼
4楼
5楼

手机版|晓枫资讯--科技资讯社区 本站已运行

CopyRight © 2022-2025 晓枫资讯--科技资讯社区 ( BBS.yzwlo.com ) . All Rights Reserved .

晓枫资讯--科技资讯社区

本站内容由用户自主分享和转载自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

如有侵权、违反国家法律政策行为,请联系我们,我们会第一时间及时清除和处理! 举报反馈邮箱:点击这里给我发消息

Powered by Discuz! X3.5

快速回复 返回顶部 返回列表