需求

在日常游戏中,文字滚动效果是比较常用的。例如日常游戏顶部的新闻公告,聊天系统的文字滚动,都属于这个范围。

思路

由于使用的地方比较广泛,所以希望能够尽量独立的游戏之外,能够做到随处使用的功能。NGUI中有很方便的实现,由于功能比较简单,我这里就使用U3D中原生的GUI进行实现,便于以后的移植。

实现

一、新闻公告类

新闻公告类的文字滚动一般都是由左向右,或者由下至上滚动的,并且多是单行单列的模式。

  1. public class Lamp : MonoBehaviour {
  2.  
  3. public float scrollviewWidth;
  4. public float scrollviewHeight;
  5. public float moveSpeed;
  6. public GUISkin guiSkin;
  7.  
  8. private float textPositionX = 10f;
  9.  
  10. void OnGUI()
  11. {
  12. GUI.skin = guiSkin;
  13. float scrollviewPositionX = (Screen.width - scrollviewWidth)/;//居中
  14.  
  15. //开始滚
  16. GUI.BeginScrollView(new Rect(scrollviewPositionX, , scrollviewWidth, scrollviewHeight), Vector2.zero, new Rect(, , scrollviewWidth, scrollviewHeight));
  17. GUI.Label(new Rect(textPositionX,,,),"翻滚吧!大爷!!");
  18. textPositionX += Time.deltaTime*moveSpeed;
  19. //结束滚
  20. GUI.EndScrollView();
  21. }
  22. }

Lamp

背景与本主题无关。。。。。

不过看起来字体有一点小,由于滚动区域和可视区域大小是一致的,所以没有显示出滚动条。在调用OnGUI的时候我提前设置了GUISkin,只需要修改GUISkin,就可以改变外观了。

简单的加了个纯色的背景,字体放大了点,有一点滚动条的意思了,没有可爱的美术同学的帮助果然很难看呀,只好先将就将就了。

一个简单的跑马灯就大功告成了。

二、聊天界面类

相对于新闻公告类来说的,聊天类就需要一个堆栈的布局,由上至下的进行添加。

  1. public class Chat : MonoBehaviour {
  2.  
  3. public string stringToEdit;
  4. private List<string> chatContents = new List<string>();
  5.  
  6. void Start () {
  7. stringToEdit = string.Empty;
  8. }
  9.  
  10. void OnGUI()
  11. {
  12. GUI.BeginScrollView(new Rect(, , , ), Vector2.zero, new Rect(, , , ));
  13. for (int i=; i<chatContents.Count; i++) {
  14. GUI.Label (new Rect (, *(i+), , ), chatContents[i]);
  15. }
  16. GUI.EndScrollView();
  17.  
  18. stringToEdit = GUI.TextArea(new Rect (, , , ), stringToEdit,);
  19. if (GUI.Button (new Rect (, , , ), "Send")) {
  20. if(chatContents.Count>){
  21. chatContents.RemoveAt();
  22. }
  23. chatContents.Add (stringToEdit);
  24. stringToEdit = string.Empty;
  25. }
  26. }
  27. }

Chat

以上代码基本实现了聊天界面的展示,聊天显示内容数量的控制。

  

总结

  直接使用OnGUI绘制的方法能够提高功能的复用度,基本上可以做到哪里需要就直接使用一个类库文件进行迁移。但是这只是简单的实现了其基本的功能,例如数据接口,运动方向控制等功能都还可以进行进一步的扩展。

