Функции (или методы) в Unity — это способ организовать код в отдельные блоки, чтобы было понятнее, удобнее и надёжнее. Если ты хочешь, чтобы один и тот же набор действий выполнялся в разных местах — можно вынести его в отдельную функцию и просто вызывать при необходимости.
Вместо того чтобы писать одни и те же строки снова и снова, ты создаёшь функцию один раз, а потом вызываешь её по имени. Это экономит время, делает код чище и позволяет легче находить ошибки.
Функции могут выполнять действия (например, прыгнуть, вылечить игрока, включить звук) или возвращать значения (например, посчитать очки или проверить, жив ли враг). А ещё в них можно передавать параметры — например, сказать «прибавь 5 к здоровью» или «создай 3 врагов».
В Unity ты можешь использовать как встроенные функции (например,
Start()
и Update()
), так и писать свои
собственные. Именно это мы сейчас и научимся делать — просто и по шагам.
Функция в Unity — это блок кода, который выполняет определённое
действие. Чтобы создать такую функцию, нужно написать её
внутри класса, но
вне других функций. Обычно мы пишем их рядом с
Start()
или Update()
, в теле скрипта.
Каждая функция состоит из четырёх частей:
возвращаемого типа (например, void
),
имени, круглых скобок для параметров
(даже если их нет), и фигурных скобок, в которых
находится сам код.
Например, можно создать функцию Jump()
, которая будет
отвечать за прыжок персонажа. А можно —
HealPlayer(int amount)
, которая добавляет здоровье. Всё
зависит от задачи — главное, что ты сам управляешь тем, что будет
происходить внутри функции и когда она будет вызвана.
Если функция просто выполняет действие и
не возвращает никакое значение, она обозначается
словом void
. Такие функции удобны, когда нужно просто
что-то сделать — например, показать сообщение или воспроизвести звук.
using UnityEngine;
public class CSharpScript : MonoBehaviour
{
// Start вызывается один раз при запуске объекта
void Start()
{
SayHello();
}
// Update вызывается каждый кадр
void Update()
{
}
void SayHello()
{
Debug.Log("Привет, Unity!");
}
}
Здесь мы создали функцию SayHello()
, которая выводит
текст в консоль. Мы вызываем её из Start()
, чтобы она
сработала при запуске. Такие функции — основа организации кода: они
делают его аккуратным и читаемым.
Функции могут принимать параметры — дополнительные данные, которые ты передаёшь при вызове. Это делает функцию более гибкой: она может вести себя по-разному в зависимости от входных значений.
using UnityEngine;
public class CSharpScript : MonoBehaviour
{
// Start вызывается один раз при запуске объекта
void Start()
{
HealPlayer(10);
}
// Update вызывается каждый кадр
void Update()
{
}
void HealPlayer(int amount)
{
Debug.Log("Лечим игрока на " + amount + " очков здоровья");
}
}
Мы создали функцию HealPlayer
, которая принимает один
параметр amount
. При вызове HealPlayer(10)
в
консоли появится сообщение о лечении на 10 единиц. Можно вызывать ту
же функцию с другими числами — и поведение будет разным.
Чтобы вызвать функцию, просто напиши её имя и круглые
скобки. Если у неё есть параметры — передай нужные значения внутрь.
Вызов можно делать из Start()
, Update()
или
другой функции.
В прошлых примерах мы уже вызывали функции — SayHello()
и
HealPlayer(10)
. Это и есть вызов. Без него функция не
выполнится — она просто будет существовать в коде.
Иногда нужно, чтобы функция
что-то посчитала и вернула результат. Для этого
вместо void
указываем тип возвращаемого значения —
например, int
или bool
. Такая функция может
быть использована как часть другого выражения.
using UnityEngine;
public class CSharpScript : MonoBehaviour
{
// Start вызывается один раз при запуске объекта
void Start()
{
int score = GetScore();
Debug.Log("Текущий счёт: " + score);
}
// Update вызывается каждый кадр
void Update()
{
}
int GetScore()
{
return 42;
}
}
Здесь функция GetScore()
возвращает число. Мы сохраняем
это число в переменную и выводим его в консоль. Такие функции особенно
полезны, когда тебе нужно получить результат — например, позицию
объекта, здоровье игрока или флаг true/false
.