CEGUI提供了很强大的界面编辑功能,能够很容易的调用和生产。这些是一点基本的实践经验和原理的感悟,如果有错误,请包含和指出,另外,本文内容需要看官批判的接受^_^废话不多说,先来看看基本的原理。
首先,layout是一个界面的表层,用CEGUI或者LUA载入成一个Window。用游戏界面中的例子可以方便理解。我打开一个道具栏,其实就是在界面根窗口中加载一个子窗口,而承载这个子窗口的XML文本就是一个Layout,layout中包括了以下的一些东西:
<GUILayout >
<Window Type="TaharezLook/FrameWindow" Name="login" >
<Property Name="Font" Value="FairChar-30" />
<Property Name="TitlebarFont" Value="FairChar-30" />
<Property Name="RollUpEnabled" Value="False" />
<Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" />
<Property Name="UnifiedAreaRect" Value="{{0.526917,0},{0.414583,0},{0.911497,0},{0.854169,0}}" />
<Window Type="TaharezLook/Editbox" Name="username" >
<Property Name="MaxTextLength" Value="1073741823" />
<Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" />
<Property Name="UnifiedAreaRect" Value="{{0.304069,0},{0.309479,0},{0.932507,0},{0.455214,0}}" />
</Window>
</Window>
</GUILayout >
可以看到,Layout中是可以有很多不同类型的Window,而Window对应的Type需要在相应的scheme中去匹配,这个以后再说。然后定义Property属性,对应的是一个字典,提供了对CEGUI中不同Type的Property支持。
可能说到这里会有些混乱,这里只需要简单记得:Window Type="TaharezLook/FrameWindow" 这里指向的是对应的scheme文件中的Type,用于读取scheme中定义的样式;而scheme中的Type里面会有一个类型是指向CEGUI中的Window类型,用于告诉界面这是一个什么样的Window,包括什么属性和方法。
Layout是表示层的东西,它仅仅用于定义该layout有哪些窗口(这里的窗口可以理解为不同的控件),这些窗口在哪些位置,窗口的基本属性(这些属性主要是提供给CEGUI用于窗口的渲染)。
第一次写正式的实践文,可能很混乱,等把整个系列都改好了,再重头改一次吧。