Для параметров, передаваемых по ссылке, используйте & и при необходимости указывайте направление данных с помощью in, out, inout, например &out.
По умолчанию компилятор ставит inout.
in предназначен для передачи значения в функцию, out для возвращения значения из функции.
Также параметры могут быть объявлены как const, для запрета изменения передаваемого значения.
Обьявление параметров константными увеличивает читабельность кода и уменьшает число копирований данных.
Помните, что функции которые возвращают пользовательские типы, должны описываться после описания типов.
int MyFunction(int a, int b)
{
return a + b;
}
Глобальные переменные доступны всем функциям, если переменная содержит часть памяти, например строку, то данная память будет очищена при перезагрузке модуля или движка.
int MyValue = 0; const uint Flag1 = 0x01;
Переменные примитивных типов инициализируются до не-примитивных. Это позволяет конструкторам классов использовать глобальные переменные в качестве начальных значений. Исключение - когда глобальная переменная не примитивного типа, в данном случае не гарантируется что она инициализируется до класса.
С помошью классов скриптер может создавать новые типы данных с переменными и методами, и манипулировать ими. Классы поддерживают наследование и полиморфизм.
// Описание класса
class MyClass
{
// Конструктор
MyClass()
{
a = 0;
}
// Метод
void DoSomething()
{
a *= 2;
}
// Свойство
int a;
}
// Обьявление интерфейса
interface MyInterface
{
void DoSomething();
}
// Класс, реализующий методы интерфейса
class MyClass : MyInterface
{
void DoSomething()
{
// что-то делаем
}
}
Через запятую можно указывать несколько интерфейсов, от которых будет наследоваться класс.
это позволяет скрипту компилироваться используя данные функции без связывания с ними, связывание произойдет в процессе выполнения.
Если скрипт вызывает функцию, которая еще не связана со скриптом, выполнение скрипта прервется с ошибкой.
import void MyFunction(int a, int b) from "Another module";
Стоит отметить, что значение в переменной данного типа может отличатся от обьявленных.
Значения обьявляются перечислением, без указания специального значения, по умолчанию присваивается значение предудущего + 1, а первое значение будет содержать 0.
enum MyEnum
{
eValue0,
eValue2 = 2,
eValue3,
eValue200 = eValue2 * 100
}
На данный момент их можно использовать только для примитивных типов.
typedef float real32; typedef double real64;