2013-12-23 4 views
0

Я делаю игру XNA 4, и я хочу создать контрольно-пропускные пункты для определенных областей на моей сцене. Я решил, что могу создать объект «призрак» объекта игрока, который будет создан всякий раз, когда игрок достигнет контрольной точки. И когда вы захотите перезагрузить эту контрольную точку, вы начнете с того, где этот призрак-плеер. На данный момент я думал, что это будет простой способ достичь этого (хотя я считаю, что XML может быть лучшим решением, но я понятия не имею, как это использовать). Но у игрока слишком много переменных (здоровье, выносливость, боеприпасы, таймер кровотечения, серебряные ключи, золотые ключи, монеты, инфекция, положение, скорость, угол, состояния [вовлекают умирание, заражение, кровотечение, жжение, уклонение и т. Д.), Я просто подумал, что statemets вроде «continuep1 = p1;» (оба являются экземплярами одного и того же объекта) переписывают все переменные в значения, которые содержит другой класс, но когда я попытался перезагрузить «p1 = continuep1», не работает. Кажется, он ничего не делает.Создание контрольных точек в XNA

Так что мне интересно, нужно ли мне повторно назначать ВСЕ переменные один за другим? Должен ли я начинать использовать XML? Или есть способ присваивать все переменные без необходимости делать это один за другим? (Я не прошу код, если только последний вопрос невозможен)

+0

'continuep1 = p1;' присваивает ссылку, он становится тем же самым объектом, поэтому он не будет работать. Помимо копирования всех полей вручную, вы можете использовать отражение или сериализацию для клонирования объекта. Хороший короткий пример использования отражения для мелкой копии можно найти по адресу http://stackoverflow.com/a/8181736/1020861 – neeKo

ответ

1

На мой взгляд, я бы сказал, что вы s, начните использовать xml. Не беспокойтесь об использовании xml, это довольно просто, как только вы обманете его. Отличным способом изучения будет просмотр информации о ваших персонажах в формате xml.

Я думаю, что самым идеальным вариантом было бы сериализовать вашу игру. Таким образом, это включает в себя сохранение состояния вашего персонажа, положения, в котором он находится, направления, с которым он сталкивается (какая текстура загружена в настоящий момент), и статистики (здоровье, проглатывание, кровотечение и т. Д.).

С помощью этого вы можете перезагрузить игру с момента последнего сохранения, когда игрок умрет или когда игра будет следующей. Это позволило бы решить оба случая.

Этот учебник по созданию игры RPG с верхней ничьей в Xna 4 очень хорош, на мой взгляд, и идет хорошо. Многие из методов в этом руководстве применимы не только к этому жанру и стилю игры.

http://xnagpa.net/xna4rpg.php

Часть 11А (Game Editor) является первой частью учебника направляющего читателя в создании редактора для их игр. С помощью этих элементов проекта Winforms, классы, квесты и т. Д. Могут быть добавлены в игру и хранятся в виде файлов Xml. В нижней части страницы 6 и на страницах 7 и 8 описаны методы сериализации и десериализации вашей игры.

В части 11C (редакторе игр), особенно в нижней части страницы 9 и стр. 10. Вводится метод сохранения игры, который сериализует игру. Вы также можете посмотреть новую игру и открыть игровые методы.

Эти методы работают с классами DataManager, которые хранят элементы, классы и т. Д. В Dictionary. Это может быть то, как вы хотите смоделировать свою игровую информацию, если бы код в этих руководствах, возможно, не был изменен для работы с вашим решением.

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

Надеюсь, это помогло и что вы цените руководство в правильном направлении, а не только за ответ. Кроме того, это не задача, которая в любом случае была бы решена одним способом.

Сообщите мне, как вы поживаете, и я был бы рад помочь вам больше.

+0

ах, я проверю, что один из них, я использовал файл .txt для создания своих карт, Я думаю, что все, что вы описали, было бы еще лучше. Я предполагаю, что это приведет к повторной настройке кода снова и снова? Если это так, я думаю, что я закончу эту игру так, как сейчас, и начните заново с этого нового метода. Но спасибо! Я уверен, что могу найти там много полезной информации! : D – Roman

+0

Рад, что я мог бы помочь. Это действительно хороший учебник. Я думаю, вы могли бы быстро прочитать его и принять части из него. Я последовал за ним полностью, как если бы раньше занимался графическим/игровым программированием, я никогда не делал этого с XNA. Кроме того, в проектах в этом руководстве представлен общий класс двигателей RPG, полезный для следующей игры! – tjheslin1

Смежные вопросы