danilaxxl danilaxxl

CollectableItemData.cs

[CreateMenuItem(fileName = "newItem", menuName = "Data/Items/Collectable", order = 51]

GoloGames GoloGames

vadya_ivan, рад, что вам игра показалась интересной : )

P.S. Кстати уже доступна бесплатная демо-версия в Steam

vadya_ivan vadya_ivan

Визуал, задумка, музыка , механики, все в цель

GoloGames GoloGames

Ato_Ome, спасибо за позитивные эмоции, будем стараться : )

Ato_Ome Ato_Ome

Потрясающий результат, все так четенько, плавненько)
То ли саунд, то ли плавность напомнили мне игрушку World of Goo, удачи вам в разработке и сил побольше дойти до релиза!)

Cute Fox Cute Fox

Graphics are a little cool, good HD content. But this game doesn't cause nary interest me.
However the game is well done.

GMSD3D GMSD3D

Почему действие после всех условий выполняется?
[step another object]

Zemlaynin Zemlaynin

Jusper, Везде, но наугад строить смысла нет. Нужно разведать сперва территорию на наличие ресурсов.

Jusper Jusper

Zemlaynin, а карьеры можно будет везде запихать?
Или под них "особые" зоны будут?

Zemlaynin Zemlaynin

Это так скажем тестовое строительство, а так да у города будет зона влияния которую нужно будет расширять.

Jusper Jusper

А ссылка есть?

Jusper Jusper

Я не оч понял из скриншота, как вообще работает стройка. У игрока будет как бы поле строительства?

split97 split97

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

split97 split97

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

ViktorJaguar ViktorJaguar

Почему я нигде не могу найти нормальный туториал, где покажут как экипировать предмет (например, меч) в определенную (выделенную под оружие) ячейку???

Логотип проекта Программирование

Новведения в C# 6.0

Новведения в C# 6.0 — Программирование — DevTribe: инди-игры, разработка, сообщество

Недавно Microsoft предоставили превью новой версии Visual Studio 2015 и .NET 4.6 для разработчиков. Новая версия .NET содержит новый стандарт C# 6.0, в котором появились некоторые интересные возможности. В этой новости я постараюсь в кратце рассказать о них.

Инициализация свойст со значением по умолчанию

Самая часто используемая функциональность в C# - написание автосвойств. Но, к сожалению, у них был принципиальный недостаток - не было возможности задать значение по умолчанию, и тут приходилось либо отказываться от автосвойства, либо использовать конструктор по-умолчанию, чтобы проинициализировать данные свойства. C# 6.0 решает данную проблему.

csharp - Старый стиль
public class A
{
    public int Id { get; set; }
    public string Name { get; set; }
    
    public A() {
        Id = 5000;
        Name = "Special Name";
    }
}
sharp - Новый стиль
public class A
{
    public int Id { get; set; } = 5000;
    public string Name { get; set; } = "Special Name";
}

Интеграция аргументов в строку

Самый распространнеый метод, который используется для создания форматированных строк это string.Format. В большинстве случаев очень удобно использовать аргументы внесенные отдельно, а наличие ReSharper'а помогает разобраться где и что расположено. Но в C# 6.0 появилась интересная особенность, которая позволяет использовать аргументы непосредственно в самой строке.

csharp - Старый стиль
DisplayName = string.Format("{0}, {1} [{2}] at {3}", emp.FirstName, emp.SecondName, emp.Status, emp.LocationName);
csharp - Новый стиль
DisplayName = "\{emp.FirstName}, \{emp.SecondName} [\{emp.Status}] at \{emp.LocationName}";

Замечание: синтаксис выше работает в превью версии, однако Microsoft собирается поменять синтаксис строки на такой:
((code csharp
DisplayName = $"{emp.FirstName}, {emp.SecondName} [{emp.Status}] at {emp.LocationName}";
))

Использование лямбда выражений для маленьких функций

В C# 6.0 теперь появилась возможность избавиться от написание громоздких конструкций для методов, которые возвращали простые значения, например:

