Table of Contents

Начало работы со Stride

На этой странице мы выведем кнопку IcyUI в игре на Stride. Большинство игр на Stride — это проекты Game Studio, поэтому этот путь идёт первым; если игра написана только кодом, переходите к разделу Без Game Studio.

В проекте Game Studio

  1. Создайте проект в лаунчере Stride (Stride 4.4 или новее; подойдёт любой шаблон, например «New Game»).

  2. Добавьте пакет в проект игры MyGame/MyGame.csproj (общий, а не проект платформы):

    dotnet add MyGame/MyGame.csproj package IcyUI.Stride --prerelease
    
  3. Добавьте стартовый скрипт. Создайте в проекте игры файл IcyUIStartup.cs:

    using Icy.Stride.Configuration;
    using Icy.UI.Controls;
    using Stride.Engine;
    
    /// <summary>Add this script to any entity in your startup scene: it sets up IcyUI and shows a button.</summary>
    public class IcyUIStartup : StartupScript
    {
        public override void Start()
        {
            StrideIcyHost ui = Game.UseIcyUI();
            ui.MainCanvas.Add(new Button { Content = "Hello, IcyUI" });
        }
    }
    

    UseIcyUI() подключает IcyUI к игре и рисует интерфейс поверх всего, что рисует сцена. Метод возвращает хост: ui.MainCanvas — это Canvas, на который добавляются элементы, а ui.Configuration хранит все настройки. Настройки по умолчанию загружают встроенную тему и используют системный шрифт Segoe UI. Строка, переданная как содержимое, становится TextBlock.

  4. Прикрепите скрипт. Снова откройте проект в Game Studio и дождитесь перезагрузки скриптов. В стартовой сцене выберите любую сущность (подойдёт камера), затем в панели свойств нажмите Add component и выберите IcyUIStartup.

  5. Запустите игру. Поверх сцены появится кнопка «Hello, IcyUI», реагирующая на мышь и клавиатуру.

Другие скрипты получают тот же интерфейс через Game.GetIcyCanvas() или Game.GetIcyHost().

Без Game Studio

Если вы наследуете собственный класс Game и настраиваете сцену в коде, подключите IcyUI в BeginRun(), когда графический компоновщик уже создан:

using Icy.Stride.Configuration;
using Icy.UI.Controls;
using Stride.Engine;

/// <summary>A code-only game (no Game Studio project): set up IcyUI once the scene system exists.</summary>
public class MyGame : Game
{
    protected override void BeginRun()
    {
        base.BeginRun();

        // Set up your graphics compositor and scene here, before UseIcyUI().
        StrideIcyHost ui = this.UseIcyUI();
        ui.MainCanvas.Add(new Button { Content = "Hello, IcyUI" });
    }
}

UseIcyUI() рисует через SceneSystem.GraphicsCompositor, поэтому к этому моменту он не должен быть null.

Шрифты на других платформах

IcyUI не поставляется со шрифтом: по умолчанию используется Segoe UI из папки шрифтов Windows. На Linux и macOS или чтобы везде использовать свой шрифт, положите файл шрифта в игру (свойство Copy to Output Directory — «Copy if newer») и импортируйте его:

Game.UseIcyUI(ui => ui
    .ConfigureFonts()
    .ImportFont("Fonts/MyFont.ttf")           // copied to the output folder
    .WithDefaultFontFamily("My Font"));        // the family name stored in the file

Не копируйте шрифты Windows в игру: их лицензия не разрешает распространение. Свободные шрифты под лицензией SIL Open Font License, например Noto Sans или Inter, можно поставлять с любой игрой. Если шрифт не найден, IcyUI пишет предупреждение в журнал Stride.

Устранение неполадок

  • Проект создан в Stride 4.3 или старше. IcyUI нацелен на .NET 10. Обновите проект до Stride 4.4 в лаунчере или укажите <TargetFramework>net10.0</TargetFramework> в каждом файле проекта решения (проект платформы Windows может использовать net10.0-windows — сохраните его суффикс).
  • Game Studio не запускается на Windows для ARM64 («no compatible MSBuild found»). Используйте там настройку без Game Studio или редактируйте проект в Game Studio на компьютере x64.
  • Текст не появляется. Найдите в журнале игры предупреждение IcyUI об отсутствующем шрифте; см. Шрифты на других платформах.

Далее

На странице Ваш первый экран кнопка заменяется меню, описанным разметкой.