Вторник, 26 Ноября 2024, 12:21

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Unknow variable или то, как я стал психом.
RomaN72Дата: Суббота, 11 Апреля 2015, 22:12 | Сообщение # 1
частый гость
Сейчас нет на сайте
Есть 3 объекта. Свой юнит, враг, контроллер. Я присваиваю им ID.
В создании врага:
Код

ID_enemy=global.enemy_numb+1
global.enemy_numb+=1

В создании своего юнита:
Код

ID_enemy=global.squad_numb+1
global.squad_numb+=1


Соответственно переменные global.squad_numb и global.enemy_numb записаны в контроллере.
При включении игры вылетает ошибка, мол, не знает система такой переменной как global.enemy_numb.
И главное то , что это только с врагом в независимости от времени создания объекта. Из-за чего это может быть?
Я даже представить себе не могу, как мне это исправить...
P.S. Тысячу раз переставлял объекты в комнате.



SkorpyXДата: Суббота, 11 Апреля 2015, 22:36 | Сообщение # 2
участник
Сейчас нет на сайте
RomaN72, попробуй в create написать:
Код

global.squad_numb = 0;
global.enemy_numb = 0;
EfimovMaxДата: Суббота, 11 Апреля 2015, 22:41 | Сообщение # 3
заслуженный участник
Сейчас нет на сайте
SkorpyX дело говорит, объяви переменные в контроллере.

Текущий проект: The Experiment ☭

Выпущенные проекты Steam:
Princess.Loot.Pixel.Again
Princess.Loot.Pixel.Again x2
Dungetris


Сообщение отредактировал EfimovMax - Суббота, 11 Апреля 2015, 22:42
RomaN72Дата: Воскресенье, 12 Апреля 2015, 14:39 | Сообщение # 4
частый гость
Сейчас нет на сайте
"Соответственно переменные global.squad_numb и global.enemy_numb записаны в контроллере."



Сообщение отредактировал RomaN72 - Воскресенье, 12 Апреля 2015, 14:40
KwantДата: Воскресенье, 12 Апреля 2015, 15:41 | Сообщение # 5
почетный гость
Сейчас нет на сайте
Как мне кажется, проблема в том, что используется комната, где всё лежит в одной куче.

Предположим, что вы создали 3 объекта в комнате и если я спрошу в каком порядке они были созданы приложением во время запуска, то вы точно сможете ответить на этот вопрос? Что именно контроллер был первым, вместе с переменными глобальными.

Как решение, советую попробовать сделать так:
1. Создать ещё одну комнату - для инициализации;
2. Разместить там объект контроллера и установить ему флаг "Постоянный";
3. Как только всё нужное будет сделано, то контроллер перемещает нас в игровую комнату, при этом никуда не исчезает из-за выставленного флага выше.
RomaN72Дата: Воскресенье, 12 Апреля 2015, 17:53 | Сообщение # 6
частый гость
Сейчас нет на сайте
Если честно, ты заставил сделать меня меню). Все отлично работает , и я понял что ГМ создает объекты вне очереди их расположения в комнате. Спасибо.

EfimovMaxДата: Воскресенье, 12 Апреля 2015, 18:00 | Сообщение # 7
заслуженный участник
Сейчас нет на сайте
Насколько я знаю, при старте комнаты объекты создаются в том порядке, в котором они расположены в редакторе.



Текущий проект: The Experiment ☭

Выпущенные проекты Steam:
Princess.Loot.Pixel.Again
Princess.Loot.Pixel.Again x2
Dungetris


Сообщение отредактировал EfimovMax - Воскресенье, 12 Апреля 2015, 18:05
YellowAfterlifeДата: Понедельник, 13 Апреля 2015, 05:18 | Сообщение # 8
Сейчас нет на сайте
Цитата EfimovMax ()
Насколько я знаю, при старте комнаты объекты создаются в том порядке, в котором они расположены в редакторе.

Не всегда. На порядок создания так же влияет порядок расстановки в комнате и порой другие факторы, в связи с чем не так давно в программу был добавлен данный диалог (открывается из вкладки Settings, как показано):

