2014-10-08 2 views
-2

Моя проблема немного сложнее, чем заголовок: У меня есть класс GUIController, который управляет графическим интерфейсом, и я хочу создать меню покупки в игре. В этом меню я могу выбирать из оружия, и я могу купить их, если у меня будет достаточно денег. Мне нужно получить доступ к их данным, таким как цена, описание или имя.Как получить доступ к классу, который унаследован от monobehaviour

Проблемы:
-Чтобы получить доступ к своим данным, мне нужно создать экземпляр объекта из класса (функция запуска должна запускаться до доступа к данным).
- Основной класс оружия унаследован от MonoBehaviour, поэтому я не могу создать экземпляр объекта из класса.

Возможное решение:
-Я могу создать экземпляр объекта игры, который содержит класс в качестве компонента сценария, а затем я мог бы получить доступ к его данным. Я думаю, что это не очень хорошее решение.

Вопрос:
Должен ли я хранить информацию в другом месте? В местном ДБ или что-то еще? Я думал, что хранить информацию внутри класса - хорошая идея, но я не уверен, что больше.

Благодарим вас за ответы!

+0

Вы можете показать структуру классов ..? – MethodMan

ответ

0

EDIT: Учитывая вашу иерархию классов, статическое предложение переменной явно не сработает. Отредактировано, чтобы дать другое возможное решение.

Вы можете создать новый класс для свойств Weapon и сделать экземпляры его для каждого типа оружия. Они могут быть заполнены из кода, базы данных, файлов конфигурации и т. Д. При построении экземпляра определенного Weapon вы можете присвоить ему объект свойств и скопировать значения всех свойств. Это можно сделать с помощью рефлексии, чтобы вы могли написать задание для каждого свойства.

Объекты свойств оружия могут быть сделаны и доступны по-разному. Одно из предложений заключалось бы в том, чтобы иметь репозиторий, который можно было бы использовать для получения ссылки на объект (если они являются одиночными) или вернуть новый.

Кстати, это довольно широкий вопрос, и «правильный» ответ может зависеть от того, сколько данных у вас есть и как вы собираетесь использовать его, или, может быть, это вопрос наилучшей практики. Таким образом, он, возможно, лучше подходит для programmers.stackexchange.com или gamedev.stackexchange.com.

+0

Иерархия классов выглядит следующим образом: http://i.imgur.com/t9BRHsr.jpg Я установил цену в функции «Начать» класса USP, например. Поскольку член Price объявлен в классе Weapon, я не могу установить его в static. – ithuriel89

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