У всех разработчиков на MonoGame одна из главных целей — выпустить свою игру на максимальном количестве платформ. При этом затратить меньшее количество ресурсов, как на само разработку, так и поддержку игры в дальнейшем. Использование при разработке на все платформы одних и тех же инструментов, несомненно позволяет сэкономить не мало времени. А такая мощная среда, как Visual Studio, позволяет не только в одном месте вести разработку, но и в один клик переключаться между платформами. Но в текущей версии MonoGame официально поддержка Visual Studio при...
Метка: .net
Статья освещает не очевидные решения многих проблем возникающих при работе с MonoGame на Windows phone 8. При использование SoundEffect на WP8 возникает ошибка TypeInitializationException В инсталлятор забыли положить файл SharpDX.WP8.winmd, поэтому придется компилировать библиотеку самим. Рекомендую собирать из в ней уже исправлено множество багов, которые есть в основной ветке. Падение приложения в WP8 при переключения на другое и обратно(Resume) Исправлено в Определение разрешения экрана устройства...
Модуль авторизации ВКонтакте имеет две функции: Получения токена для работы с VK API — Login Аннулирование токена — Logout Пример использования Скачать пример Login 1 2 3 4 5 6 7 8 9 //инициализация var auth = new VKAuth(); auth.LoginCompleted += (token, userId) => MessageBox.Show(token); auth.ServerError += () => MessageBox.Show("error"); //задаем права доступ var scope = "offline, friends, wall"; //вызов auth.LoginAsync(this, AppID, scope); //инициализация var auth = new VKAuth(); auth.LoginCompleted += (token, userId) => MessageBox.Show(token); auth.ServerError += () => MessageBox.Show("error"); //задаем права доступ var scope = "offline, friends...
Для имитации неба, дождя, дороги и других различных объектов на заднем фоне, можно использовать со всех сторон зацикленные текстуры(loopable texture). Ниже приведена реализация использования зацикленных текстур в качестве фона, который непрерывно двигаются снизу вверх. При комбинирование нескольких таких фонов, можно добиться интересных parallax-эффектов. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 //зацикленный фон class LoopableBackground ...
Стандартный способ оповещения пользователя о загрузке данных программой из интернета является индикатор из бегающих кубиков сверху экрана(ProgressBar). Чтобы не добавлять на каждую страницу ProgressBar и не передавать состояния загрузки из разных мест на индикатор, можно сделать «глобальную» для всего приложения загрузку. Сам класс GlobalLoading приведен ниже: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 public class GlobalLoading : INotifyPropertyChanged { ...
Добавляя UIElement на карту из Bing SDK обычно используют конструкцию вида: 1 2 3 4 5 6 7 8 UIElement control; //... MapLayer.SetPosition(control, position); MapLayer.SetPositionAnchor(control, new Point(0, 0)); map.Children.Add(control); UIElement control; //... MapLayer.SetPosition(control, position); MapLayer.SetPositionAnchor(control, new Point(0, 0)); map.Children.Add(control); Подробнее по методам MapLayer.SetPosition( DependencyObject dependencyObject, Location location) устанавливает позицию UIElement в географических координатах на карте. MapLayer.SetPositionAnchor( DependencyObject dependencyObject, Point positionAnchor) устанавливает какую именно точку UIElement зафиксировать на карте в location из предыдущего метода...
Многие по тем или иным причинам выбирают карты OpenStreetMap, но готовых решений для WinRT нету. Выход простой: используем Bing SDK и переправляем запросы на изображения карты с Bing сервера на сервер OSM. Делается это при инициализации страницы с контролом Map так: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 //создаем слой тайлов MapTileLayer layerOSM = new MapTileLayer(); //перенаправляем загрузку на сервер OSM layerOSM.GetTileUri += (s, e) => { e.Uri = new Uri(string.Format("{0}/{1}/{2}.png", e.LevelOfDetail, e.X, e.Y)); }; //добавляем слой к карте map.TileLayers.Add(layerOSM); //выключаем посторонние слои на...