Unity3D 文字滚动跑马灯效果
需求
在日常游戏中,文字滚动效果是比较常用的。例如日常游戏顶部的新闻公告,聊天系统的文字滚动,都属于这个范围。
思路
由于使用的地方比较广泛,所以希望能够尽量独立的游戏之外,能够做到随处使用的功能。NGUI中有很方便的实现,由于功能比较简单,我这里就使用U3D中原生的GUI进行实现,便于以后的移植。
实现
一、新闻公告类
新闻公告类的文字滚动一般都是由左向右,或者由下至上滚动的,并且多是单行单列的模式。
public class Lamp : MonoBehaviour { public float scrollviewWidth;
public float scrollviewHeight;
public float moveSpeed;
public GUISkin guiSkin; private float textPositionX = 10f; void OnGUI()
{
GUI.skin = guiSkin;
float scrollviewPositionX = (Screen.width - scrollviewWidth)/;//居中 //开始滚
GUI.BeginScrollView(new Rect(scrollviewPositionX, , scrollviewWidth, scrollviewHeight), Vector2.zero, new Rect(, , scrollviewWidth, scrollviewHeight));
GUI.Label(new Rect(textPositionX,,,),"翻滚吧!大爷!!");
textPositionX += Time.deltaTime*moveSpeed;
//结束滚
GUI.EndScrollView();
}
}Lamp
背景与本主题无关。。。。。
不过看起来字体有一点小,由于滚动区域和可视区域大小是一致的,所以没有显示出滚动条。在调用OnGUI的时候我提前设置了GUISkin,只需要修改GUISkin,就可以改变外观了。
简单的加了个纯色的背景,字体放大了点,有一点滚动条的意思了,没有可爱的美术同学的帮助果然很难看呀,只好先将就将就了。
一个简单的跑马灯就大功告成了。
二、聊天界面类
相对于新闻公告类来说的,聊天类就需要一个堆栈的布局,由上至下的进行添加。
public class Chat : MonoBehaviour { public string stringToEdit;
private List<string> chatContents = new List<string>(); void Start () {
stringToEdit = string.Empty;
} void OnGUI()
{
GUI.BeginScrollView(new Rect(, , , ), Vector2.zero, new Rect(, , , ));
for (int i=; i<chatContents.Count; i++) {
GUI.Label (new Rect (, *(i+), , ), chatContents[i]);
}
GUI.EndScrollView(); stringToEdit = GUI.TextArea(new Rect (, , , ), stringToEdit,);
if (GUI.Button (new Rect (, , , ), "Send")) {
if(chatContents.Count>){
chatContents.RemoveAt();
}
chatContents.Add (stringToEdit);
stringToEdit = string.Empty;
}
}
}Chat
以上代码基本实现了聊天界面的展示,聊天显示内容数量的控制。
总结
直接使用OnGUI绘制的方法能够提高功能的复用度,基本上可以做到哪里需要就直接使用一个类库文件进行迁移。但是这只是简单的实现了其基本的功能,例如数据接口,运动方向控制等功能都还可以进行进一步的扩展。
Unity3D 文字滚动跑马灯效果的更多相关文章
- 使用JS实现图片轮播滚动跑马灯效果
我的第一篇文章.哈哈.有点小鸡冻. 之前在百度搜索"图片轮播"."图片滚动",结果都是那种可以左右切换的.也是我们最常见的那种.可能是搜索 关键字的问题吧. ...
- Android textView点击滚动(跑马灯)效果
布局文件: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:to ...
- TextView: android:ellipsize="marquee" 跑马灯效果无效的问题
今天练习的时候想实现一个文字的跑马灯效果,本来想自己手动实现的,不过突然想起来android里的TextView属性似乎自带了这个效果,叫: android:ellipsize ,平时都是把它的属性值 ...
- android实现跑马灯效果
第一步:新建一个新项目,MarqueeTextView 首先为了观察到跑马灯效果,将要显示的文字极可能 写长.在strings.xml目录里面将 <string name="hello ...
- Android开发:文本控件详解——TextView(二)文字跑马灯效果实现
一.需要使用的属性: 1.android:ellipsize 作用:若文字过长,控制该控件如何显示. 对于同样的文字“Android开发:文本控件详解——TextView(二)文字跑马灯效果实现”,不 ...
- marquee标签实现跑马灯效果--无缝滚动
今天在做微信端的大转盘抽奖时,想把所有用户的抽奖记录做成无缝滚动的效果,无奈我的js功底太差,一时想不出实现的方法,便百度各种相似效果.但无意中发现了一个html标签——<marquee> ...
- JavaScript小实例-文字跑马灯效果
我们常常能看到显示屏上字体的滚动以及手机弹幕等,下面所示代码就是一个简易的文字跑马灯的效果: <!DOCTYPE html> <html> <head lang=&quo ...
- 自定义有焦点的TextView实现广告信息左右一直滚动的跑马灯效果
import android.content.Context; import android.text.TextUtils; import android.util.AttributeSet; imp ...
- TextView跑马灯效果
转载:http://www.2cto.com/kf/201409/330658.html 一.只想让TextView显示一行,但是文字超过TextView的长度怎么办?在开头显示省略号 android ...
随机推荐
- strcat()函数常见问题
strcat(char *_Destination,const char *_Source)函数的功能是将后一个字符串粘贴到前一个字符串的末尾 原型 char *strcat(char *_Desti ...
- inux下文件权限设置中的数字表示权限,比如777,677等,这个根据什么得来的
chmod ABC file 其中A.B.C各为一个数字,分别表示User.Group.及Other的权限. A.B.C这三个数字如果各自转换成由“0”.“1”组成的二进制数,则二进制数的每一位分别代 ...
- FAQ-Ubuntu12.04 15.04禁止移动介质自动播放
网上有有很多关于Ubuntu10.04关闭移动介质自动播放的方法,包括在文件管理器里面设置或者使用gconf-editor,但是从12.04开始这两种方法都不再好用了,关于移动介质的处理方法被移到了S ...
- Linux LDAP Server--->Clients配置
Linux Ldap Configuration LDAP Server Base Software & SysTem Info SysTem Info 系统版本:centos 6.4 LDA ...
- Icacls 在windows目录文件授权中的应用
前言 最近因工作需要,需要对批量服务器某一目录下的文件进行统一授权,对于linux来说,授权很方便,对于window来说,要对目录下的文件进行批量授权还是很不方便的,windows平台授权自然想到用i ...
- 22 扩展Python - 《Python 核心编程》
- C++ 数组长度 以及 数组名作为参数传递给函数 以及 为什么不在子函数中求数组长度
在看排序,首先是插入排序,思路理清后想用代码实现,然后问题来了: 如何求数组长度? 如果没记错,在Java中应该是有直接可用的方法的, Python中(序列)也有.len,在C/C++中,字符串倒是有 ...
- phpcms v9调用多个栏目下文章的方法
示例:{pc:get sql="SELECT * from v9_news where status=99 and catid in(6,7,8) order by id DESC" ...
- [转]Excel - How to lock cell without using macros if possible
本文转自:http://stackoverflow.com/questions/11953214/excel-how-to-lock-cell-without-using-macros-if-poss ...
- eclipse点击一个变量使相同名称变量高亮显示的方法
preferences->java->Editor->Mark Occurences 选择最上的复选框,下面的就有很多了. 其中的Local variables就是变量的高亮显示.