csharp - Старый стиль
public string[] GetAvaliableNames()
{
    return new string[] { "Alexey", "Andrey", "Maxim", "Evgeniy" };
}
csharp - Новый стиль
public string[] GetAvaliableNames() => new string[] { "Alexey", "Andrey", "Maxim", "Evgeniy" };

Импорт статичных классов

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

csharp - Старый стиль
public static double Distance(double x1, double y1, double x2, double y2)
{
    var dx = x1 - x2;
    var dy = y1 - y2;
    return Math.Sqrt(Math.Pow(dx, 2) + Math.Pow(dy, 2));
}
csharp - Новый стиль
using System.Math;
// ...
public static double Distance(double x1, double y1, double x2, double y2)
{
    var dx = x1 - x2;
    var dy = y1 - y2;
    return Sqrt(Pow(dx, 2) + Pow(dy, 2));
}

Nullable операторы

В C# 6.0 ввели два Nullable оператора ?. и ?:. Данные операторы обеспечивают более простую работу с условими для работы с объектами, которые могут иметь значение null.

csharp - Старый стиль
string location = emp == null ? null : emp.Location;
string departament = emp == null ? null : (emp.Departament == null ? null : emp.Departament.Name);
csharp - Новый стиль
string location = emp?.Location;
string departament = emp?.Departament?.Name;

Выражение nameof

Еще одна из интересных возможностей новой спецификации языка. Раньше при необходимости использовании имен свойств в коде ( например при работе с XAML и WPF ) приходилось создавать строковые константы для этого или писать специальные утилитные методы, которые бы преобразовывали выражения в имена свойств. Сейчас же достаточно просто использовать новое выражение nameof, который вернет имя свойства, метода, класса и т.д.

csharp - Пример
    var emp = new Employee()
    {
        Id = 1,
        Age = 20,
        Location = "Russia",
        Name = "Alexey",
        Department = new Department()
        {
            Id = 1,
            Name = "IT"
        }
    }; 

    Response.Write(emp.Location); //Результат: Russia
    Response.Write(nameof(Employee.Location)); //Результат: Location

Фильтр исключений

Еще одна из ключевых особенностей в новой спецификации - это фильтрация исключений ( "пожалуй это моя любимая особенность теперь будет :3" alexprey ). Благодаря этому теперь можно отлавливать исключения не только по их типу, но так же и добавлять дополнительные проверки, что сделает код более гибким и удобным, а так же избавит от лишних throw;

csharp - Пример
try {
    // Some code
} 
catch (ApiMethodException ex) if (ex.InnerException != null)
{
    // Crash application and notify system admins
}
catch (ApiMethodException ex) if (ex.IsHasParameters) 
{
    // Notify end-user about exception
}
catch (ApiMethodException ex)
{
    // Notify end-user about exception
}
catch (ApiMethodException ex) 
{
    // Log into general logs
}

Инициализация словарей

В C# 6.0 добавили новый способ инициализации словарей данных, теперь это происходит намного удобнее, чем было раньше

csharp - Старый стиль
var map = new Dictionary<string, string>
{
    { "key1", "value1" },
    { "key2", "value2" }
}
csharp - Новый стиль
var map = new Dictionary<string, string>
{
    ["key1"] = "value1",
    ["key2"] = "value2"
}

Смотрите также:


Комментарии



  • 1
  • 2 (Текущая страница)

ScorpioT1000, http://tsya.ru отличный сайт! Но в тексте всего одна ошибка на тся/ться и пара на согласование, ничего криминального.

ScorpioT1000, прости, у меня вечно проблема с этим, но я честно старался ((
Покажете, я исправлю

функциональность в C# является написание

Но_ к сожалению_ у них

был принципиальный недостаток, не было возможности // не тот знак

В целом_ в большинстве

разобраться_ где и что расположено

возможность избавится // опять не попал

особенностей в новой спецификации, это // не тот знак

намного удобнее_ чем

ScorpioT1000, спасибо, исправил

Когда всё зависит от решений одной компании, это ненадёжно. Захочет Майкрософт через год все стандарты си-шарпа поменять, и бегай, исправляй программу.

sb3d, существует такое понятие как обратная совместимость

ПС. Кое кто выложил исходники ядра CLR :3 //
  • 1
  • 2 (Текущая страница)
Справка