用Unity3D实现可展开公告版
用Unity3D实现可展开公告版
项目地址
可展开公告版
完成效果图
要求
- UI 效果制作:
- 进入 NGUI 官方网站,使用 UGUI 实现可展开 Quest Log 公告牌效果:
- 进入 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实现可展开公告版相关推荐
- Unity 3D 可展开公告牌
Unity 3D 可展开公告牌 一.项目结构 二.制作流程 0.准备图片资源 将所需图片放于Assets文件夹下 在unity中转化为Sprite(2D and UI) 不转化图片无法加载进canva ...
- 王建宙称乔布斯故意展开TD-LTE版iPhone
网易科技讯 3月4日动静,据国外媒体报道,中国挪动董事长王建宙周五称,苹果公司CEO乔布斯对中国拥有自主常识产权的TD-LTE(恒久演进手艺)很感兴味,已就照此标准展开iPHONE表达了兴味. 他并称 ...
- Unity3D开发一个2D横版射击游戏
教程基于http://pixelnest.io/tutorials/2d-game-unity/ , 这个例子感觉还是比较经典的, 网上转载的也比较多. 刚好最近也在学习U3D, 做的过程中自己又修改 ...
- unity3d游戏开发第2版 pdf_学开发2个月,1个人做出个TapTap排行榜第4的游戏?
最近TapTap排行榜上发生了一件怪事,一款名不见经传的测试版游戏登上Android热门游戏榜,"力压"<和平精英><王者荣耀>等多款大作位列第4. 这款由 ...
- Unity 3D 博客汇总
附录 X4.作业优秀博客汇总 目录 文章目录 附录 X4.作业优秀博客汇总 1.最有价值个人博客(Valuable Person Blogs) 2.博客表达技巧与游戏创新 2.1 写读者欢迎的游戏博客 ...
- Unity3D简陋版跑酷游戏
目录 功能演示 功能简介 制作步骤 功能演示 链接:https://pan.baidu.com/s/1E_2JXWlVJNf3S5l-dH2UuQ提取码:dm5e 视频教学:Unity3D大作业 超级 ...
- Unity3D 优化
用UNITY开发手机游戏,背景图片和UI图片显示的比PC机上模糊非常多,怎么解决?? 在unity里选中资源 1.TextureType 改成 Advanced 2.NonPower of 2 改成 ...
- Unity3d场景快速烘焙
很多刚刚接触Unity3d的童鞋花了大量的时间自学,可总是把握不好Unity3d的烘焙,刚从一个坑里爬出来,又陷入另一个新的坑,每次烘焙一个场景少则几个小时,多则几十个小时,机器总是处于假死机状态,半 ...
- python 真多线程_Python之路200个小例子,在线网页版来了,从此学习更方便!
历史两个月,利用所有业余时间,与朋友一起搜集.创作Python小例子,截止目前已超过200个例子,全新整合汇总为九大章节: 感受Python之美 | 一.Python基础 | 二.Python字符串和 ...
最新文章
- git add . 之后 想执行回滚操作(git add 到本地仓库的代码回滚到没有add 之前的操作)
- ansys大变形开关要不要打开_ANSYS不收敛问题的解决办法
- ubuntu 下root用户无法访问声音设备的解决方案
- POJ2060最小路径覆盖
- 三维重建学习(3):张正友相机标定推导
- FZU 2214 Knapsack problem(背包问题)
- cas 注销不关闭浏览器异常_上海公司经营异常注销麻烦吗
- linux以16进制查看文件
- 移动语义(move semantic)和完美转发(perfect forward)
- android R编译OTA时报“ExternalError: Invalid ro.product.property_source_order”解决方法
- (94)Vivado时序约束TCL命令-get_nets
- Volley源码学习3--log类
- php常用的的字符串转换
- python一个函数可以有参数也可以没有参数_Python:有和没有关键字参数的lambda函数行为?...
- POJ 2159 解题报告
- 少样本学习系列(四)【元学习与少样本深层理解】
- c++ 写ftp服务器文件,C++实现的FTP服务器
- java实现带logo的二维码
- USB2.0 EMC标准设计
- 迪普融合之路 构建价值网络
热门文章
- Goldengate的拆分与合并
- 改造Cobol项目应该注意的几个问题
- 7-27 御膳房 (5 分)
- 如何实现场景切换的java_JavaFX + Scene Builder如何切换场景(JavaFX + Scene Builder how switch scene)...
- C语言程序练习-L1-032 Left-pad (20分)
- python 微服务 etcd_架构之微服务(etcd)
- polymer 绑定html元素,使用Polymer扩展本机HTML元素
- python 字节和字符串区别,Python中字节串和字符串,不是一个概念没有区别之分...
- 传输协议不安全,数据泄露谁之过?——流量劫持技术分析
- innobackupex 数据库备份