Настройки игры XNA/C# (меню?)

Я впервые пытаюсь сделать что-то действительно интересное на С#, и я пытался создать простую форму или игровой экран, где пользователь мог бы определить собственное разрешение/соотношение экрана и т. д., или автоматически определить максимальный размер экрана/соотношение и вывод? это моя первая игра, поэтому мне было интересно, возможно ли это или будут ли какие-либо серьезные проблемы с таким, а не просто установить его на 1366x768 (разрешение всех моих компьютеров). Спасибо заранее за любую помощь.


person PCAddict    schedule 25.03.2010    source источник


Ответы (2)


Вы можете перечислить по умолчанию GraphicAdapter DisplayModeCollection, чтобы найти ссылку DisplayMode с максимальным соотношением ширины/высоты/пропорций.

Что-то типа:

GraphicsAdapter defaultAdapter = GraphicsAdapter.DefaultAdapter;
DisplayMode maxMode = defaultAdapter.DisplayModeCollection[0];
foreach (DisplayMode enumeratedDisplay in defaultAdapter.DisplayModeCollection)
{
    //Test enumeratedDisplay against maxMode, setting maxMode to enumeratedDisplay if enumeratedDisplay is better
}

Может быть, есть лучший способ, но это, безусловно, один из способов найти максимум.

Или вы можете взять тот же DisplayModeCollection и заполнить своего рода comboBox или список, позволяя пользователю выбирать для себя.

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

person Bob    schedule 25.03.2010
comment
Это большое спасибо, мне было интересно, могу ли я подключить Windows, чтобы пользователь мог выбрать разрешение экрана и соотношение сторон, запускать ли его в окне или в полноэкранном режиме и т. д., но я не уверен, как сохранить настройки и загрузить их в игру, если форма была отдельным приложением, я хотел бы посмотреть на альтернативные решения, из-за использования несколько раз, я думаю, что это может быть проще, так как я мог бы заставить другие игры считывать те же данные настроек из форме или файле, который он создает таким образом. - person PCAddict; 26.03.2010
comment
Технически вы можете подключить WinForms... но это сложно. Я бы порекомендовал создать свой собственный игровой интерфейс и просто сохранить выбор в файл. - person Bob; 26.03.2010

Просто установите PreferredBackBuffer на 1366x768, и если графическое устройство поддерживает это разрешение, вы его получите. иначе вы получите что-то уменьшенное. xbox автоматически масштабируется, если это необходимо для поддержки используемого телевизора.

person Joel Martinez    schedule 25.03.2010
comment
Я хотел сделать его изменчивым, чтобы мои друзья могли также играть / тестировать на разных системах. это был вопрос о создании формы конфигурации или меню в самой игре. - person PCAddict; 25.03.2010
comment
Я считаю, что вы можете просто изменить предпочтительный задний буфер в любое время. Таким образом, вы можете легко сделать пункт меню, который изменит это :-) - person Joel Martinez; 25.03.2010