MyGUI FAQ

原文地址:http://www.ogre3d.org/tikiwiki/tiki-index.php?page=MyGUI+FAQ

问题一:

  Q:不能正常运行,为什么?

  A:检查MyGUI.log

问题二:

  Q:为什么MyGUI找不到材质?

  Q:为什么在创建任何widget时,会出现异常"layer '[any_layer_name]' not found"?

  A:

      1.在resources.cfg文件中,确认MyGUI_Media文件夹;

      2.在默认resource group确认有MyGUI_Media文件夹;

    从另一个resource group加载MyGUI,这样写: 

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


问题三:

  Q:为什么Combobox popup/Tab widget sheets selecting/RenderBox autorotate/Progress bar autotrack/Edit caret blinking/Message不能正常运行?

  A:当你没有每帧调用inject时,就会出现这样的情况。

mGUI->injectFrameEntered(evt.timeSinceLastFrame);


  注意:在MyGUI 3.0,这个方法不在了,这个方法会在渲染器内部会自动调用。

问题四:

  Q:当改变camera时,为什么GUI会消失?

   A:如果新的camera有新的Scene Manager,需要在新的SceneManager上设置GUI。

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


问题五:

  Q:必须要调用什么函数以确保当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());
}


或者如果你已经写了,那么添加这2行代码到on click 事件中。

问题六:

  Q:我的代码可以编译并且运行。log不报任何错误,但是只能看到一个空白的屏幕(blank screen)。

  A:确保在initialize ogre platform 类之前,你已经创建scene manager ,camera,以及viewport。或者之后创建并且调用。(只有这些部分不足以初始化场景,在你创建了Ogre::RenderSystem和Ogre::RenderWindow之后,你只需要设置viewport)

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


问题七:

  Q:代码编译通过并且可以运行,只显示场景,不显示GUI。

  A(1):如果你在使用多viewport,需要告诉platform render manager 如下信息:

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

这个参数是Ogre render window 中viewport的索引,并且等价于之前产生的MyGUI使用的viewport (这句话翻译的有问题)Ogre::RenderWindow::getNumViewports( )的返回值。

     如果动态生成viewport,当删除一个viewport时,确保使用递减的索引来标识。

  A(2):

  确保在Ogre中初始化与之相应的的ResourceManager之后再初始化MyGUI。否则,虽然MyGUI.log提示可以正常找到.xml并且解析正常,但是gui仍然不显示。

Ogre::ResourceGroupManager::getSingleton().initialiseAllResourceGroups();
 
// code code code ...
 
MyGUI::OgrePlatform* mPlatform = new MyGUI::OgrePlatform();
mPlatform->initialise(ogreRenderWindow, ogreSceneManager);
mGUI = new MyGUI::Gui();
mGUI->initialise();


  A(3):

确保viewport启用overlays,只有当viewport的overlays启用时,MyGUI才会渲染。

viewport->setOverlaysEnabled(true);


 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值