Как функционирует ds_lists в gml? Они глобальные? Нужно ли обращаться к ним как к переменной из других экземпляров?
У меня есть этот код
obj_Player.x = statePlayerX;
obj_Player.y = statePlayerY;
obj_Player.grv = stateGrav;
for(var i = 0; i < obj_ControlLevel1.platformNumb; ++i)
{
ds_list_find_value(hList,i).x = ds_list_find_value(statePHX,i);
ds_list_find_value(hList,i).y = ds_list_find_value(statePHY,i);
ds_list_find_value(vList,i).x = ds_list_find_value(statePVX,i);
ds_list_find_value(vList,i).y = ds_list_find_value(statePVY,i);
} // Line 11
with(obj_ControlLevel1) {
usedPlatforms = platformsNumbState;
}
Но я получаю ошибки компиляции, говоря, что строка 11 имеет: неожиданный символ "." в выражении
и что в строке 11: неправильное назначение
Для контекста: этот код будет помещен в отдельный объект от obj_ControlLevel1
Списки ds_lists hList и vList хранятся в другом объекте и содержат ссылки на внутриигровые объекты списки statePHX, statePHY, statePVX, statePVY
1 ответ
Если вы хотите, чтобы список начинался с самого начала, i
должен быть использован до увеличения значения. i++
внутри вас для цикла будет использовать value
0
, а затем, как только код будет выполнен, он будет увеличиваться. Не уверен, что это решит ошибку, но вы могли бы попробовать.
Я думаю, что строка 11 неожиданная "." в выражении имеется в виду эта часть здесь:
для (var i = 0; i
Я бы попробовал отформатировать это так:
var platformNumb = obj_ControlLevel1.platformNumb;
for(var i = 0; i < platformNumb; ++i) {
yourcodehere
}
Чтобы ответить на ваш вопрос в заголовке, ds_lists не обязательно являются глобальными. Вы присваиваете их индекс переменной, которую можете сделать глобальной переменной, переменной экземпляра или локальной переменной.
list = ds_list_create();
Or
var list = ds_list_create();
Or
globalvar list;
list = ds_list_create();
Надеюсь это поможет!