范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

使用Unity3DUGUI实现翻书效果

  Unity3D运行截屏
  提示:素材来源网络,侵权必删一、准备工作
  1.新建Unity工程准备几张图片,新建一个文件夹放进去,然后把文件夹放在Resources文件夹下。
  2.新建Hierarchy面板
  如图二、使用步骤
  1.新建UIBook脚本,挂在UIBook上
  代码如下(示例):using System; using System.Collections; using UnityEngine;  namespace HKZ {     public class UIBook : MonoBehaviour     {         //组件         private RectTransform rect;         private Sprite[] bookSprites;//存放所以的图片(书页)         private RectTransform clippingMask;          //引用         ///          /// 正在翻页的书页的左面         ///          private TheDraggingPage leftSideOfPage;         ///          /// 正在翻页的书页的右面         ///          private TheDraggingPage rightSideOfPage;         ///          /// 左侧静止页面         ///          private Page leftPage;         ///          /// 右侧静止页面         ///          private Page rightPage;         private DragPageBase dragPage;         ///          /// 数据类         ///          private BookModels bookModels;          //数据         private int currentLeftId;//当前左边页数         private float aniDuration = 0.5f;         private bool isDragging;          public int CurrentLeftId         {             get             {                 return currentLeftId;             }              set             {                 currentLeftId = value;                  if (currentLeftId < -1)                 {                     currentLeftId = -1;                 }                 else if (currentLeftId > bookSprites.Length - 1)                 {                     currentLeftId = bookSprites.Length - 1;                 }             }         }         private void Start()         {             Canvas canvas;              InitAddComponent(out canvas);//初始化                   InitDate(canvas);              UpdateID(isDragging);         }         ///          /// 初始化,找到子项并添加相应的脚本(正在翻页,静态页面)         ///          private void InitAddComponent(out Canvas canvas)         {             rect = GetComponent();//获取组件             canvas = null;             foreach (Canvas c in rect.GetComponentsInParent())             {                 if (c.isRootCanvas)                 {                     canvas = c;                     break;                 }             }              clippingMask = rect.Find("ClippingMask").GetComponent();             rightPage = rect.Find("RightPage").gameObject.AddComponent();             leftPage = rect.Find("LeftPage").gameObject.AddComponent();             rightSideOfPage = rect.Find("RightSide").gameObject.AddComponent();             leftSideOfPage = rect.Find("LeftSide").gameObject.AddComponent();              rect.Find("RightDragButton").gameObject.AddComponent().                 Init(OnMouseDragRightPage, OnUpdatePage, OnEndDragRightPage);             rect.Find("LeftDragButton").gameObject                       .AddComponent()                       .Init(OnMouseDragLeftPage, OnUpdatePage, OnEndDragLeftPage);              rightPage.Init(GetSprite);             leftPage.Init(GetSprite);             rightSideOfPage.Init(GetSprite);             leftSideOfPage.Init(GetSprite);         }          private Sprite GetSprite(int index)         {             if (index>=0&&index         /// 初始化数据(加载图片,设置整个UIBook大小)         ///          private void InitDate(Canvas canvas)         {             bookModels = new BookModels();//创建并初始化              bookSprites = Resources.LoadAll("Book");//加载所有的图片(书页)              if (bookSprites.Length > 0)             {                 rect.sizeDelta = new Vector2(bookSprites[0].rect.width * 2, bookSprites[0].rect.height);//设置UIBook大小             }              CurrentLeftId = -1;             isDragging = false;              float scaleFactor = 1;//默认图片缩放比例为1             if (canvas != null)             {                 scaleFactor = canvas.scaleFactor;             }             //计算屏幕上书页的显示尺寸             float pageWidth = rect.rect.width * scaleFactor / 2; ;//书页宽度             float pageHeight = rect.rect.height * scaleFactor;//书页高度              //底边中心点的获取             Vector3 pos = rect.position + Vector3.down * pageHeight / 2;             bookModels.BottomCenter = World2LocalPos(pos);             //右下角坐标             pos = rect.position + Vector3.down * pageHeight / 2 + Vector3.right * pageWidth;             bookModels.RightCorner = World2LocalPos(pos);             //上边中心点的获取             pos = rect.position + Vector3.up * pageHeight / 2;             bookModels.TopCenter = World2LocalPos(pos);             //左下角坐标的获取             pos = rect.position + Vector3.down * pageHeight / 2 + Vector3.left * pageWidth;             bookModels.LeftCorner = World2LocalPos(pos);              float width = rect.rect.width / 2;             float height = rect.rect.height;             //每页的宽度             bookModels.PageWidth = width;             //对角线的计算             bookModels.PageDiagonal = Mathf.Sqrt(Mathf.Pow(width, 2) + Mathf.Pow(height, 2));             //设置ClippingMask的大小             clippingMask.sizeDelta = new Vector2(bookModels.PageDiagonal, bookModels.PageDiagonal + bookModels.PageWidth);             //反转切面的轴心点Y值             bookModels.ClippingPivotY = bookModels.PageWidth / clippingMask.sizeDelta.y;              leftSideOfPage.InitShadow(new Vector2(bookModels.PageDiagonal, bookModels.PageDiagonal));             rightSideOfPage.InitShadow(new Vector2(bookModels.PageDiagonal, bookModels.PageDiagonal));         }          ///          /// 获取clippingMask         ///          ///          public RectTransform GetClippingMask()         {             return clippingMask;         }         ///          /// 世界坐标转换为local坐标         ///          ///          ///          private Vector3 World2LocalPos(Vector3 world)         {             return rect.InverseTransformPoint(world);         }         ///          /// Local坐标转化世界坐标         ///          ///          ///          public Vector3 Local2WorldPos(Vector3 local)         {             return rect.TransformPoint(local);         }          private void UpdateID(bool isDragging)         {             if (isDragging)             {                 leftPage.ID = CurrentLeftId;                 leftSideOfPage.ID = CurrentLeftId + 1;                 rightSideOfPage.ID = CurrentLeftId + 2;                 rightPage.ID = CurrentLeftId + 3;             }             else             {                 leftPage.ID = CurrentLeftId;                 rightPage.ID = CurrentLeftId + 1;             }         }          //开始拖动         private void OnMouseDragRightPage()         {             if (CurrentLeftId 0)             {                 dragPage = new DragLeftPage(this, bookModels, rightSideOfPage, leftSideOfPage, leftPage.transform.position);                 dragPage.BeginDragPage(World2LocalPos(Input.mousePosition));                 isDragging = true;                 CurrentLeftId -= 2;                 UpdateID(isDragging);             }         }         //持续拖动         private void OnUpdatePage()         {             if (isDragging)             {                 dragPage.UpdateDrag();             }         }         //结束拖动         private void OnEndDragRightPage()         {             if (isDragging)             {                 isDragging = false;                 bool isLeft = JudgeCornerIsLeft();                 dragPage.EndDragPage(() =>AniEnd(isLeft));             }         }         //结束拖动         private void OnEndDragLeftPage()         {             if (isDragging)             {                 isDragging = false;                 bool isLeft = JudgeCornerIsLeft();                 dragPage.EndDragPage(() => AniEnd(isLeft));             }         }          private bool JudgeCornerIsLeft()         {             return bookModels.CurrentPageCorner.x < bookModels.BottomCenter.x;         }          private void AniEnd(bool isLeft)         {             if (isLeft)             {                 CurrentLeftId += 2;             }         }          ///          /// 获取点击位置         ///          ///          public Vector3 GetClickPos()         {             if (isDragging)             {                 return World2LocalPos(Input.mousePosition);             }             else             {                 return bookModels.ClickPoint;             }         }         ///          /// 计算拖拽角的位置         ///          ///          public Vector3 CulculateDraggingCorner(Vector3 click)         {             Vector3 corner = Vector3.zero;              corner = LimitBotomCenter(click);              return LimitTopCenter(corner);         }         ///          /// 获取底边中心点         ///          ///          ///          private Vector3 LimitBotomCenter(Vector3 click)         {             Vector3 offset = click - bookModels.BottomCenter;             float radians = Mathf.Atan2(offset.y, offset.x);              Vector3 cornerLimit = new Vector3(                 bookModels.PageWidth * Mathf.Cos(radians)                 , bookModels.PageWidth * Mathf.Sin(radians))                 + bookModels.BottomCenter;              float distance = Vector2.Distance(click, bookModels.BottomCenter);              if (distance < bookModels.PageWidth)             {                 return click;             }             else             {                 return cornerLimit;             }         }         ///          /// 获取上边中心点         ///          ///          ///          private Vector3 LimitTopCenter(Vector3 corner)         {             Vector3 offset = corner - bookModels.TopCenter;             float radians = Mathf.Atan2(offset.y, offset.x);              Vector3 cornerLimit = new Vector3(                bookModels.PageDiagonal * Mathf.Cos(radians)                , bookModels.PageDiagonal * Mathf.Sin(radians))                + bookModels.TopCenter;              float distance = Vector2.Distance(corner, bookModels.TopCenter);              if (distance > bookModels.PageDiagonal)                 return cornerLimit;              return corner;         }         ///          /// 计算折叠线的角度数         ///          ///          ///          ///          public float CulculateFoldAngle(Vector3 corner, Vector3 bookCorner, out Vector3 bottomCrossPoint)         {             Vector3 twoCornerCenter = (corner + bookCorner) / 2;             Vector3 offset = bookCorner - twoCornerCenter;             float randians = Mathf.Atan2(offset.y, offset.x);             float offsetX = twoCornerCenter.x - offset.y * Mathf.Tan(randians);             offsetX = LimitOffsetX(offsetX, bookCorner, bookModels.BottomCenter);             bottomCrossPoint = new Vector3(offsetX, bookModels.BottomCenter.y);              offset = bottomCrossPoint - twoCornerCenter;             return Mathf.Atan(offset.y / offset.x) * Mathf.Rad2Deg; //randians to degress         }          private float LimitOffsetX(float offsetX, Vector3 bookCorner, Vector3 bottomCenter)         {             if (offsetX > bottomCenter.x && bottomCenter.x > bookCorner.x)                 return bottomCenter.x;              if (offsetX < bottomCenter.x && bottomCenter.x < bookCorner.x)                 return bottomCenter.x;              return offsetX;         }          public void FlipAni(Vector3 target, Action onComplete)         {             StartCoroutine(PageAni(target, aniDuration, ()=>             {                 if (onComplete!=null)                 {                     onComplete();                 }                 ResetDate();             }));         }          private void ResetDate()         {             UpdateID(isDragging);             leftSideOfPage.SetActiveState(false);             rightSideOfPage.SetActiveState(false);         }          private IEnumerator PageAni(Vector3 target,float duration,Action onComplete)         {             Vector3 offset = (target - bookModels.ClickPoint) / duration;             float symbol = (target - bookModels.ClickPoint).x;             yield return new WaitUntil(() =>             {                 bookModels.ClickPoint += offset * Time.deltaTime;                 dragPage.UpdateDrag();                 if (symbol>0)                 {                     return bookModels.ClickPoint.x >= target.x;                 }                 else                 {                     return bookModels.ClickPoint.x <= target.x;                 }             });             if (onComplete!=null)             {                 onComplete();             }         }     } }
  2.新建BookModels脚本
  代码如下(示例):using UnityEngine;  namespace HKZ {     public class BookModels     {                ///          /// 一页的宽度         ///          public float PageWidth;         ///          /// 对角线         ///          public float PageDiagonal;         ///          /// 底边中心点         ///          public Vector3 BottomCenter;         ///          /// 顶点中心点         ///          public Vector3 TopCenter;         ///          /// 当前被拖动的书页顶点位置         ///          public Vector3 CurrentPageCorner;         ///          /// 右边书页右下角顶点         ///          public Vector3 RightCorner;         ///          /// 左边书页右下角顶点         ///          public Vector3 LeftCorner;         ///          /// 当前点击的点         ///          public Vector3 ClickPoint;         ///          /// 反转切面的轴心点Y值         ///          public float ClippingPivotY;     } }
  3.新建DragButton脚本
  代码如下(示例):using System; using UnityEngine; using UnityEngine.EventSystems;  namespace HKZ {     public class DragButton : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler     {         private Action onBeginDrag;         private Action onDrag;         private Action onEndDrag;          ///          /// 初始化数据         ///          ///          ///          ///          public void Init(Action onBeginDrag, Action onDrag, Action onEndDrag)         {             this.onBeginDrag = onBeginDrag;             this.onDrag = onDrag;             this.onEndDrag = onEndDrag;         }         ///          /// 开始拖动         ///          ///          public void OnBeginDrag(PointerEventData eventData)         {             if (onBeginDrag!=null)             {                 onBeginDrag();             }         }         ///          /// 持续拖动         ///          ///          public void OnDrag(PointerEventData eventData)         {             if (onDrag != null)             {                 onDrag();             }         }         ///          /// 结束拖动         ///          ///          public void OnEndDrag(PointerEventData eventData)         {             if (onEndDrag!=null)             {                 onEndDrag();             }         }     } }
  4.新建DragLeftPage脚本
  代码如下(示例):using UnityEngine;  namespace HKZ {     public class DragLeftPage : DragPageBase     {         public DragLeftPage(UIBook uIBook, BookModels bookModels, TheDraggingPage frontPage, TheDraggingPage backPage, Vector3 startPos)             : base(uIBook, bookModels, frontPage, backPage, startPos)         {          }          protected override Vector3 GetBookCorner()         {             return bookModels.LeftCorner;         }          protected override Vector2 GetCilppingMaskPivot()         {             return new Vector2(0, bookModels.ClippingPivotY);         }          protected override Vector2 GetPagePivot()         {             return Vector2.right;         }          protected override Vector3 GetValidAngle(float angle)         {             return Vector3.forward * (angle + 180);         }     } }
  5.新建DragRightPage脚本
  代码如下(示例):using UnityEngine;  namespace HKZ {     public class DragRightPage : DragPageBase     {         public DragRightPage(UIBook uIBook, BookModels bookModels, TheDraggingPage frontPage, TheDraggingPage backPage, Vector3 startPos)             : base(uIBook, bookModels, frontPage, backPage, startPos)         {          }          protected override Vector3 GetBookCorner()         {             return bookModels.RightCorner;         }          protected override Vector2 GetCilppingMaskPivot()         {             return new Vector2(1, bookModels.ClippingPivotY);         }          protected override Vector2 GetPagePivot()         {             return Vector2.zero;         }          protected override Vector3 GetValidAngle(float angle)         {             return Vector3.forward * angle;         }     } }
  6.新建IDragPage脚本
  代码如下(示例):using System; using UnityEngine;  namespace HKZ {     public interface IDragPage     {         void BeginDragPage(Vector3 point);          void UpdateDrag();          void EndDragPage(Action complete);     }      public abstract class DragPageBase     {         private UIBook uIBook;         protected BookModels bookModels;         private TheDraggingPage frontPage;         private TheDraggingPage backPage;         private Vector3 startPos;         private RectTransform clippingMask;          public DragPageBase(UIBook uIBook, BookModels bookModels,             TheDraggingPage frontPage, TheDraggingPage backPage, Vector3 startPos)         {             this.uIBook = uIBook;             this.bookModels = bookModels;             this.frontPage = frontPage;             this.backPage = backPage;             this.startPos = startPos;             clippingMask = uIBook.GetClippingMask();         }         ///          /// 开始拖拽         ///          ///          public void BeginDragPage(Vector3 point)         {             //设置中心点             clippingMask.pivot = GetCilppingMaskPivot();              bookModels.ClickPoint = point;              frontPage.BeginDragPage(startPos, GetPagePivot());             backPage.BeginDragPage(startPos, GetPagePivot());         }         protected abstract Vector2 GetCilppingMaskPivot();          protected abstract Vector2 GetPagePivot();          ///          /// 拖拽过程         ///          public void UpdateDrag()         {             bookModels.ClickPoint = uIBook.GetClickPos();              backPage.SetParent(clippingMask, true);             frontPage.SetParent(uIBook.transform, true);              bookModels.CurrentPageCorner = uIBook.CulculateDraggingCorner(bookModels.ClickPoint);              Vector3 bottomCrossPoint = UpdateClippingMask();              UpdateBackSide(bottomCrossPoint);              frontPage.SetParent(clippingMask, true);             frontPage.ResetShadowDate();             frontPage.transform.SetAsFirstSibling();              backPage.SetShadowFollow(clippingMask);         }          private Vector3 UpdateClippingMask()         {             Vector3 bottomCrossPoint;             float angle = uIBook.CulculateFoldAngle(bookModels.CurrentPageCorner, GetBookCorner(), out bottomCrossPoint);             if (angle > 0)             {                 angle = angle - 90;             }             else             {                 angle = angle + 90;             }              clippingMask.eulerAngles = Vector3.forward * angle;             clippingMask.localPosition = bottomCrossPoint;              return bottomCrossPoint;         }          protected abstract Vector3 GetBookCorner();          private void UpdateBackSide(Vector3 bottonCrossPoint)         {             backPage.transform.position = uIBook.Local2WorldPos(bookModels.CurrentPageCorner);             Vector3 offset = bottonCrossPoint - bookModels.CurrentPageCorner;              float angle = Mathf.Atan2(offset.y, offset.x) * Mathf.Rad2Deg;             backPage.transform.eulerAngles = GetValidAngle(angle);         }          protected abstract Vector3 GetValidAngle(float angle);          public void EndDragPage(Action complete)         {             Vector3 corner;             if (bookModels.CurrentPageCorner.x>bookModels.BottomCenter.x)             {                 corner = bookModels.RightCorner;             }             else             {                 corner = bookModels.LeftCorner;             }             uIBook.FlipAni(corner, complete);         }     } }
  7.新建Page脚本
  代码如下(示例):using System; using UnityEngine; using UnityEngine.UI;  namespace HKZ {     public class Page : MonoBehaviour     {         //引用         public Shadow Shadow         {             get;             private set;         }         //组件         private Func getSprite;         private Image img_Page;         protected RectTransform rect;         //数据         ///          /// 页数         ///          private int id;         public int ID         {             get             {                 return id;             }             set             {                 id = value;                 ChangeSprite(value);             }         }          ///          /// 初始化数据         ///          ///          public virtual void Init(Func getSprite)         {             rect = GetComponent();             this.getSprite = getSprite;             img_Page = GetComponent();             Shadow = transform.GetChild(0).gameObject.AddComponent();         }         ///          /// 赋值Sprite         ///          ///          private void ChangeSprite(int id)         {             img_Page.sprite = getSprite(id);         }         ///          /// 设置活跃状态         ///          ///          public void SetActiveState(bool isActive)         {             gameObject.SetActive(isActive);         }         ///          /// 设置父物体         ///          ///          ///          public void SetParent(Transform parent,bool worldPosStays)         {             transform.SetParent(parent, worldPosStays);         }     } }
  8.新建Shadow脚本
  代码如下(示例):using UnityEngine; using UnityEngine.UI;  namespace HKZ {     public class Shadow : MonoBehaviour     {         //组件         private RectTransform rect;         private Image image;         private Color defaultColor = new Color(1, 1, 1, 0.5f);         ///          /// 初始化数据         ///          ///          public void Init(Vector2 size)         {             rect = GetComponent();             image = GetComponent();             rect.sizeDelta = size;//设置大小             image.color = defaultColor;//设置颜色         }         ///          /// 设置shadow的位置         ///          ///          public void SetShadowFollow(Transform target)         {             transform.position = target.position;             transform.rotation = target.rotation;         }          public void ResetShadowDate()         {             rect.anchoredPosition = Vector2.zero;             rect.localEulerAngles = Vector2.zero;         }     } }
  9.新建TheDraggingPage脚本
  代码如下(示例):using System; using UnityEngine;  namespace HKZ {     public class TheDraggingPage : Page     {         public override void Init(Func getSprite)         {             base.Init(getSprite);             SetActiveState(false);         }         ///          /// 开始拖动         ///          ///          ///          public void BeginDragPage(Vector3 pos,Vector2 pivot)         {             SetActiveState(true);             rect.pivot = pivot;             transform.position = pos;                          transform.eulerAngles = Vector3.zero;         }         ///          /// 初始化Shadow的大小         ///          ///          public void InitShadow(Vector2 size)         {             Shadow.Init(size);         }         ///          /// 让shadow跟随书页         ///          ///          public void SetShadowFollow(Transform target)         {             Shadow.SetShadowFollow(target);         }          public void ResetShadowDate()         {             Shadow.ResetShadowDate();         }     } }完结,如何?,翻书效果不错吧,快一键三连双击加关注。
  效果图

视频父子同台唱棋,这是一种特别的传承拍摄剪辑羊城晚报全媒体记者詹淑真实习生李诗静梁潇静红子,马八进七蓝子,车9平8在广州文化公园中心台上,粤语唱棋声抑扬顿挫意蕴深远,台下棋迷如痴如醉,沉浸在大棋盘唱棋声双重享受的象棋静守,那份斑斓的回忆!流年悠扬婉转,稍纵即逝。在那过去的时光中留下了我们青春的身影,四季里保留着我们走过的印迹。满天星空下飘来一缕青春的记忆,儿时和小伙伴们割草打马叉的游戏,赢的人满载而归,兴高采烈。输程式生活一hr我没有成功过,却是一个彻头彻尾的失败者。没有生死别离,却被至亲伤的体无完肤。说孤独吗?还有几个挚友相伴,不孤独吧!现在根本不会信任任何人。韩洋目含悲凉,语调带着悲伤对好友说慕半盏清茶半盏灯此时的男人已分不出是梦是醒。佳人如画,人比花香。管它是梦也好,是醒也好,他分不清,也不愿分的太清,就这样一份朦朦胧胧的滋味,人生又有几回能够领略得到。夜很静,夜凉如水。风吹着窗户,史学慈禧儿子同治帝19岁早亡,为啥死因难以启齿?留同治中兴清穆宗爱新觉罗载淳(1856年1875年),清文宗咸丰帝长子,生母为孝钦显皇后叶赫那拉氏(慈禧太后),清朝第十位皇帝,清军定都北京后第八位皇帝,年号同治,在位14年,是清朝皇帝中寿发型有多重要?袁泉长发造型颜值平平,剪短头发后气质大变成经典我们既要追求好看的皮囊,也需要有良好的涵养,内外兼修方能体现品味,然而一个人若是没有好看的皮囊,也很难吸引到别人去关注你的内心。发型对于颜值的影响极大,所以若你已经开始重视提升个人网络中国节元宵晋中灯光璀璨贺元宵流光溢彩庆佳节随着正月十五元宵节的临近,入夜后的晋中市城区灯光璀璨,大街小巷处处张灯结彩,为元宵佳节增添了浓浓的节日氛围。各式花灯竞相绽放,市民纷纷走出家门,赏花灯品年味。在城区的街道上,造型各5年南美战争,竟是为了抢夺鸟粪!1879,南美洲的智利秘鲁和玻利维亚,为了争夺世界旱极之地阿塔卡玛沙漠,而爆发战争。为何这样一个人烟稀少且干旱的地区,却引发了三国的争抢?原因无他,阿塔卡玛沙漠拥有丰富的鸟粪和硝石李晓艳北流松花江闯关东的后人连载(5)第二章艰难的生活落脚扶余县薛家店1祖辈一路向北,顺着官道向前走。他们爬过柳条边,来到了一望无际的草原,进入了郭尔罗斯前旗境内,他们并不知道这里是蒙古王公游牧地。郭尔罗斯前旗,幅员辽说说末代皇帝我去过伪满皇宫博物院,在那里,你可以了解这位末代皇帝的传奇一生,从皇帝,傀儡皇帝,特殊战犯,到改造成普通百姓的传奇一生。在这里参观,心情总有些沉重,毕竟是日本侵略东北的历史见证,这使臣进贡西方美女,中国皇帝是否接受西洋美女中国皇帝是否有机会娶到西方美女?答案是肯定的,因为在清雍正年间,就有欧洲使臣给皇帝进贡了西方美女。雍正皇帝雍正皇帝在我国历史上也是比较有作为的皇帝,他上承康熙,下启乾隆,虽
细腻胶片颗粒的时尚人像沐浴阳光中的性感身姿LachlanBailey是一位时尚和人像摄影师,目前居住在纽约市。Lachlan最初来自澳大利亚,在那里学习电影和摄影,他于2001年移居伦敦,然后于2008年移居纽约。在协助其频繁洗头有什么危害,真的会越洗越油吗每天三个小知识,轻松拥有飘柔顺发。我们常因参加聚会或某些重要活动改变自己的洗头频率,但通常情况下,我们只在头发油了时才洗头。那么问题来了,我们什么情况算是头发油了呢?如果频繁洗头会刘亦菲的大腿,打了几何滤镜女明星的脸刘亦菲是娱乐界内可贵同一审美的女明星,可即便是高颜值的刘亦菲也难抵审美霸凌,去有风中央拿下收视第一,这是刘亦菲的首部当代剧,开播第一天,刘亦菲手中一个红色小包包就引起同款购置高潮。人生,有舍才有得舍得舍得,有舍才有得。舍是一种付出,人生只有付出了才会有回报,人生只有舍才会有得。宝剑锋自磨砺出,梅花香自苦寒来。说的就是付出与回报,舍与得的关系。舍与得也是人生成功的辩证哲理,人大咖专访王际辉打造具有特色的莞产预制菜第七届中国国际食品及配料博览会首届中国国际预制菜产业博览会(下称第七届食博会预博会)在东莞举办,带来了哪些机遇和挑战?东莞预制菜行业发展现状如何,还有哪些提升空间?东莞如何发挥自身辽宁新动态!艾伦继伟携家人抵厦门,杨鸣宴请外援,弗格老婆回国在24号的时候,CBA会对全部球员拍摄定妆照,到时也会出现不少有趣的画面。这种情况下,辽宁多位球员已经抵达到了辽宁。其中郭艾伦是和自己的妈妈一起抵达厦门的。因为之前国家队和疫情的原1930年的辽宁丹东,九连城山上日本碑和俄国坟,鸭绿江里放大木排上世纪30年代,当时辽宁的丹东叫安东。日伪将辽宁改为奉天后,又把东北4省划为了14省。安东,也就成为安东省的军事政治经济文化活动中心。在这期间,日本为达到对中国实行殖民统治的野心,CBA三消息辽宁神射手太低调,王薪凯遗憾淘汰,金金凡博成陪跑爱国篮,爱CBA,我是洛姐,小伙伴们看完记得点赞!3月25日,CBA联赛全明星周末正式开打,除了全明星正赛受到了球迷们的强烈关注之外,大家也很期待看到三分球大赛和扣篮大赛,不过从目东江美食惠州味道直播亮相马来西亚3月24日下午,东江美食惠州味道直播启动仪式暨中马文化交流活动在惠州城市职业学院举行。惠州市委常委统战部部长赖建华等领导嘉宾参加。活动以糍粑粘日子甜,中马心连心为主题,在粤菜师傅厨春日有佳饮,这酸甜滋味,你不来一杯?上新啦周到草长莺飞,拂堤柳醉。正是春日好时节,周到上海客户端又上新了一揽子商品,来周到商城上新啦周到专区看看,有你想要的吗?金桔柠檬茶市场参考价39元周到商城上新价5980晨豆推荐关键词不添孙莺上海大菜考上海以大菜称呼西餐,最初主要供应外侨,后来西餐馆相继创设,吃大菜之风遂起。大菜,指西餐。上海以大菜称呼西餐,约在1873年前后,在瀛寰琐记上连载之昕夕闲谈中,大菜一词屡现侍者上来支