MyGUI 学习笔记(五)——MyGUI 中其他文件1——13.03.12

阅读 MyGUI    中的内容并记录 

  • Text formatting

    :

    MyGUI 在文字显示上支持几种特殊的序列。

    1、常用序列。

    该序列,在任何文字变换的时候,都可以使用。

    ——"#rrggbb":改变文字颜色。

    ——"##" :显示 '#' 字符

    2、占位序列

    ——"\n" :换行符。

    ——"#{Keyword}" :由 language文件中定义的或者 LanguageManager 中载入的字符串替换。如果没有字符串,就保持原样不替换。

    3、runtime是使用的

    例如:getCaption() 或getOnlyText()

     

    例子如下:

    Original textVisible text
    This text is #00ff00greenThis text is green
    #00ff00green and #ff0000red textgreen andred text
    Sometimes long text\nis splitted manuallySometimes long text
    is splitted manually
    Message box with #{MyGUI_MessageBox_Cancel} button
    (LanguageManager language is English)
    Message box with Cancel button
    Message box with #{MyGUI_MessageBox_Cancel} button
    (LanguageManager language is Russian)
    Message box with Отмена button
    #{UnknownKeyword} in string#{UnknownKeyword} in string


     

  • MyGUI FAQ

    :

    1、出现错误先check MyGUI.log文件

     2、不能载入纹理?创建窗口出现异常"layer '[any_layer_name]' not found"?
    A:      1、检查 Media文件夹中的resources.cfg 文件。
              2、检查 Media文件夹中的默认资源组是否 General 
              ——需要载入其它资源组的代码如下:

    mPlatform = new MyGUI::OgrePlatform();
    mPlatform->initialise(mWindow, mSceneManager, "MyResourceGroupName");


    3、为什么 各种窗口控件不工作?
    A:查看是否调用注入每一帧

    mGUI->injectFrameEntered(evt.timeSinceLastFrame);


    4、为什么我换了一个camera以后,GUI就消失了?
    A:如果摄像机有一个新的场景管理器,你需要在新场景中设置GUI

    (MyGUI::OgrePlatform*)pPlatform->getRenderManagerPtr()
                ->setSceneManager(mCamera->getSceneManager());


    5、点击CheckBox控件不响应动作怎么办?
    A:需要添加 eventMouseButtonclick

    button->eventMouseButton<x>click = 
             MyGUI::newDelegate(this, &[class_name]::notifyToggleCheck);
     
    void [class_name]::notifyToggleCheck(MyGUI::WidgetPtr _sender)
    {
        MyGUI::ButtonPtr checkbox = _sender->castType<MyGUI::Button>();
        checkbox-->setStateSelected(!checkbox->getStateSelected());
    }


    6、为什么我的log没有报任何错误,但是我只看到一个空白的屏幕?
    A:确保在调用MyGUI::OgrePlatform:: initialize()函数前,创建场景管理器、摄像机和视口。
    你也可以先调用MyGUI::OgrePlatform:: initialize()函数,带调用如下代码:

    (MyGUI::OgrePlatform*)pPlatform->getRenderManagerPtr()->setSceneManager(mSceneManaer);
     (MyGUI::OgrePlatform*)pPlatform->getRenderManagerPtr()->setRenderWindow(mWindow);
     (MyGUI::OgrePlatform*)pPlatform->getRenderManagerPtr()->setActiveViewport(index);

    另:如果你有多个视口,你需要告诉GUI平台管理器:

    (MyGUI::OgrePlatform*)pPlatform->getRenderManagerPtr()->setActiveViewport(1);


    ——FAQ完结——

  • MyGUI layers

    :

    MyGUI 的层用来渲染窗口。第一层是列表中最低的。
    层的默认配置文件为core_layer.xml或者MyGUI_Layers.xml(我的MyGUI_3.2.0用的是这个)
    主要属性:
    ——type:
            1、SharedLayer 不能覆盖。可以覆盖的窗口在这个图层里面drawn可能尝试错误。整个SharedLayer类型的图层在一个渲染批次里面。
            2、OverlappedLayer 可以覆盖的窗口。每个根窗口一个渲染批次。
            3、其他类型:可以自己添加类型(例子UnitTest_Layers for RTTLayer)
    ——name:层的总称,用于在skin、layouts和代码中被识别。
    ——properties:
            1、Pick boolean:设置是否想要鼠标消息。如果是false,窗口忽略所有鼠标消息(例如点击按钮),而且可以穿过窗口点击下面的窗口。
            2、其它属性:可以自己添加属性(看UnitTest_Layers for RTTLayer layer custom properties)
     
    下面是简单的实例: 

    <?xml version="1.0" encoding="UTF-8"?>
     
    <MyGUI type="Layer" version="1.2">
     
    	<!-- (Pick false) here's unpickable layer that basically used only for displaying 
    	background image and not for any interaction -->
    	<Layer type="SharedLayer" name="Wallpaper">
    		<Property key="Pick" value="false"/>
    	</Layer>
     
    	<!-- (type SharedLayer) Main layer - usually used for most GUI items 
    	that won't be moved in runtime -->
    	<Layer type="SharedLayer" name="Main">
    		<Property key="Pick" value="true"/>
    	</Layer>
     
    	<!-- (type OverlappedLayer) Overlapped layer - usually used for windows, 
    	pop-up messages and hints -->
    	<Layer type="OverlappedLayer" name="Overlapped">
    		<Property key="Pick" value="true"/>
    	</Layer>
     
    	<!-- (name Pointer, Pick false) Pointer layer - mouse pointer drawn here, 
    	don't forget set Pick to false -->
    	<Layer type="SharedLayer" name="Pointer">
    		<Property key="Pick" value="false"/>
    	</Layer>
    </MyGUI>


    你可以随意改变core_layer.xml 文件。如果你删除了一些层,你不想在skin和pointer文件中替换它们。(skin和pointer文件时什么?待深入。下面一篇文章就是。)

  • MyGUI_Media中的一些默认相关文件:

    ——层指针相关:core_settings.xml
    ——窗口的skin在core_skin.xml 文件中(ItemBox下来菜单;ComboBox的下拉菜单;Message层;菜单栏和下拉菜单层)


    ——完结——

  • MyGUI skin creating

    :

    Skin  格式:

    文件Media/MyGUI_Media/core_skin.xml中记录了所有的默认纹理,可以参考它。

    colour值: R G B (值范围0到1.)(1. 0. 0. - red) 或者 hex color (#FF0000 - red).

    skin_alignment的值在align table. 文件中有说明。

    多重对其用空格间隔,代码如下:

    align = "HStretch Top"


    含义为:

    HStretch  | Top

     

    property_name值:在 skin properties table. 文件中有说明。

    其它条件如下:
    ——如果skin有子skin,它必须是 "MainSkin" 类型,或者子skin为"SubSkin"类型。
    ——如果文字不是用于编辑、选择和拷贝的,它应该是"SimpleText" 类型。

    Pointer 格式:

    参考Media/MyGUI_Media/core_pointer.xml文件。

    ——完结——
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值