🏠 Главная

🧩 Функции в Юнити

Функции (или методы) в Unity — это способ организовать код в отдельные блоки, чтобы было понятнее, удобнее и надёжнее. Если ты хочешь, чтобы один и тот же набор действий выполнялся в разных местах — можно вынести его в отдельную функцию и просто вызывать при необходимости.

Вместо того чтобы писать одни и те же строки снова и снова, ты создаёшь функцию один раз, а потом вызываешь её по имени. Это экономит время, делает код чище и позволяет легче находить ошибки.

Функции могут выполнять действия (например, прыгнуть, вылечить игрока, включить звук) или возвращать значения (например, посчитать очки или проверить, жив ли враг). А ещё в них можно передавать параметры — например, сказать «прибавь 5 к здоровью» или «создай 3 врагов».

В Unity ты можешь использовать как встроенные функции (например, Start() и Update()), так и писать свои собственные. Именно это мы сейчас и научимся делать — просто и по шагам.

✨ Как создать свою функцию

Функция в Unity — это блок кода, который выполняет определённое действие. Чтобы создать такую функцию, нужно написать её внутри класса, но вне других функций. Обычно мы пишем их рядом с Start() или Update(), в теле скрипта.

Каждая функция состоит из четырёх частей: возвращаемого типа (например, void), имени, круглых скобок для параметров (даже если их нет), и фигурных скобок, в которых находится сам код.

Например, можно создать функцию Jump(), которая будет отвечать за прыжок персонажа. А можно — HealPlayer(int amount), которая добавляет здоровье. Всё зависит от задачи — главное, что ты сам управляешь тем, что будет происходить внутри функции и когда она будет вызвана.

✅ Void-функция (ничего не возвращает)

Если функция просто выполняет действие и не возвращает никакое значение, она обозначается словом 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.