Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Operator, PreOperator, PostOperatorСодержание книги Поиск на нашем сайте
Эти ключевые слова предназначены для объявления особого вида функций, называемых операторами (эквивалентных операторам C++). Компилятор UnrealScript знает обо всех встроенных операторах, таких как "+", "-", "==", "||" и т.д. Если не вдаваяться в подробности, то операторы UnrealScript похожи на операторы C++ и вы можете объявить новые операторы, как функции UnrealScript или встроенные функции, применяя ключевые слова operator, preoperator и postoperator. Event Ключевое слово event в UnrealScript имеет то же значение, что и как функция function. Однако, при экспорте заголовочного файла C++ с использованием =unreal -make -h, UnrealEd автоматически генерирует для "события" заглушку вызова из C++ в UnrealScript, что автоматически синхронизирует код на C++ с функциями UnrealScript и исключает возможность передачи ошибочных параметров в функции UnrealScript. Рассмотрим следующий участок кода UnrealScript.: event Touch(Actor Other) {... } Создает код на C++ в EngineClasses.h, подобный следующему: void eventTouch(class AActor* Other) { FName N("Touch",FNAME_Intrinsic); struct {class AActor* Other; } Parms; Parms.Other=Other; ProcessEvent(N, &Parms); } Это позволяет вам вызвать функцию UnrealScript из C++ следующим образом: AActor *SomeActor, *OtherActor; SomeActor->eventTouch(OtherActor);
native function int doSomething(string myData) const; Управляющие структуры Язык UnrealScript поддерживает все стандартные операторы управления выполнением языков C, C++ и Java: Структуры повторения Циклы for Циклы "For" позволяют выполнять цикл до тех пор, пока не будет выполнено определенное условие. Например: // Example of "for" loop. function ForExample() { local int i; log("Demonstrating the for loop"); for(i=0; i<4; i++) { log("The value of i is " $ i); } log("Completed with i=" $ i); } В результате работы этого цикла мы получим вывод: Demonstrating the for loop The value of i is 0 The value of i is 1 The value of i is 2 The value of i is 3 Completed with i=4 В цикле for вы должны указать три выражения, разделенные точкой с запятой. Первое выражение для инициализации переменной в исходное значение. Второе выражение содержит условие, проверяемое перед выполнением каждой итерации цикла, если это выражение истинно, цикл выполняется, а если оно ложно, цикл завершается. Третье условие содержит выражение, увеличивающее счетчик цикла. Хотя большинство выражений цикла "for" просто обновляют счетчик, вы также можете использовать циклы "for" для более расширенных операций, например, для обхода связанных списков, с помощью соответствующей инициализации исходного значения, условия прекращения и величины прироста. Во всех управляющих структурах вы можете выполнять одну операцию без расстановки фигурных скобок, например: for(i=0; i<4; i++) log("The value of i is " $ i); Или же вы можете выполнить несколько операций, заключив их в фигурные скобки, например: for(i=0; i<4; i++) { log("The value of i is"); log(i); } Циклы do Циклы "do" позволяют вам выполнять цикл пока указанное вами окончательное выражение истинно. Обратите внимание, что Unreal использует синтаксис do-until, который отличается от синтаксиса языков C и Java (использующих do-while). // Example of "do" loop. function DoExample() { local int i; log("Demonstrating the do loop"); do { log("The value of i is " $ i); i = i + 1; } until(i == 4); log("Completed with i=" $ i); } В результате работы этого цикла мы получим вывод: Demonstrating the do loop The value of i is 0 The value of i is 1 The value of i is 2 The value of i is 3 Completed with i=4 Циклы while Циклы "while" позволяют вам выполнять цикл пока указанное вами начальное выражение истинно. // Example of "while" loop. function WhileExample() { local int i; log("Demonstrating the while loop"); while(i < 4) {
log("The value of i is " $ i); i = i + 1; } log("Completed with i=" $ i); } В результате работы этого цикла мы получим вывод: Demonstrating the do loop The value of i is 0 The value of i is 1 The value of i is 2 The value of i is 3 Completed with i=4 Оператор continue Команда "continue" перемещает поток выполнения в начало цикла, а все, что находится после нее, выполнено не будет. В некоторых случаях это может быть использовано для пропуска участка кода цикла. function ContinueExample() { local int i; log("Demonstrating continue"); for(i=0; i<4; i++) { if(i == 2) continue; log("The value of i is " $ i); } log("Completed with i=" $ i); } В результате работы этого цикла мы получим вывод: Demonstrating continue The value of i is 0 The value of i is 1 The value of i is 3 Completed with i=4 Оператор break Команда "break" осуществляет выход из текущего цикла ("For", "Do" или "While"). function BreakExample() { local int i; log("Demonstrating break"); for(i=0; i<10; i++) { if(i == 3) break; log("The value of i is " $ i); } log("Completed with i=" $ i); } В результате работы этого цикла мы получим вывод: Demonstrating break The value of i is 0 The value of i is 1 The value of i is 2 Completed with i=3 Обратите внимание, что команда "break" также может быть использована для пропуска оставшейся части условного оператора ("switch"). Структуры выбора Выражения if-then-else
// Example of simple "if". if(LightBrightness < 20) log("My light is dim");
// Example of "if-else". if(LightBrightness < 20) log("My light is dim"); else log("My light is bright");
// Example if "if-else if-else". if(LightBrightness < 20) log("My light is dim"); else if(LightBrightness < 40) log("My light is medium"); else if(LightBrightness < 60) log("My light is kinda bright"); else log("My light is very bright");
// Example if "if" with brackets. if(LightType == LT_Steady) { log("Light is steady"); } else { log("Light is not steady"); } Выражения case "Switch", "Case", "Default", and "Break" позволяют вам легко обрабатывать списки условий. // Example of switch-case. function TestSwitch() { // Executed one of the case statements below, based on // the value in LightType. switch(LightType) { case LT_None: log("There is no lighting"); break; case LT_Steady: log("There is steady lighting"); break; case LT_Backdrop: log("There is backdrop lighting"); break; default: log("There is dynamic"); break; } } Структура "switch" состоит из одного или более операторов "case", а также необязательного оператора "default". Управление передается оператору "case", совпадающему со значением оператора "switch". Оператор "switch" может включать любое количество экземпляров "case", но два оператора "case" не могут иметь одинаковое значение. Выполнение кода после оператора начинается с выбранного оператора и продолжается до тех пор, пока оператор break не передаст управление за пределы структуры case. Если ни одно выражение case не совпадает со значением оператора "switch", управление передается операторам, следующим за необязательным оператором "default". Если оператора "default" нет, то управление передается за пределы управляющей структуры "switch". Оператор перехода "break", требуется после каждого блока case, включая последний блок, вне зависимости от того, какой из двух операторов ("case" или "default") там использован. Если вы не используете "break", то выполнение будет передано следующему оператору "case" (или "default"). // Example of switch-case. function TestSwitch2() { switch(LightType) { case LT_None: log("There is no lighting"); break; case LT_Steady: // will "fall though" to the LT_Backdrop case case LT_Backdrop: log("There is lighting"); break; default: log("Something else"); break; } } Оператор goto Команда "goto" осуществляет переход потока выполнения к указанной метке. // Example of "goto". function GotoExample() { log("Starting GotoExample"); goto Hither; Yon: log("At Yon"); goto Elsewhere; Hither: log("At Hither"); goto Yon; Elsewhere: log("At Elsewhere"); } В результате мы получим вывод: Starting GotoExample At Hither At Yon At Elsewhere Функциональность языка
|
||||||
Последнее изменение этой страницы: 2016-08-25; просмотров: 171; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.219.18.238 (0.009 с.) |