🏠 Главная

Переменные в Юнити

Переменные — это способ хранить информацию в скриптах. Они позволяют задавать значения, которые может использовать игра: например, скорость игрока, количество жизней или имя персонажа. Благодаря переменным объекты в игре могут запоминать и изменять своё состояние.

У переменных есть имя — оно позволяет ссылаться на значение в коде. Имена переменных могут содержать буквы, цифры и подчёркивания, но не могут начинаться с цифры и совпадать с ключевыми словами языка. Обычно используют понятные имена, вроде score или playerHealth. Переменные можно объявлять внутри методов (только для этого блока) или на уровне всего класса — тогда они доступны во всех методах. Например, переменная tmp может использоваться внутри Start для временного хранения данных, а переменная уровня класса — для постоянной информации, такой как здоровье игрока или ссылка на объект.

Также важно, кто может получить доступ к переменной. Если перед переменной указано public, её значение можно редактировать прямо в инспекторе Unity — это удобно для настройки без изменения кода. К такой переменной можно обратиться и из другого скрипта. Если используется private (по умолчанию), переменная доступна только внутри самого скрипта.

💡 Если не указать модификатор доступа, переменная по умолчанию считается private. Это значит, что она доступна только внутри этого скрипта. Тем не менее, писать private явно — хорошая привычка: код становится понятнее.
PS: Хотя, честно говоря, кто вообще любит лишнюю работу, дописывая private? 😊

Дальше мы покажем основные типы переменных, которые чаще всего используются в Unity.

int

int используется для хранения целых чисел — без дробной части. Такие переменные удобно применять для счёта очков, количества жизней, патронов и других числовых значений.


using UnityEngine;

public class CSharpScript : MonoBehaviour
{
    // Целочисленные переменные
    public int score = 0;
    public int lives = 3;
    private int health = 10;
    private int bullets = 30;
    //тоже private
    int flowersInTheBag = 1;

    // Start вызывается один раз при запуске объекта
    void Start()
    {
        int tmpHealth = health;
    }

    // Update вызывается каждый кадр
    void Update()
    {
        
    }
}
  

float

float используется для хранения чисел с дробной частью. Такие переменные удобно применять для значений вроде скорости, урона, таймеров или координат. В Unity часто используются float для расчётов движения, а также при работе с физикой и анимацией.


using UnityEngine;

public class CSharpScript : MonoBehaviour
{
    // Дробные переменные
    public float speed = 5.5f;
    float jumpHeight = 2.2f;
    float damage = 1.75f;
    float timeToExplode = 3.0f;

    // Start вызывается один раз при запуске объекта
    void Start()
    {
        
    }

    // Update вызывается каждый кадр
    void Update()
    {
        float tmpSpeed = speed;
    }
}
  

bool

bool (булева переменная) может хранить только два значения: true (истина) или false (ложь). Внутри компьютера это обычно представляется как 1 и 0 соответственно. Такие переменные удобно использовать для проверки состояний: например, жив ли игрок, нажата ли кнопка, включён ли свет и т.д.


using UnityEngine;

public class CSharpScript : MonoBehaviour
{
    // Логические переменные
    bool isAlive = true;
    bool hasKey = false;
    bool isGamePaused = false;

    // Start вызывается один раз при запуске объекта
    void Start()
    {
        bool tmpAlive = isAlive;
    }

    // Update вызывается каждый кадр
    void Update()
    {
      
    }
}
  

string

string используется для хранения текста — слов, фраз, символов. Такие переменные удобно применять для имён игроков, сообщений, диалогов и любых других строковых данных. Текст заключается в двойные кавычки: "...".


using UnityEngine;

public class CSharpScript : MonoBehaviour
{
    // Строковые переменные
    string playerName = "Kiava";
    string greeting = "Привет, игрок!";
    string levelName = "Лесная долина";

    // Start вызывается один раз при запуске объекта
    void Start()
    {
        //вывод в консоль: Привет, игрок! Твоё имя: Kiava
        Debug.Log(greeting + " Твоё имя: " + playerName);
    }

    // Update вызывается каждый кадр
    void Update()
    {
      
    }
}
  

Vector3

Vector3 — это тип переменной, который хранит координаты в трёхмерном пространстве: по осям X, Y и Z. Unity по умолчанию работает в 3D, где X — влево-вправо, Y — вверх-вниз, а Z — вперёд-назад.

Если ты создаёшь 2D-игру, Unity всё равно использует 3D-сцену, просто Z часто остаётся равным нулю. Для удобства есть отдельный тип Vector2, содержащий только X и Y.


using UnityEngine;

public class CSharpScript : MonoBehaviour
{
    // Векторные переменные
    Vector3 startPosition = new Vector3(0f, 1f, 0f);
    Vector3 jumpForce = new Vector3(0f, 5f, 0f);

    // Start вызывается один раз при запуске объекта
    void Start()
    {
        transform.position = startPosition;
    }

    // Update вызывается каждый кадр
    void Update()
    {
      
    }
}