通過腳本自由設計遊戲UI風格

近來突然覺得,將按鈕這類簡單控件預先由引擎定義好根本沒有必要,反而嚴重限制了創意發揮。因爲引擎固化它們的實現,便會固定於某種特定的模式上。比如按鈕,標準的實現最多就是爲按下、懸停等狀態提供不同的表現,通常就是圖片和文字的差別。而遊戲作爲一種創意作品,可能要更活潑的模式,比如懸停時放大、抖動動畫、在按鈕上放其它修飾等等。可能的創意非常之多,無法用固定的模式來全部支持。

 

那麼如何用腳本來定製呢?當前 Web 網頁就提供了一個很好的例子,網頁開發者用 HTML JavaScript 可以做出各式各樣的按鈕、菜單等控件。其原理只是簡單的標籤元件組合以及顯示屬性的修改。如:

<div class=”buttonNormal” onMouseHover=”...” onMouseOut=”...” onClick=”...”>

  Button Face

</div>

 

借鑑同樣的方法,遊戲腳本也可以定義自己的控件樣式。當然,重用時必須要簡單,幸運的是 JavaScript 有對對象的支持,那麼只要寫一個按鈕對象就行了,而使用該按鈕類型時就完全不用關心它是如何實現的了,和使用引擎內置控件一樣。於是,做了下嘗試,用腳本實現了一種簡單的按鈕對象:

 

function Button ( parent , x , y , width , height , text , onClickFunc )

{

       var elem = Gui . CreateElement ( "Element" , parent , x , y , width , height );

       writeln ( x , y , width , height );

       this . Element = elem ;

       elem . SetImage ( "Gui/ui2.png" , 144 , 48 , 16 , 16 );

       elem . ImageStretchMode = "NineGrid" ;

       elem . ImageColor = Color . Black ;

       elem . Text = text ;

       elem . add_Click ( onClickFunc );

       elem . add_MouseEnter ( function () {

              elem . ImageColor = Color . White ;

              elem . TextColor = Color . Black ;

       });

       elem . add_MouseLeave ( function () {

              elem . ImageColor = Color . Black ;

              elem . TextColor = Color . White ;

       });

}

 

創建三個按鈕的效果如下

 

發佈了118 篇原創文章 · 獲贊 137 · 訪問量 50萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章