Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
А приведенный в статье способ масштабирования меня просто убил. Это же просто растяжение под размеры экрана, которое не учитывает пропорции.
На мой взгляд, лучшим способом масштабирования является использование единого глобального коэффициента, вычисляемого как отношение максимального размера к текущему
Чувствуется, что Monogame слизан с Flash. При том криво.
public abstract class AbstractScene
{
public abstract void Draw();
public abstract void Update();
}
public class StringScene : AbstractScene
{
public StringScene(string text)
{
this.Text = text;
}
public string Text { get; set; }
public override void Draw()
{
//...
}
public override void Update()
{
//...
}
}
public class IntScene : AbstractScene
{
public IntScene(int number)
{
this.Number = number;
}
public int Number { get; set; }
public override void Draw()
{
//...
}
public override void Update()
{
//...
}
}
//...
public class Game1 : Game
{
private AbstractScene scene;
protected override void Initialize()
{
this.scene = new StringScene("Ima scene"); // инициализировать логично сценой меню или загрузки.
base.Initialize();
}
protected override void Update(GameTime gameTime)
{
this.ReadKey(); // операции ввода и апдейт мира - две независимые операции. Интересно, кстати,
this.scene.Update(); // почему они не разделены на уровне движка?
base.Update(gameTime);
}
protected override void Draw(GameTime gameTime)
{
this.scene.Draw();
base.Draw(gameTime);
}
private void ReadKey()
{
if (Keyboard.GetState().IsKeyDown(Keys.S))
{
scene = new StringScene("Ima scene");
}
if (Keyboard.GetState().IsKeyDown(Keys.I))
{
scene = new IntScene(1);
}
}
}
Основной минус подхода, предложенного в статье — это то упущение, что ничто — кроме голоса совести — не мешает мне поменять местами в свичах вызовы методов.
Создаем мобильную игру на Monogame, решая типичные проблемы начинающего разработчика