0

编译后,我收到以下错误:

C:\UDK\UDK-2010-03\Development\Src\FixIt\Classes\ZInteraction.uc(41):错误,“GameUISceneClient”类中无法识别的成员“OpenMenu”

第 41 行如下:

GetSceneClient().OpenMenu("ZInterface.ZNLGWindow");

但是当我搜索OpenMenu时,我发现它确实是在UDK的GameUISceneClient.uc中定义的:

第 1507 行:执行函数 OpenMenu(字符串 MenuPath,可选 int PlayerIndex=INDEX_NONE)

看起来我的一切都是正确的。那么有什么问题呢?为什么找不到 OpenMenu 功能?

4

2 回答 2

0

从关于Legacy:Exec Function的 wiki 页面:

执行函数是玩家或用户可以通过在控制台中键入其名称来执行的函数。基本上,它们提供了一种在 UnrealScript 代码中定义新控制台命令的方法。

好的,所以 OpenMenu 已转换为控制台命令。伟大的。但是,我如何在代码中执行它?页面没有说!

更多搜索发现了这个奇怪的文档页面,其中包含答案:

现在,在类 Console 中还有一个名为“bool ConsoleCommand(coerce string s)”的函数。要从代码中调用执行的函数“myFunction”,请键入:

* bool isFunctionThere; //optional
  isFunctionThere = ConsoleCommand("myFunction myArgument");

所以,我用以下内容替换了我的行:

GetSceneClient().ConsoleCommand("OpenMenu ZInterface.ZNLGWindow");

现在这会导致另一个错误,我在几分钟前的另一个问题+答案中提到过。但就是这样!

于 2010-03-15T23:26:08.770 回答
0

不确定这是否是您的意图,但如果您尝试基于在 UI 编辑器中创建的 Archetype 创建 UIScene,您需要执行以下操作:

UIScene openedScene;
UIScene mySceneArchetype;

mySceneArchetype = UIScene'Package.Scene';
GameSceneClient = class'UIRoot'.static.GetSceneClient();

//Open the Scene
if( GameSceneClient != none && MySceneArchetype != none )
    {
        GameSceneClient.OpenScene(mySceneArchetype,LocalPlayer(PlayerOwner.Player), openedScene);
    }
于 2010-05-04T20:23:22.340 回答