Как установить фиксированную игровую зону в xaml monogame?

Я создаю моноигру XAML и хочу установить фиксированную игровую зону в SwapChainBackgroundPanel. Я имею в виду, представьте себе: игровой экран (например, 1920 x 1080) и игровая область (например, 1280 x 800) — это только часть этого, а остальное пространство предназначено для различной информации, такой как счет, уровень, опыт и т. д., а также разные кнопки, как на этой картинке:

пример экрана


person Andrey Carter    schedule 06.05.2014    source источник


Ответы (1)


Вы можете установить несколько целей рендеринга для отрисовки вашего пакета спрайтов. Я бы сделал так, чтобы вся ваша игровая логика или область отображались как или возвращали Texture2D желаемого размера. Затем в вашем Game1.cs или где-либо еще вы размещаете эту текстуру соответствующим образом в дополнение к элементам пользовательского интерфейса, которые вы рисуете.

public override Texture2D Draw(SpriteBatch spriteBatch)
    {
        spriteBatch.GraphicsDevice.SetRenderTarget(gameRenderTarget);
        spriteBatch.Begin(SpriteSortMode.FrontToBack, null);
        sky.Draw(spriteBatch);
        ground.Draw(spriteBatch);
        background.Draw(spriteBatch);
        player.Draw(spriteBatch);
        spriteBatch.End();

        return (Texture2D)finalRenderTarget;
    }

Теперь вся область игрового процесса представляет собой текстуру, которой можно манипулировать так же, как и всем остальным в вашей игре! Ваша основная игра может предопределить макет игры, и вы просто визуализируете каждую область по мере необходимости.

Другой вариант — один вызов Draw, в котором вы устанавливаете несколько целей рендеринга и просто передаете предыдущую цель рендеринга для отрисовки в следующем вызове spriteBatch.Draw между spriteBatch.Begin() и spriteBatch.End().

person JedH    schedule 17.05.2014