阅读 MyGUI 中的内容并记录
-
Text formatting
:MyGUI 在文字显示上支持几种特殊的序列。
1、常用序列。
该序列,在任何文字变换的时候,都可以使用。
——"#rrggbb":改变文字颜色。
——"##" :显示 '#' 字符
2、占位序列
——"\n" :换行符。
——"#{Keyword}" :由 language文件中定义的或者 LanguageManager 中载入的字符串替换。如果没有字符串,就保持原样不替换。
3、runtime是使用的
例如:getCaption() 或getOnlyText()
例子如下:
Original text Visible text This text is #00ff00green This text is green #00ff00green and #ff0000red text green andred text Sometimes long text\nis splitted manually Sometimes 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:需要添加 eventMouseButtonclickbutton->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文件。
——完结——