Unity自製簡易訊息視窗

使用unity自製簡易訊息視窗:

直接貼過來的,有點亂,沒啥模組化的感覺 XD"

我把遊戲視窗縮小了,所以訊息視窗就佔滿了一大部分。

函式是寫成static的,可以直接使用 文件名.showmessage("字串");

來把要顯示的文字丟到顯示視窗,還滿方便的,我都用這方法來顯示。

下次再來寫寫怪物物件淡入淡出的腳本。

#pragma strict
static var StatusGUISty:GUIStyle;
static var message:Array;
static var Height:float;
static var mystring:String;
var oldHeight:float;
var scrollPosition : Vector2 ;
var StaFontMsjhbd:Font; //字型
static var newmsg:boolean;
function awake(){
}
function Start () {
scrollPosition=Vector2.zero;
message=new Array(); 
showmessage("歡迎進入");
showmessage("遊戲世界");
showmessage("此遊戲由VicTsao製作");
showmessage("遊戲名稱:大地英雄傳說");
showmessage("遊戲進度:無");
showmessage("公告:這遊戲沒開放 你誤入了");
showmessage("介面是暫時的");
StatusGUISty=GUIStyle();
StatusGUISty.font=StaFontMsjhbd;
StatusGUISty.fontSize=13;
StatusGUISty.normal.textColor=Color.white;
StatusGUISty.wordWrap =true;
}
function Update () {
}
function OnGUI () {
   if(GUI.Button(Rect (5, Screen.height-250,350, 30),"新增字串")){
   showmessage("新增訊息");
   }
GUI.Box (Rect (5, Screen.height-190,350, 200),"");
StatusGUISty.alignment=TextAnchor.MiddleCenter; 
GUI.Label(Rect (5, Screen.height-190,350,20),"<<訊息視窗>>",StatusGUISty);
//要再判斷高度高度時就將GUIStyle設好,要注意使用的GUIStyle與計算高度的一不一樣
StatusGUISty.alignment=TextAnchor.MiddleLeft; 
//判斷是否太高 是的話就砍掉一些對話
mystring=message.join("\n");
Height = StatusGUISty.CalcHeight(GUIContent(mystring), 320);
while(Height>500){
message.shift();
mystring=message.join("\n");
Height = StatusGUISty.CalcHeight(GUIContent(mystring), 320);
}
scrollPosition = GUI.BeginScrollView(Rect (11, Screen.height-162,340,153),scrollPosition, Rect (0, 0, 320, Height));
GUI.Label (Rect (0,0,320,Height),mystring,StatusGUISty);
if(newmsg){  //判斷是否有新訊息
if(scrollPosition.y ==(oldHeight-153) || (scrollPosition.y==0 && oldHeight<153)){  
/*
當scrollPosition.y ==(oldHeight-153)會將卷軸位置往下捲 意思是當卷軸在最下方時 就持續保持在最下方
當(scrollPosition.y==0 && oldHeight<153) 當右邊卷軸第一次出現時 卷軸往下捲 以保持卷軸在最下方
*/
scrollPosition=Vector2(0,Height);
}
oldHeight=Height;
newmsg=false;
}
GUI.EndScrollView ();
}
 
static function showmessage(string:String){
message.Push(string);
newmsg=true;
}
-----------------------------------------------------
2013/5/28 修改了一個bug..