Это позволяет настроить порядок создания "наверняка".


XDominatorДата: Понедельник, 13 Апреля 2015, 12:19 | Сообщение # 9
постоянный участник
Сейчас нет на сайте
Пропиши

Код

global.squad_numb = 0;
global.enemy_numb = 0;


в room -> settings -> Creation code (на скрине выше видно кнопку)
Вообще я с некоторых пор стал только там писать все действия, которые относятся к инициализации.


Ghaarp

The soul lighter(Android, logic)

Zzzzombie RAGE!!!(For android)


Сообщение отредактировал XDominator - Понедельник, 13 Апреля 2015, 12:20
AnthemДата: Понедельник, 13 Апреля 2015, 16:34 | Сообщение # 10
Д'Артаньян
Сейчас нет на сайте
Цитата XDominator ()
Вообще я с некоторых пор стал только там писать все действия, которые относятся к инициализации.

Если в комнате есть объекты с этими переменными, то это не поможет, т.к. код создания выполняется одновременно с созданием объектов


Текстовый контент для вашей игры (бесплатно)
Сценарист, геймдизайнер для Вашей игры
XDominatorДата: Пятница, 17 Апреля 2015, 12:17 | Сообщение # 11
постоянный участник
Сейчас нет на сайте
Цитата Anthem ()
код создания выполняется одновременно


Какое счастье что вы неправы smile

Код комнаты выполняется самым первым, а только за ним уже идут объекты.


Ghaarp

The soul lighter(Android, logic)

Zzzzombie RAGE!!!(For android)
AnthemДата: Пятница, 17 Апреля 2015, 13:52 | Сообщение # 12
Д'Артаньян
Сейчас нет на сайте
Цитата XDominator ()
Код комнаты выполняется самым первым, а только за ним уже идут объекты.

Какая смешная ирония! Лучше бы поучились иронизировать над собой. Да, я употребил неправильную формулировку, но я прав в сути, т.к. события происходят в порядке обратном указанному вами. Жаль, вас постигнет печаль. Если только вы не знаете движок лучше разработчиков))


Текстовый контент для вашей игры (бесплатно)
Сценарист, геймдизайнер для Вашей игры
YellowAfterlifeДата: Пятница, 17 Апреля 2015, 19:01 | Сообщение # 13
Сейчас нет на сайте
Цитата Anthem ()
Если в комнате есть объекты с этими переменными, то это не поможет, т.к. код создания выполняется одновременно с созданием объектов

Цитата XDominator ()
Код комнаты выполняется самым первым, а только за ним уже идут объекты.

Данный спор довольно странный. Особенно, в связи с тем, что проверить порядок можно крайне просто - достаточно лишь впихнуть вызов show_message в каждый из интересующих фрагментов.

GM8: create-order.gmk:
Цитата
Instance Creation Code
Object Create Event
Room Creation Code
Room Start


GMS: create-order.gmz
Цитата GameMaker: Studio
Object Create Event
Instance Creation Code
Room Creation Code
Room Start


Как можно заметить, Room Creation Code действительно выполняется из перечисленных событий в последнюю очередь, и лишь раньше чем Room Start, что рассчитан на использование в качестве индикации полной готовности комнаты.

События создания и код создания выполняются ранее, но в GameMaker: Studio они обменены местами.


AnthemДата: Суббота, 18 Апреля 2015, 14:55 | Сообщение # 14
Д'Артаньян
Сейчас нет на сайте
YellowAfterlife, а что за Instance Creation Code? Или чем он отличается от события создания объекта?

Текстовый контент для вашей игры (бесплатно)
Сценарист, геймдизайнер для Вашей игры
YellowAfterlifeДата: Среда, 22 Апреля 2015, 16:00 | Сообщение # 15
Сейчас нет на сайте
Цитата Anthem ()
YellowAfterlife, а что за Instance Creation Code? Или чем он отличается от события создания объекта?

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

(в GMS меню вызывается по ПКМ, в более старых версиях по Ctrl+ПКМ)


  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг