UDK "Ошибка, неопознанный член 'OpenMenu' в классе 'GameUISceneClient'" - PullRequest
0 голосов
/ 16 марта 2010

При компиляции я получаю следующую ошибку:

C: \ UDK \ UDK-2010-03 \ Development \ Src \ FixIt \ Classes \ ZInteraction.uc (41): ошибка, нераспознанный член 'OpenMenu' в классе 'GameUISceneClient'

Строка 41 следующая:

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

Но когда я ищу OpenMenu, я обнаруживаю, что он действительно определен в GameUISceneClient.uc UDK:

Строка 1507: функция exec OpenMenu (строка MenuPath, необязательный int PlayerIndex = INDEX_NONE)

Похоже, у меня все правильно. Так что не так? Почему он не может найти функцию OpenMenu?

Ответы [ 2 ]

0 голосов
/ 05 мая 2010

Не уверен, что это ваше намерение, но если вы пытаетесь создать 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);
    }
0 голосов
/ 16 марта 2010

Со страницы вики на Legacy: Exec Function :

Exec Functions - это функции, которые игрок или пользователь может выполнить, введя его имя в консоли. По сути, они предоставляют способ определения новых консольных команд в коде UnrealScript.

Хорошо, значит OpenMenu был преобразован в консольную команду. Отлично. Но все же, как мне выполнить это в коде? Страница не говорит!

В результате дополнительного поиска эта странная страница документации , которая содержит ответ:

Теперь есть функция в консоли класса под названием 'bool ConsoleCommand (принудительная строка s) '. в вызовите вашу функцию exec'd, 'myFunction' из кода, вы вводите:

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

Итак, я заменил свою строку следующим:

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

Теперь это вызывает еще одну ошибку, которую я рассмотрел в мой другой вопрос + ответ несколько минут назад . Но это все!

...