通过脚本自由设计游戏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 ;

       });

}

 

创建三个按钮的效果如下

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值