Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Значения по умолчанию для структурСодержание книги Поиск на нашем сайте
При объявлении структуры в UnrealScript можно дополнительно указать значения по умолчанию для свойства структуры. При каждом использовании структуры в UnrealScript ее члены будут инициализироваться этими значениями. Синтаксис идентичен блоку defaultproperties для класса - единственное исключение в том, что вы должны назвать блок structdefaultproperties. Например: struct LinearColor { var() config float R, G, B, A;
structdefaultproperties { A=1.f } }; При каждом определении переменной LinearColor в UnrealScript, значение ее члена A будет установлено в 1.f. Также важно учесть, что блок defaultproperties класса переопределяет свойства по умолчанию для структуры. Если в вашем классе есть переменная типа LinearColor, любое значение, присвоенное ей в блоке defaultproperties заменит значение, определенное в блоке structdefaultproperties.
Динамические массивы Ранее мы рассмотрели статические массивы. Это означает, что размер (количество элементов в массиве) устанавливается во время компиляции и не может быть изменен. Динамические и статические массивы имеют следующие общие характеристики:
Динамические массивы обеспечивают способ получить функциональность статического массива с возможностью изменения числа элементов во время выполнения, в целях удовлетворения меняющихся потребностей. Для использования динамических массивов, мы должны знать несколько их особенностей. Первое - это объявление переменной. Объявление динамического массива очень похоже на объявление любой другой переменной UnrealScript (то есть имеет вид var/local type varname). Для объявления динамического массива указызается тип array, а затем тип массива, заключенный в угловые скобки. Если тип массива содержит скобки (например class<Actor>), то вы должны поставить пробел между закрывающей скобкой типа и закрывающей скобкой объявления массива, иначе компилятор интерпретирует двойную угловую скобку как оператор >>. Примеры: При запуске сценария IntList будет содержать 0 элементов. Динамическими массивами поддерживаются методы, позволяющие добавлять элементы в массив, изымать элементы из массива, а также произвольно увеличивать или уменьшать длину массива. Синтаксис вызова этих методов (использованием переменной IntList): IntList.MethodName(). Для динамических массивов доступны следующие методы:
Переменная Length Динамические массивы имеют переменную, называемую Length, значением которой является текущая длина (количество элементов) динамического массива. Для получения доступа к Length, применительно к нашему массиву IntList используется запись: IntList.Length. Мы можем не только прочитать, но и непосредственно установить значение переменной Length, что позволяет нам изменить количество элементов в массиве. При изменении переменной Length изменяется и длина массива. Например, если мы установим IntList.Length = 5, а затем установим IntList.Length = 10, дополнительные 5 элементов, добавленных последней операцией, добавляются в конец массива с сохранением первоначальных 5 элементов и их значений. Если мы уменьшим длину, то элементы будут сняты с конца массива. Обратите внимание, что при добавлении элементов в массив операцией Insert() или путем увеличения длины, элементы инициализируются в значения по умолчанию для типов переменных (0 для целых, None для ссылок на класс и т.д.). Следует также отметить, что вы можете увеличить длину динамического массива, обратившить по большему индексу, чем текущее значение длины массива. Это позволяет увеличивать массив так же, как если бы вы установили большее значение для Length. OldLength = Array.length Array.Length = OldLength + 1 Array[OldLength] = NewValue
Array[Array.Length] = NewValue
Array.AddItem(NewValue) - это эквивалентные формы одной и той же операции. Заметим, однако, что вы не можете увеличивать длину массива и получать доступ к его членам одновременно. Выражение: Array[Array.length].myStructVariable = newVal не будет работать. Предостережение: переменная Length динамического массива никогда не должна увеличиваться или уменьшаться операторами '++','--','+=' или'-=', и вы не должны передавать Length в функцию в качестве параметра (если функция может изменить ее значение). Выполнение этих операций приведет к утечке памяти и сбоям. Устанавливайте значение Length только через оператор '=' (или через обращение по большему индексу, чем текущее значение длины массива). Обратите внимание: array<bool> не поддерживается! Последнее замечание: динамические массивы не реплицируются. Вы можете обойти это с помощью функции, реплицирующей индексы динамического массива и соответствующие значения элементов. Однако, при этом вы также должны учитывать временное рассогласование между клиентом и сервером.
|
|||||
Последнее изменение этой страницы: 2016-08-25; просмотров: 170; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.222.118.236 (0.01 с.) |