选择Button-hello,为其添加一个button play animation组件(Component->Ngui ->interaction->button play animation)。把该按钮下的animation对象拖到该组件的Target上,设置Trigger为OnHover(当鼠标放置在该按钮上时,播放Target上的动画)。对Button-world进行同样的操作,最后点击播放,当鼠标放置在该按钮上时,就会播放按钮的动画了,如图所示:
使用同样的方法制作checkbox的鼠标停留在上面时的效果,其结构和设置如图所示:
OK。窗口中按钮和checkbox的鼠标停留效果就做好了。点击播放看看。
下面开始制作窗口的拖拽效果,其中还三个辅助功能,一个是摄像机跟随(CameraYaw)、移动延迟(LagPosition)以及窗口摇摆(DragTile)。首先来实现窗口的拖拽功能。因为我们希望当鼠标在窗口的标题栏按下左键之后不放才可以拖动该窗口,所以我们选择该窗口的标题栏(SlicedSprite),为它添加一个DragObject组件(component->NGUI->Interaction->Drag Object),接着把window游戏对象赋值给该组件下的Target变量,点击运行之后,发现并没有任何反应,后来找了大半天,终于知道,我忘了给这个元件加一个碰撞盒,选择SlicedSprite,然后选择菜单中的NGUI->attach a collider(NGUI就是通过碰撞盒中的触发器方式来进行输入监听的),结果如图所示:现在点击播放,可以发现,窗口可以被拖动了。
实现摄像机的跟随变换。创建一个空的游戏对象,命名为Yaw,把他拖动到LagPosition下,reset一下,再把Panel作为它的子对象。接着为Yaw对象添加一个WindowAutoYaw组件(Component-> NGUI->Example->Window Auto Yaw)。现在点击播放,可以发现,摄像机会自动地进行Yaw操作。参数和结构如图所示:
大家发现,现在三个辅助效果都是同时更新,现在我们按照一定的次序来安排更新效果,在Lag Position、Window Auto Yaw和DragTile中都有一个Update Order属性,用来控制其更新次序的,数字越大,更新排序越后。我们设置Lag Position为1,Window Auto Yaw为2,DragTile为3。这样重新播放,可以看起来,更加自然了。
为灯光添加一个Animation组件(Component->Miscellaneous->Animation),并把该组件中的Animation属性设置为Logo动画文件(这个动画文件可以通过动画曲线编辑窗口进行创建,见lights and Refraction讲解 http://game.ceeger.com/f***m/read.php?tid=4226),同时关闭该组件,接着为灯光添加一个Active Animation组件(Component->Ngui->Internal->Active Animation),同样把该组件关闭。把灯光的颜色和范围设置如下,如图所示:
选择Logo对象,在菜单栏中选择NGUI -> Attach a Collider,为其添加一个碰撞盒,接着为它添加一个Button Play Animation组件(Component->NGUI->Interaction-> button play animation)。把target属性设置成point light,也就是logo上面的那个点光源,接着Trigger设置成OnHover***e。点解播放,ok,完成!如图所示:
最后为它添加一个修饰作用的背景。选择Create a new Widget窗口,在template属性中选择Simple Texture。点击Add to,为其添加一个简单的材质元件。接着把该元件拖到Camera下面,成为其子物体,接着,把backdrop材质球赋值给该元件下面的Material中。最后调整这个元件的位置和缩放。最后效果如图所示: