在CEGUI中使用layout文件(1)

本文介绍如何在CEGUI中利用布局文件简化用户界面的设计与管理。通过实例展示了加载与使用布局文件的过程,包括窗体的加载及属性设置等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在CEGUI中使用layout文件(1)
CEGUI支持两种方式的资源使用,一种就是在前文可见的直接在c++文件当中创建窗体,使用窗体;另一种方式就是在layout文件当中定制窗体。从理论上讲,两种方式都能达到相同的目的。
在不使用layout文件时,CEGUI是不太方便的,因为要定位控件,常常得修改文件当中的参数,如果在c++文件当中修改,每次都编译,很恶心(尤其是在有编辑器的情况下,使用c++就不能使用了)。
所以如果你要使用CEGUI,对layout文件的使用和编辑都是必修课。
下面这个就是一个简单的使用layout文件的例子,作的仅仅是把文件读进来、显示在窗口里了。
 
 
#include "TDemo1.h"
#include 
"CEGUI.h"
#include 
"CEGuiBaseApplication.h"

#include 
<cstdlib>

int main(int argc, char *argv[])
{
    TDemo1 app;
    
return app.run();
}


/*************************************************************************

************************************************************************
*/

bool TDemo1::initialiseSample()
{
    
using namespace CEGUI;

    
// 窗体管理器
    WindowManager& winMgr = WindowManager::getSingleton();

    
// 载入资源
    SchemeManager::getSingleton().loadScheme("TaharezLook.scheme");
    System::getSingleton().setDefaultMouseCursor(
"TaharezLook""MouseArrow");
    FontManager::getSingleton().createFont(
"Commonwealth-10.font");
    
// 在此载入layout文件
    
// 这个就是要在实际当中经常使用的
    Window* sheet = winMgr.loadWindowLayout("TDemo1.layout");
    System::getSingleton().setGUISheet(sheet);

    
return true;
}


/*************************************************************************

************************************************************************
*/

void TDemo1::cleanupSample()
{
    
// 啥也不做
}

 

TDemo1.layout

 

<?xml version="1.0" encoding="UTF-8"?>
<GUILayout>
    
<Window Type="DefaultWindow" Name="root">
        
<Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" />
        
<Property Name="UnifiedAreaRect" Value="{{0,0},{0,0},{1,0},{1,0}}" />        
        
<Window Type="TaharezLook/FrameWindow" Name="TDemo1/Window1" >
            
<Property Name="Text" Value="TDemo 1" />
            
<Property Name="UnifiedMaxSize" Value="{{0.8,0},{0.8,0}}" />
            
<Property Name="UnifiedMinSize" Value="{{0.2,0},{0.2,0}}" />
            
<Property Name="UnifiedAreaRect" Value="{{0.4,0},{0.1,0},{0.9,0},{0.7,0}}" />
            
<Property Name="CloseButtonEnabled" Value="False" />          
        
</Window>
    
</Window>
</GUILayout>
CEGUI(Crazy Eddie’s GUI http://www.cegui.org.uk)是一个自由免费的GUI库,基于LGPL协议,使用C++实现,完全面向对象设计。CEGUI开发者的目的是希望能够让游戏开发人员从繁琐的GUI实现细节中抽身出来,以便有更多的开发时间可以放在游戏性上。 CEGUI的渲染需要3D图形API的支持,如OpenGL或Direct3D。另外,使用更高级的图形库也是可以的,比如OGRE、Irrlicht和RenderWare等,关键需求可以简化为二点: 纹理(Texture)的支持直接写屏(RHW的顶点格式、正交投影、或者使用shader实现) 本书截止日时,CEGUI的最新版本是0.6.0(本书的讨论也是基于此版本),本书光盘提供了SDK和全部源码的下载。 除此之外,CEGUI还同步提供了官方界面编辑器LayoutEditor和ImageSet编辑器,以方便UI和图像集的制作。作为界面编辑器,它需要系统级界面以提供编辑器操作,0.3.0版是基于MFC实现的;而在0.4.0版本以后,改为基于wxWidgets(跨平台的本地UI框架,这里的UI指Window操作系统底层,如:Windows、Unix和Mac,详见http://www.wxwidgets.org)实现。 目前将CEGUI作为游戏界面库开发的游戏已经有好多种,国内的天龙八部,巨人等游戏就是很好的例子。 CEGUI的功能是非常强大的,而且使用也非常的灵活,可以和脚本配合。可以通过配置文件自定义窗口外观。通过布局文件实现窗口布局等等特性,使得游戏的界面开发更加方便。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值