Unity3D 文字滚动跑马灯效果的更多相关文章

  1. 使用JS实现图片轮播滚动跑马灯效果

    我的第一篇文章.哈哈.有点小鸡冻.  之前在百度搜索"图片轮播"."图片滚动",结果都是那种可以左右切换的.也是我们最常见的那种.可能是搜索 关键字的问题吧. ...

  2. Android textView点击滚动(跑马灯)效果

    布局文件: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:to ...

  3. TextView: android:ellipsize="marquee" 跑马灯效果无效的问题

    今天练习的时候想实现一个文字的跑马灯效果,本来想自己手动实现的,不过突然想起来android里的TextView属性似乎自带了这个效果,叫: android:ellipsize ,平时都是把它的属性值 ...

  4. android实现跑马灯效果

    第一步:新建一个新项目,MarqueeTextView 首先为了观察到跑马灯效果,将要显示的文字极可能 写长.在strings.xml目录里面将 <string name="hello ...

  5. Android开发:文本控件详解——TextView(二)文字跑马灯效果实现

    一.需要使用的属性: 1.android:ellipsize 作用:若文字过长,控制该控件如何显示. 对于同样的文字“Android开发:文本控件详解——TextView(二)文字跑马灯效果实现”,不 ...

  6. marquee标签实现跑马灯效果--无缝滚动

    今天在做微信端的大转盘抽奖时,想把所有用户的抽奖记录做成无缝滚动的效果,无奈我的js功底太差,一时想不出实现的方法,便百度各种相似效果.但无意中发现了一个html标签——<marquee> ...

  7. JavaScript小实例-文字跑马灯效果

    我们常常能看到显示屏上字体的滚动以及手机弹幕等,下面所示代码就是一个简易的文字跑马灯的效果: <!DOCTYPE html> <html> <head lang=&quo ...

  8. 自定义有焦点的TextView实现广告信息左右一直滚动的跑马灯效果

    import android.content.Context; import android.text.TextUtils; import android.util.AttributeSet; imp ...

  9. TextView跑马灯效果

    转载:http://www.2cto.com/kf/201409/330658.html 一.只想让TextView显示一行,但是文字超过TextView的长度怎么办?在开头显示省略号 android ...

随机推荐

  1. PL/SQL之--函数

    一.函数 函数是作为数据库对象存储在oracle数据库中,函数又被称为PL/SQL子程序.oracle处理使用系统提供的函数之外,用户还可以自己定义函数.函数通常被作为一个表达式来调用或存储过程的一个 ...

  2. mysql管理(一)

    创建数据库,并指定默认字符集和排序规则:help create database;create {database|schema} [if not exists] db_name [character ...

  3. 如何在CALayer设置滤镜

    网上有很多关于CALayer中设置filtes属性的相关资料比如如何设置一个带滤镜的layer,代码如下: NSImage* image = [NSImage imageNamed:@"IM ...

  4. html弹窗半透明

    <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="C ...

  5. C中signed与unsigned

    unsigned ; cout<<i * -; 问结果是多少. 第一反应:-3.不过结果似乎不是这样的,写了个程序,运行了一下,发现是:4294967293. 1)在32位机上,int型和 ...

  6. nopcommerce里面的@Html.Widget("home_page_top") 是什么?

    很多朋友在修改模板的时候看到很多类似@Html.Widget("xxx")的东西,这里简单介绍一下流程: 比如@Html.Widget("home_page_top&qu ...

  7. 边工作边刷题:70天一遍leetcode: day 75

    Group Shifted Strings 要点:开始就想到了string之间前后字符diff要相同. 思维混乱的地方:和某个string的diff之间是没有关系的.所以和单个string是否在那个点 ...

  8. 翻译《Writing Idiomatic Python》(一):if语句、for循环

    开篇废话 这是在美国Amazon上评价很不错的一本书,其实严格来说这可能不算书,而是一本小册子.就像书名一样,里面的内容主要是用一些例子讲述地道的Python的代码是怎样写的.书中把很多例子用不良风格 ...

  9. 简单的抓取淘宝关键字信息、图片的Python爬虫|Python3中级玩家:淘宝天猫商品搜索爬虫自动化工具(第一篇)

    Python3中级玩家:淘宝天猫商品搜索爬虫自动化工具(第一篇) 淘宝改字段,Bugfix,查看https://github.com/hunterhug/taobaoscrapy.git 由于Gith ...

  10. POJ 1066 Treasure Hunt --几何,线段相交

    题意: 正方形的房子,给一些墙,墙在区域内是封闭的,给你人的坐标,每穿过一道墙需要一把钥匙,问走出正方形需要多少把钥匙. 解法: 因为墙是封闭的,所以绕路也不会减少通过的墙的个数,还不如不绕路走直线, ...