No history yet

Основы C#

Основы C#

Чтобы создавать игры в Unity, вам нужно общаться с движком на его языке. Основной язык для Unity — это C#. Это мощный и гибкий язык программирования, созданный Microsoft. Не волнуйтесь, если вы никогда не программировали. Мы начнем с самых азов, которые станут вашим фундаментом.

C# является предпочтительным языком для написания сценариев в Unity благодаря простоте изучения, надежности и бесшовной интеграции с движком Unity.

Давайте разберемся в основных концепциях C#, которые вам понадобятся для написания скриптов для ваших игр.

Синтаксис и типы данных

Любой язык, будь то русский или C#, имеет свои правила и грамматику — синтаксис. В C# каждая команда или инструкция обычно заканчивается точкой с запятой (;). Это как точка в конце предложения; она говорит компилятору, что команда завершена. Блоки кода, например, тело функции или класса, заключаются в фигурные скобки {}.

Давайте посмотрим на простейшую программу на C#:

using System;

class Program
{
    static void Main()
    {
        // Этот код выводит сообщение в консоль
        Console.WriteLine("Hello, World!");
    }
}

Чтобы хранить информацию в программе, мы используем переменные. Представьте их как подписанные коробки, в которые можно что-то положить. У каждой переменной есть имя и тип данных, который определяет, какую информацию она может хранить.

Переменная — это именованная область памяти для хранения данных.

Вот основные типы данных в C#:

ТипОписаниеПример
intЦелое число10, -5, 0
floatЧисло с плавающей точкой3.14f, -0.5f
boolЛогическое значениеtrue, false
stringПоследовательность символов"Привет"

Объявление переменной выглядит так: сначала тип, затем имя, и по желанию — начальное значение.

// Объявляем переменные разных типов
int playerScore = 100;
float speed = 5.5f;
bool isGameOver = false;
string playerName = "Alex";

Управление ходом выполнения

Программы не всегда выполняются строго по порядку. Часто нужно принимать решения или повторять действия. Для этого существуют управляющие структуры.

Условные операторы, такие как if-else, позволяют выполнять код только при определённом условии. Это как развилка на дороге: если условие истинно, идем по одной тропе, если ложно — по другой.

int health = 50;

if (health <= 0)
{
    Console.WriteLine("Игра окончена");
}
else
{
    Console.WriteLine("Вы еще в игре!");
}

Циклы нужны для повторения блока кода несколько раз. Самые распространенные — это for и while.

Цикл for отлично подходит, когда вы знаете точное количество повторений.

// Этот цикл выполнится 5 раз
for (int i = 0; i < 5; i++)
{
    Console.WriteLine("Создан враг номер " + i);
}

Цикл while повторяет код, пока условие истинно. Он полезен, когда количество итераций заранее неизвестно.

int bullets = 6;

while (bullets > 0)
{
    Console.WriteLine("Выстрел! Осталось патронов: " + bullets);
    bullets--; // Уменьшаем количество патронов
}

Функции, классы и объекты

Чтобы не писать один и тот же код снова и снова, его можно упаковать в функцию (в C# их чаще называют методами). Метод — это именованный блок кода, который выполняет определенную задачу. Его можно вызвать в любом месте программы по имени.

// Метод для расчета урона
void CalculateDamage(int damageAmount)
{
    int playerHealth = 100;
    playerHealth -= damageAmount;
    Console.WriteLine("Здоровье игрока: " + playerHealth);
}

// Вызываем метод
CalculateDamage(25);

C# — это объектно-ориентированный язык. Это означает, что мы организуем код вокруг "объектов". Объект — это сущность, у которой есть свойства (данные) и поведение (методы).

Шаблоном для создания объектов служит класс. Класс — это чертеж, а объект — это конкретный дом, построенный по этому чертежу. Вы можете построить много домов (объектов) по одному чертежу (классу).

class

noun

Шаблон для создания объектов, описывающий их свойства (переменные) и поведение (методы).

public class Player
{
    // Свойства (переменные)
    public string name;
    public int health = 100;

    // Поведение (метод)
    public void TakeDamage(int amount)
    {
        health -= amount;
        Console.WriteLine(name + " получил урон! Здоровье: " + health);
    }
}

// Создаем два объекта (экземпляра) класса Player
Player player1 = new Player();
player1.name = "Герой";

Player player2 = new Player();
player2.name = "Злодей";

player1.TakeDamage(30);

Две ключевые идеи объектно-ориентированного программирования — это наследование и полиморфизм.

Наследование позволяет создать новый класс на основе существующего, переняв все его свойства и методы. Это помогает избежать дублирования кода. Например, классы Warrior и Mage могут наследовать общие свойства от класса Character.

// Базовый класс
public class Enemy 
{
    public int health = 100;

    public void Attack()
    {
        Console.WriteLine("Враг атакует");
    }
}

// Производный класс, наследует от Enemy
public class Goblin : Enemy
{
    // Goblin автоматически имеет свойство health и метод Attack()
    public void Sneak()
    {
        Console.WriteLine("Гоблин крадется");
    }
}

Полиморфизм — это способность объекта использовать методы родительского класса, но выполнять их по-своему. Например, и Goblin, и Dragon могут иметь метод Attack(), унаследованный от Enemy, но атаковать они будут совершенно по-разному. Это делает код более гибким и организованным.

Полиморфизм позволяет обращаться с разными объектами одинаково, но получать разное поведение в зависимости от их конкретного типа.

Теперь, когда вы знакомы с основами, давайте проверим ваши знания.

Quiz Questions 1/5

Каким символом завершается большинство инструкций в C#?

Quiz Questions 2/5

Что из перечисленного лучше всего описывает "класс" в объектно-ориентированном программировании?

Эти концепции являются строительными блоками для всего, что вы будете делать в Unity. Понимание переменных, циклов, функций и классов — ключ к созданию логики вашей игры.