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)/2;//居中

        //開始滾
        GUI.BeginScrollView(new Rect(scrollviewPositionX, 10, scrollviewWidth, scrollviewHeight), Vector2.zero, new Rect(10, 10, scrollviewWidth, scrollviewHeight));    
        GUI.Label(new Rect(textPositionX,10,770,40),"翻滾吧!大爺!!");
        textPositionX += Time.deltaTime*moveSpeed;
        //結束滾
        GUI.EndScrollView();
    }  
}
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 
11     void OnGUI()
12     {
13         GUI.BeginScrollView(new Rect(10, 10, 400, 400), Vector2.zero, new Rect(10, 10, 400, 600)); 
14         for (int i=0; i<chatContents.Count; i++) {
15             GUI.Label (new Rect (10, 10*(i+1), 770, 40), chatContents[i]);
16         }
17         GUI.EndScrollView();
18 
19         stringToEdit = GUI.TextArea(new Rect (10, 420, 400, 60), stringToEdit,200);
20         if (GUI.Button (new Rect (420, 420, 100, 40), "Send")) {
21             if(chatContents.Count>10){
22                 chatContents.RemoveAt(0);
23             }
24             chatContents.Add (stringToEdit);
25             stringToEdit = string.Empty;
26         }
27     }
28 }
Chat

以上代碼基本實現了聊天界面的展示,聊天顯示內容數量的控制。

  

總結

  直接使用OnGUI繪制的方法能夠提高功能的復用度,基本上可以做到哪里需要就直接使用一個類庫文件進行遷移。但是這只是簡單的實現了其基本的功能,例如數據接口,運動方向控制等功能都還可以進行進一步的擴展。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM