用Unity3D实现可展开公告版

项目地址

可展开公告版

完成效果图

要求

  • UI 效果制作:

    • 进入 NGUI 官方网站,使用 UGUI 实现可展开 Quest Log 公告牌效果:

项目实现过程

1、首先创建一个Scroll View,然后给Scroll View的子元素ViewPort的子元素Content添加一个Vertical Layout Group组件,让里面的内容垂直分布,因为没有用到横向滚动的滑动条,所以可以将横向滚动的滚动条,即Scroll View的子元素Scroll View的子元素Scrollbar Horizontal删除,因为在官方网站示例的效果中,滚动条根据内容展示变化长度,所以再给Content添加一个Content Size Fitter组件,使滚动条可以自适应内容长度变化,Scroll View和Content的属性设置为:

2、然后为Content创建三个Button和三个Text子对象,每个Button的Transition要设置为None,结果如下所示:

3、然后编写按钮的点击脚本ButtonAction,使点击按钮后,相应的文本可以展开或收起,并把脚本挂载到按钮上,设置相应控制文本,所编写的代码如下:

public class ButtonAction : MonoBehaviour {public Text expandText;  // 要扩展的文本private int frame = 30;  // 帧数private float height = 180;  // 展开文本高度void Start() {// 为按钮设置点击事件Button button = this.gameObject.GetComponent<Button>();button.onClick.AddListener(OnClick);// 开始时文本收起StartCoroutine(Fold());}// 文本收起IEnumerator Fold() {// 获取文本底部坐标float textY = height;// 按帧收起文本for (int i = 0; i < frame; ++i) {textY -= height / frame;expandText.rectTransform.SetInsetAndSizeFromParentEdge(RectTransform.Edge.Right, 0, expandText.rectTransform.sizeDelta.x);expandText.rectTransform.SetInsetAndSizeFromParentEdge(RectTransform.Edge.Bottom, 0, textY);if (i == frame - 1) {expandText.gameObject.SetActive(false);}yield return null;}}// 文本展开IEnumerator Unfold() {// 获取文本底部坐标float textY = 0;// 按帧展开文本for (int i = 0; i < frame; ++i) {textY += height / frame;expandText.rectTransform.SetInsetAndSizeFromParentEdge(RectTransform.Edge.Right, 0, expandText.rectTransform.sizeDelta.x);expandText.rectTransform.SetInsetAndSizeFromParentEdge(RectTransform.Edge.Bottom, 0, textY);if (i == 0) {expandText.gameObject.SetActive(true);}yield return null;}}// 点击事件void OnClick() {// 如果文本在展开状态if (expandText.gameObject.activeSelf) {// 使用协程收起StartCoroutine(Fold());}else {// 使用协程展开StartCoroutine(Unfold());}}
}

效果截图

开始界面:

点击公告栏可以展开或收起公告文本:

右方滚动条会随展开文本高度而变化滚动条长度:

用Unity3D实现可展开公告版相关推荐

  1. Unity 3D 可展开公告牌

    Unity 3D 可展开公告牌 一.项目结构 二.制作流程 0.准备图片资源 将所需图片放于Assets文件夹下 在unity中转化为Sprite(2D and UI) 不转化图片无法加载进canva ...

  2. 王建宙称乔布斯故意展开TD-LTE版iPhone

    网易科技讯 3月4日动静,据国外媒体报道,中国挪动董事长王建宙周五称,苹果公司CEO乔布斯对中国拥有自主常识产权的TD-LTE(恒久演进手艺)很感兴味,已就照此标准展开iPHONE表达了兴味. 他并称 ...

  3. Unity3D开发一个2D横版射击游戏

    教程基于http://pixelnest.io/tutorials/2d-game-unity/ , 这个例子感觉还是比较经典的, 网上转载的也比较多. 刚好最近也在学习U3D, 做的过程中自己又修改 ...

  4. unity3d游戏开发第2版 pdf_学开发2个月,1个人做出个TapTap排行榜第4的游戏?

    最近TapTap排行榜上发生了一件怪事,一款名不见经传的测试版游戏登上Android热门游戏榜,"力压"<和平精英><王者荣耀>等多款大作位列第4. 这款由 ...

  5. Unity 3D 博客汇总

    附录 X4.作业优秀博客汇总 目录 文章目录 附录 X4.作业优秀博客汇总 1.最有价值个人博客(Valuable Person Blogs) 2.博客表达技巧与游戏创新 2.1 写读者欢迎的游戏博客 ...

  6. Unity3D简陋版跑酷游戏

    目录 功能演示 功能简介 制作步骤 功能演示 链接:https://pan.baidu.com/s/1E_2JXWlVJNf3S5l-dH2UuQ提取码:dm5e 视频教学:Unity3D大作业 超级 ...

  7. Unity3D 优化

    用UNITY开发手机游戏,背景图片和UI图片显示的比PC机上模糊非常多,怎么解决?? 在unity里选中资源  1.TextureType 改成 Advanced 2.NonPower of 2 改成 ...

  8. Unity3d场景快速烘焙

    很多刚刚接触Unity3d的童鞋花了大量的时间自学,可总是把握不好Unity3d的烘焙,刚从一个坑里爬出来,又陷入另一个新的坑,每次烘焙一个场景少则几个小时,多则几十个小时,机器总是处于假死机状态,半 ...

  9. python 真多线程_Python之路200个小例子,在线网页版来了,从此学习更方便!

    历史两个月,利用所有业余时间,与朋友一起搜集.创作Python小例子,截止目前已超过200个例子,全新整合汇总为九大章节: 感受Python之美 | 一.Python基础 | 二.Python字符串和 ...

最新文章

  1. git add . 之后 想执行回滚操作(git add 到本地仓库的代码回滚到没有add 之前的操作)
  2. ansys大变形开关要不要打开_ANSYS不收敛问题的解决办法
  3. ubuntu 下root用户无法访问声音设备的解决方案
  4. POJ2060最小路径覆盖
  5. 三维重建学习(3):张正友相机标定推导
  6. FZU 2214 Knapsack problem(背包问题)
  7. cas 注销不关闭浏览器异常_上海公司经营异常注销麻烦吗
  8. linux以16进制查看文件
  9. 移动语义(move semantic)和完美转发(perfect forward)
  10. android R编译OTA时报“ExternalError: Invalid ro.product.property_source_order”解决方法
  11. (94)Vivado时序约束TCL命令-get_nets
  12. Volley源码学习3--log类
  13. php常用的的字符串转换
  14. python一个函数可以有参数也可以没有参数_Python:有和没有关键字参数的lambda函数行为?...
  15. POJ 2159 解题报告
  16. 少样本学习系列(四)【元学习与少样本深层理解】
  17. c++ 写ftp服务器文件,C++实现的FTP服务器
  18. java实现带logo的二维码
  19. USB2.0 EMC标准设计
  20. 迪普融合之路 构建价值网络

热门文章

  1. Goldengate的拆分与合并
  2. 改造Cobol项目应该注意的几个问题
  3. 7-27 御膳房 (5 分)
  4. 如何实现场景切换的java_JavaFX + Scene Builder如何切换场景(JavaFX + Scene Builder how switch scene)...
  5. C语言程序练习-L1-032 Left-pad (20分)
  6. python 微服务 etcd_架构之微服务(etcd)
  7. polymer 绑定html元素,使用Polymer扩展本机HTML元素
  8. python 字节和字符串区别,Python中字节串和字符串,不是一个概念没有区别之分...
  9. 传输协议不安全,数据泄露谁之过?——流量劫持技术分析
  10. innobackupex 数据库备份