Читайте также:
|
|
В языке UnrealScript вы можете объявлять новые функции и писать новые версии уже существующих (переписывать функции). Функции могут принимать один или несколько параметров (UnrealScript поддерживает переменные любых типов) и, опционально, могут возвращать значение. Хотя большинство функций пишутся непосредственно в UnrealScript, вы также можете объявлять функции, которые могут быть вызваны из UnrealScript, но реализованы на C++ и находятся в DLL. Технология Unreal поддерживает все возможные комбинации вызовов функций: из кода движка на C++ можно вызывать функции сценариев; из сценариев можно вызывать функций, реализованные на C++, и, естественно, из сценариев можно вызывать функции, реализованные в сценариях.
Ниже приведен пример определения простой функции. Эта функция в качестве параметра принимает вектор и возвращает число с плавающей точкой:
// Function to compute the size of a vector.
function float VectorSize(vector V)
{
return sqrt(V.X * V.X + V.Y * V.Y + V.Z * V.Z);
}
Объявление функции всегда начинается с ключевого слова function. За ним следуют тип возвращаемого значения функции (в данном случае float), имя функции, а затем список параметров функции в круглых скобках.
При вызове функции выполняется код, находящийся между фигурными скобками. Внутри функции можно объявлять локальные переменные (с использованием ключевого слова local) и разместить любой код UnrealScript. Необязательное ключевое слово return заставляет функцию немедленно вернуть значение.
В функции вы можете передавать любые типы UnrealScript (в том числе массивы), а функция может возвращать результат любого типа.
По умолчанию, любые локальные переменные, объявляемые в пределах функции, инициализируются нулем.
Вызов функции может быть рекурсивным. Например, следующая функция вычисляет факториал числа:
// Function to compute the factorial of a number.
function int Factorial(int Number)
{
if(Number <= 0)
return 1;
else
return Number * Factorial(Number - 1);
}
Некоторые функции UnrealScript вызываются движком при наступлении определенных событий. Например, когда актора коснулся другой актер, двигатель называет функцию Touch, сообщающую акторы, кто с ним соприкасается. При написании собственной функции Touch, вы можете выполнить необходимые действия, выполняемые при вызове Touch:
// Called when something touches this actor.
function Touch(actor Other)
{
Log("I was touched!")
Other.Message("You touched me!");
}
Вышеприведенная функция иллюстрирует несколько моментов. Во-первых, функция записывает сообщение в лог-файл, используя команду Log (которая эквивалентна командам языка Basic "print" и языка C "printf", за исключением некоторых правил форматирования). Во-вторых, она вызывает функцию "Message", находящуюся в другов акторе. Вызов функций, определенных в других объектах, это распространенное действие в языке UnrealScript (как и в других объектно-ориентированных языках, например в Java), поскольку оно обеспечивает простое средство для "общения" акторов между собой.
Дата добавления: 2015-11-14; просмотров: 48 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Преобразование ссылок на объекты и классы | | | Спецификаторы параметров функций |