Dva_Kota
|
![](http://forum.hellroom.ru/Themes/default/images/post/xx.gif) |
« : Апрель 19, 2011, 17:16:19 » |
|
Автоматическая загрузка спрайтов из папки и автоматическое назначение этих спрайтов объектам.(дополнение к статье "Добавление ресурсов (Спрайтов, звуков, тайлов, бэкграундов) из папок").Суть этого способа в следующем: Первый вариант (с помощью переменных). Пример load_sprites_variable)1. Спрайты делятся на две категории: 1.1. спрайты которые назначаются объектам в самом начале; 1.2. остальные спрайты, которые используются в процессе игры. 2. Для этого спрайты размещаем в двух папках (в примере это data\sprites – спрайты по умолчанию для объектов; data\other_sprites – остальные спрайты). 3. В игру спрайты спрайты из обоих папок загружаем одним и тем же кодом, только в первом случае сразу назначаем их объектам. Здесь есть особенности: 3.1. Имена спрайтов должны быть такими же как имена объектов, которым мы их будем назначать, только без obj в начале (например объект называется obj_01, а спрайт для него будет называться _01.png) 3.2. В коде индексы загруженных спрайтов будут записаны в переменные spr+имя_файла_без_расширения (например спрайт _01.png в игре будет называться spr_01) 3.3. Писать просто spr_01 будет не достаточно, т.к. это переменная, находящаяся в объекте obj_load_sprites. Для использования этого спрайта в коде нужно писать obj_load_sprites.spr_01 (например sprite_index=obj_load_sprites.spr_01). 4. Вот код для загрузки спрайтов и назначения их объектам: //--------------Загрузка спрайтов, котрорые будут установлены по умолчанию для объектов-------------
spr_ = file_find_first(string(working_directory) + '\data\sprites\*.png', 0); //находим первый спрайт в папке
if (spr_ = ''){exit} //если ни один файл не найден завершаем выполнение кода
variable_local_set('spr' + filename_change_ext(spr_,''),sprite_add(string(working_directory) + '\data\sprites\'+string(spr_),1,false,true,0,0)); //добавляем спрайт и записываем его индекс в переменную spr+имя_файла
//выполняем код добавления в события создания объектов назначение спрайтов execute_string( 'object_event_add(obj' + filename_change_ext(spr_load,"") + ',ev_create,0,' + "'"+' sprite_index=obj_load_sprites.spr' + filename_change_ext(spr_load,'') + "'"+' )'); for (next_spr = file_find_next(); next_spr != ''; next_spr = file_find_next()) //Переходим к следующему файлу и в цикле просматриваем все файлы { variable_local_set('spr' + filename_change_ext(next_spr,''),sprite_add(string(working_directory) + '\data\sprites\'+string(next_spr),1,false,true,0,0)); //добавляем спрайт и записываем его индекс в переменную spr+имя_файла
//выполняем код добавления в события создания объектов назначение спрайтов execute_string( 'object_event_add(obj' + filename_change_ext(next_spr,"") + ',ev_create,0,' + "'"+' sprite_index=obj_load_sprites.spr' + filename_change_ext(next_spr,'') + "'"+' )'); }
file_find_close(); // завершаем просмотр файлов.
//--------------Загрузка остальных спрайтов-------------
spr_ = file_find_first(string(working_directory) + '\data\other_sprites\*.png', 0); //находим первый спрайт в папке
if (spr_ = ''){exit} //если ни один файл не найден завершаем выполнение кода
variable_local_set('spr' + filename_change_ext(spr_,''),sprite_add(string(working_directory) + '\data\other_sprites\'+string(spr_),1,false,true,0,0)); //добавляем спрайт и записываем его индекс в переменную spr+имя_файла
for (next_spr = file_find_next(); next_spr != ''; next_spr = file_find_next()) //Переходим к следующему файлу и в цикле просматриваем все файлы { variable_local_set('spr' + filename_change_ext(next_spr,''),sprite_add(string(working_directory) + '\data\other_sprites\'+string(next_spr),1,false,true,0,0)); //добавляем спрайт и записываем его индекс в переменную spr+имя_файла }
file_find_close(); // завершаем просмотр файлов. В примере объект загрузчик obj_load_sprites и три объекта для теста спрайтов. Левой кнопкой мыши можно менять спрайт объекта obj_01. Второй вариант (с помощью ds_map). Пример load_sprites_ds_map.Пункты 1 – 3.1 точно такие же 3.2. хранить индексы спрайтов не в переменных, а в ds_map (спасибо TGA). Выглядит почти так: создаем глобальную переменную spr_all (это будет id для ds_map), создаем ds_map и записываем id в эту переменную. 3.3. Все остальное аналогично, только индексы спрайтов будем записывать не в переменные а в ds_map при помощи функции ds_map_add() и они будут соответствовать ключам spr+имя_файла_без_расширения (например спрайт _01.png в игре будет соответствовать ключу spr_01) 3.4. Для обращения к загруженному спрсйту нужно будет писать sprite_index=ds_map_find_value(spr_all,' spr+имя_файла_без_расширения расширения ') Например для назначения объекту спрайта _01.png нужно будет писать: sprite_index=ds_map_find_value(spr_all,'spr_01')4. Вот код для загрузки спрайтов и назначения их объектам: globalvar spr_all; //Создаем глобальную переменну - это будет id для ds_map spr_all = ds_map_create(); //создаем дата-структуру и записываем id в переменную
//--------------Загрузка спрайтов, котрорые будут установлены по умолчанию для объектов-------------
spr_load = file_find_first(string(working_directory) + '\data\sprites\*.png', 0); //находим первый спрайт в папке
if (spr_load = ''){exit} //если ни один файл не найден завершаем выполнение кода
ds_map_add(spr_all,'spr' + filename_change_ext(spr_load,''),sprite_add(string(working_directory) + '\data\sprites\'+string(spr_load),1,false,true,0,0));//добавляем спрайт и записываем его индекс в ds_map с ключем spr+имя_файла
//выполняеми код добавления в события создания объектов назначение спрайтов execute_string( 'object_event_add(obj' + filename_change_ext(spr_load,"") + ',ev_create,0,' + "'"+' sprite_index=ds_map_find_value(spr_all,"spr' + filename_change_ext(spr_load,"")+'");'+ "'"+' )');
for (next_spr = file_find_next(); next_spr != ''; next_spr = file_find_next()) //Переходим к следующему файлу и в цикле просматриваем все файлы { ds_map_add(spr_all,'spr' + filename_change_ext(next_spr,''),sprite_add(string(working_directory) + '\data\sprites\'+string(next_spr),1,false,true,0,0));//добавляем спрайт и записываем его индекс в ds_map с ключем spr+имя_файла //выполняеми код добавления в события создания объектов назначение спрайтов execute_string( 'object_event_add(obj' + filename_change_ext(next_spr,"") + ',ev_create,0,' + "'"+' sprite_index=ds_map_find_value(spr_all,"spr' + filename_change_ext(next_spr,"")+'");'+ "'"+' )'); }
file_find_close();// завершаем просмотр файлов.
//--------------Загрузка остальных спрайтов-------------
spr_load = file_find_first(string(working_directory) + '\data\other_sprites\*.png', 0); //находим первый спрайт в папке
if (spr_load = ''){exit} //если ни один файл не найден завершаем выполнение кода
ds_map_add(spr_all,'spr' + filename_change_ext(spr_load,''),sprite_add(string(working_directory) + '\data\other_sprites\'+string(spr_load),1,false,true,0,0));//добавляем спрайт и записываем его индекс в ds_map с ключем spr+имя_файла
for (next_spr = file_find_next(); next_spr != ''; next_spr = file_find_next()) //Переходим к следующему файлу и в цикле просматриваем все файлы { ds_map_add(spr_all,'spr' + filename_change_ext(next_spr,''),sprite_add(string(working_directory) + '\data\other_sprites\'+string(next_spr),1,false,true,0,0));//добавляем спрайт и записываем его индекс в ds_map с ключем spr+имя_файла }
file_find_close();// завершаем просмотр файлов. Третий вариант (с помощью ds_map). Спрайты назначаются функцией object_set_sprite(). Пример load_sprites_ds_map_2.Этот способ такой же как второй, только здесь спрайты назначаются объектам при помощи функции object_set_sprite(). Таким образом спрайты назначаются не экземплярам при создании а объектам (т.е. теперь можно узнать индекс спрайта, назначенного объекту, даже если в комнате нет ни одного экземпляра этого объекта при помощи функции object_get_sprite(). globalvar spr_all; //Создаем глобальную переменну - это будет id для ds_map spr_all = ds_map_create(); //создаем дата-структуру и записываем id в переменную
//--------------Загрузка спрайтов, котрорые будут установлены по умолчанию для объектов-------------
spr_load = file_find_first(string(working_directory) + '\data\sprites\*.png', 0); //находим первый спрайт в папке
if (spr_load = ''){exit} //если ни один файл не найден завершаем выполнение кода
ds_map_add(spr_all,'spr' + filename_change_ext(spr_load,''),sprite_add(string(working_directory) + '\data\sprites\'+string(spr_load),1,false,true,0,0));//добавляем спрайт и записываем его индекс в ds_map с ключем spr+имя_файла
//выполняеми код добавления в события создания объектов назначение спрайтов execute_string('object_set_sprite(obj' + filename_change_ext(spr_load,"")+',ds_map_find_value(spr_all,"spr'+ filename_change_ext(spr_load,"")+'"));');
for (next_spr = file_find_next(); next_spr != ''; next_spr = file_find_next()) //Переходим к следующему файлу и в цикле просматриваем все файлы { ds_map_add(spr_all,'spr' + filename_change_ext(next_spr,''),sprite_add(string(working_directory) + '\data\sprites\'+string(next_spr),1,false,true,0,0));//добавляем спрайт и записываем его индекс в ds_map с ключем spr+имя_файла //выполняеми код добавления в события создания объектов назначение спрайтов execute_string('object_set_sprite(obj' + filename_change_ext(next_spr,"")+',ds_map_find_value(spr_all,"spr'+ filename_change_ext(next_spr,"")+'"));'); }
file_find_close();// завершаем просмотр файлов.
//--------------Загрузка остальных спрайтов-------------
spr_load = file_find_first(string(working_directory) + '\data\other_sprites\*.png', 0); //находим первый спрайт в папке
if (spr_load = ''){exit} //если ни один файл не найден завершаем выполнение кода
ds_map_add(spr_all,'spr' + filename_change_ext(spr_load,''),sprite_add(string(working_directory) + '\data\other_sprites\'+string(spr_load),1,false,true,0,0));//добавляем спрайт и записываем его индекс в ds_map с ключем spr+имя_файла
for (next_spr = file_find_next(); next_spr != ''; next_spr = file_find_next()) //Переходим к следующему файлу и в цикле просматриваем все файлы { ds_map_add(spr_all,'spr' + filename_change_ext(next_spr,''),sprite_add(string(working_directory) + '\data\other_sprites\'+string(next_spr),1,false,true,0,0));//добавляем спрайт и записываем его индекс в ds_map с ключем spr+имя_файла }
file_find_close();// завершаем просмотр файлов. Аналогично можно загружать и другие ресурсы. Автор Dva_KotaСпасибо за помощь FanTom, DeatHSoul (в теме "Переменные"), TGA
|
|
« Последнее редактирование: Август 19, 2011, 11:27:34 от Dva_Kota »
|
Записан
|
|
|
|
Vendet
Гл. Администратор
Репутация: 772
Offline
Пол: ![Мужской](http://forum.hellroom.ru/Themes/default/images/Male.gif)
API: Unity 3D
Сообщений: 3949
HellRoom Games
|
![](http://forum.hellroom.ru/Themes/default/images/post/xx.gif) |
« Ответ #1 : Апрель 19, 2011, 18:52:25 » |
|
Ого круто, полезная статья, надеюсь кому нибудь пригодится ![](http://forum.hellroom.ru/Smileys/kolobki/joyful.png)
|
|
|
Записан
|
|
|
|
TGA
Пользователь
![*](http://forum.hellroom.ru/Themes/default/images/star13.png) ![*](http://forum.hellroom.ru/Themes/default/images/star13.png)
Репутация: 14
Offline
Пол: ![Мужской](http://forum.hellroom.ru/Themes/default/images/Male.gif)
API: 8.0 Pro
Сообщений: 65
|
![](http://forum.hellroom.ru/Themes/default/images/post/xx.gif) |
« Ответ #2 : Апрель 19, 2011, 21:00:10 » |
|
Алсо, всё тоже самое можно делать без объекта с кучей локальных переменных - через ds_map. И сразу отвечаю на возможный вопрос: гм очень быстро работает со своими дата-структурами.
Я, например, в последнее время пользуюсь следующей схемой: -Создаём глобалку; -Создаём и заносим в неё ds_map; -Пишем простой скрипт, задача которого в следующем: --При вызове, скрипту передаётся название ресурса(это можно проделать не только со спрайтами, но и со звуками) --Сперва ищем этот ресурс в дс_мапе - если находим, возвращаем его; если нет: ищем в папке и если он есть - загружаем его, добавляем в дата-структуру(ключ=имя реса) и возвращаем; если же его нет и в папке - возвращаем какой-нить default_sprite с жирным красным вопросом(для большей крутости, можно искать сразу по нескольким разрешениям: например, сперва ищем файл с нашим именем с расширением bmp - если нет, то с png и т .п.). -В креате объекта пишем что-то вроде "sprite_index=get_sprite('eee')".
Профит такого способа, собственно, в том, что ресурсы загружаются в процессе игры и только те, которые реально будут использоваться в данный момент игры. +можно легко перебрать все ключи мапы и выгрузить соответствующие им ресы.
|
|
|
Записан
|
|
|
|
Dva_Kota
|
![](http://forum.hellroom.ru/Themes/default/images/post/xx.gif) |
« Ответ #3 : Апрель 20, 2011, 00:43:25 » |
|
Примерно так (добавил еще один вариант кода c ds_map переменных)? Загрузку делаю сразу, т.к. загрузка ресурсов в процессе игры подтормаживает (на слабых компах), и если ресурсов не на 100 МБ, то лучше, я думаю, загрузить их сразу. -В креате объекта пишем что-то вроде "sprite_index=get_sprite('eee')".
У меня основная идея заключается в том, чтобы не писать в Create у каждого объекта "sprite_index=...", но я только сейчас заметил что спрайты я назначаю только тем объектам которые уже есть в комнате... ![Мда....](http://forum.hellroom.ru/Smileys/kolobki/facepalm.gif) завтра исправлю, сегодня уже поздно... object_event_add() нужно добавлять "sprite_index=..." для объектов, а не через with.
|
|
|
Записан
|
|
|
|
TGA
Пользователь
![*](http://forum.hellroom.ru/Themes/default/images/star13.png) ![*](http://forum.hellroom.ru/Themes/default/images/star13.png)
Репутация: 14
Offline
Пол: ![Мужской](http://forum.hellroom.ru/Themes/default/images/Male.gif)
API: 8.0 Pro
Сообщений: 65
|
![](http://forum.hellroom.ru/Themes/default/images/post/xx.gif) |
« Ответ #4 : Апрель 20, 2011, 16:01:00 » |
|
Примерно так (добавил еще один вариант кода c ds_map переменных)? Ну да, можно так. Загрузку делаю сразу, т.к. загрузка ресурсов в процессе игры подтормаживает (на слабых компах), и если ресурсов не на 100 МБ, то лучше, я думаю, загрузить их сразу. Если ресурсы не большие - нормально. что спрайты я назначаю только тем объектам которые уже есть в комнате... Мда.... завтра исправлю, сегодня уже поздно... object_event_add() нужно добавлять "sprite_index=..." для объектов, а не через with. Да не надо парится с событиями. Лучше сделай сперва загрузку ресов, а потом назначай их через Create. У тебя же задача какая: сделать загрузку и ресов и удобное обращение к ним. Их использование(назначение тех же спрайтов объектам) не столь важно(/сложно).
|
|
|
Записан
|
|
|
|
Dva_Kota
|
![](http://forum.hellroom.ru/Themes/default/images/post/xx.gif) |
« Ответ #5 : Апрель 20, 2011, 16:10:16 » |
|
Удобное обращение к ресурсом сделано давно. А назначать автоматически ресурсы, не прописывая их каждому объекту в Create хочу сделать для таких случаев. Добавлено: Апрель 21, 2011, 00:02:25 Переписал статью и заменил пример. Теперь спрайты автоматически назначаются объектам, не нужно в каждом объекте писать " sprite_index=...", ГМ сам определит какому объекту какой спрайт назначать. ;D Еще раз спасибо, FanTom и DeatHSoul. Добавлено: Август 25, 2011, 15:59:38 Добавил в первый пост третий вариант, самый лучшей, на мой взгляд и обновил пример. Вчера выяснилось что при назначении объектам спрайтов через переменную sprite_index узнать какой спрайт был назначен объекту можно только если объект присутствует в комнате. Это не всегда удобно. Способ почти не отличается от второго, но код немного короче. Этот способ такой же как второй, только здесь спрайты назначаются объектам при помощи функции object_set_sprite(). Таким образом спрайты назначаются не экземплярам при создании а объектам (т.е. теперь можно узнать индекс спрайта, назначенного объекту, даже если в комнате нет ни одного экземпляра этого объекта при помощи функции object_get_sprite(). Добавлено: Август 25, 2011, 16:02:48 Есть у этого способа недостаток: загрузка стрипов ![Смайлик с ладошкой](http://forum.hellroom.ru/Smileys/kolobki/f_p_an.gif) (нужно ведь указывать количество кадров при загрузке, а у меня стоит 1 кадр всегда) У меня уже есть идея как решить эту проблему: нужно к имени файла в конце (или в начале) дописывать двухзначным числом количество кадров, а при загрузке на основе этого числа задавать количество кадров. Позже, когда будет время, напишу код.
|
|
« Последнее редактирование: Август 25, 2011, 16:02:48 от Dva_Kota »
|
Записан
|
|
|
|
dasmax
Участник
![*](http://forum.hellroom.ru/Themes/default/images/star13.png) ![*](http://forum.hellroom.ru/Themes/default/images/star13.png) ![*](http://forum.hellroom.ru/Themes/default/images/star13.png)
Репутация: 22
Offline
Пол: ![Мужской](http://forum.hellroom.ru/Themes/default/images/Male.gif)
API: Game Maker 8.0 Pro
Деятельность: Gamedev
Сообщений: 107
|
![](http://forum.hellroom.ru/Themes/default/images/post/xx.gif) |
« Ответ #6 : Август 25, 2011, 16:48:22 » |
|
блин сложновато, хотя мне про загурзку ресурсов еще рано думать, Плюсег поставлю
|
|
|
Записан
|
|
|
|
Dva_Kota
|
![](http://forum.hellroom.ru/Themes/default/images/post/xx.gif) |
« Ответ #7 : Август 25, 2011, 16:55:05 » |
|
На самом деле ничего сложного. Код можно копировать практически без изменений (поменять нужно только путь к папке со спрайтами, если у Вас он другой).
|
|
|
Записан
|
|
|
|
Dgon
GM Pro user
Репутация: 40
Offline
Пол: ![Мужской](http://forum.hellroom.ru/Themes/default/images/Male.gif) Награды: ![За постоянность! [50 дней на форуме] За постоянность! [50 дней на форуме]](http://forum.hellroom.ru/awards/d09ba76b977b84fd4f5dcfae1f2918ff_hellroomforum_time_copper.gif)
API: Game Maker 8.0 Pro
Сообщений: 352
Boss
|
![](http://forum.hellroom.ru/Themes/default/images/post/xx.gif) |
« Ответ #8 : Октябрь 29, 2011, 09:55:40 » |
|
Dva_Kota, а как сделать загрузчик файлов, которые имеют какойнибудь иной формат? Просто, например, что бы обезопасить спрайты от правки. Что бы их было не возможно открыть.
|
|
|
Записан
|
|
|
|
|
Daisher
Пользователь
![*](http://forum.hellroom.ru/Themes/default/images/star13.png) ![*](http://forum.hellroom.ru/Themes/default/images/star13.png)
Репутация: 0
Offline
Пол: ![Мужской](http://forum.hellroom.ru/Themes/default/images/Male.gif)
API: GameMaker Studio
Деятельность: PM
Сообщений: 54
|
![](http://forum.hellroom.ru/Themes/default/images/post/xx.gif) |
« Ответ #10 : Октябрь 16, 2013, 12:20:50 » |
|
Народ, помогите несчастному пользователю GMS. В нем функция execute_string не работает, а на ней все завязано. Как это сделать другим способом? На ГМ не могу перейти, мне надо html5 :(
|
|
|
Записан
|
|
|
|
AndrewVideoGames
Главный Модератор
Репутация: 821
Offline
Пол: ![Мужской](http://forum.hellroom.ru/Themes/default/images/Male.gif) Награды: ![За постоянность! [500 дней на форуме] За постоянность! [500 дней на форуме]](http://forum.hellroom.ru/awards/e0371460a203dd46d2dc161571bf6144_hellroomforum_time_gold.gif) ![За лояльность! [+750 репутации] За лояльность! [+750 репутации]](http://forum.hellroom.ru/awards/ba712f70231a68b216c525b7e8eca694_hellroomforum_good_silver.gif) ![5000 сообщений! 5000 сообщений!](http://forum.hellroom.ru/awards/d8d29effbba010ccfec15e6d528838cf_hellroomforum_message_gold.gif) ![За помощь новичкам! За помощь новичкам!](http://forum.hellroom.ru/awards/16e0ec08d0a2e30683e5da0012195e27_16e0ec08d0a2e30683e5da0012195e27_16e0ec08d0a2e30683e5da0012195e27_16e0ec08d0a2e30683e5da0012195e27_ad533eeb2dff.gif)
API: GameMaker Studio Pro
Деятельность: А я кто? А я руководитель!
Сообщений: 7316
|
![](http://forum.hellroom.ru/Themes/default/images/post/xx.gif) |
« Ответ #11 : Октябрь 16, 2013, 15:15:54 » |
|
Народ, помогите несчастному пользователю GMS. В нем функция execute_string не работает, а на ней все завязано. Как это сделать другим способом? На ГМ не могу перейти, мне надо html5 :(
Как вы ее используете? Вот, если что, пример замены: d=execute_string('return rm_lvl'+string(global.lvl)); room_goto(d);
в gms заменяется на: d=asset_get_index('rm_lvl'+string(global.lvl)); room_goto(d);
|
|
|
Записан
|
|
|
|
Daisher
Пользователь
![*](http://forum.hellroom.ru/Themes/default/images/star13.png) ![*](http://forum.hellroom.ru/Themes/default/images/star13.png)
Репутация: 0
Offline
Пол: ![Мужской](http://forum.hellroom.ru/Themes/default/images/Male.gif)
API: GameMaker Studio
Деятельность: PM
Сообщений: 54
|
![](http://forum.hellroom.ru/Themes/default/images/post/xx.gif) |
« Ответ #12 : Октябрь 16, 2013, 15:24:21 » |
|
Да, я уже понял, что в каждом конкретном случае замена разная. Меня интересует, как ее заменить в третьем примере сверху.
|
|
|
Записан
|
|
|
|
AndrewVideoGames
Главный Модератор
Репутация: 821
Offline
Пол: ![Мужской](http://forum.hellroom.ru/Themes/default/images/Male.gif) Награды: ![За постоянность! [500 дней на форуме] За постоянность! [500 дней на форуме]](http://forum.hellroom.ru/awards/e0371460a203dd46d2dc161571bf6144_hellroomforum_time_gold.gif) ![За лояльность! [+750 репутации] За лояльность! [+750 репутации]](http://forum.hellroom.ru/awards/ba712f70231a68b216c525b7e8eca694_hellroomforum_good_silver.gif) ![5000 сообщений! 5000 сообщений!](http://forum.hellroom.ru/awards/d8d29effbba010ccfec15e6d528838cf_hellroomforum_message_gold.gif) ![За помощь новичкам! За помощь новичкам!](http://forum.hellroom.ru/awards/16e0ec08d0a2e30683e5da0012195e27_16e0ec08d0a2e30683e5da0012195e27_16e0ec08d0a2e30683e5da0012195e27_16e0ec08d0a2e30683e5da0012195e27_ad533eeb2dff.gif)
API: GameMaker Studio Pro
Деятельность: А я кто? А я руководитель!
Сообщений: 7316
|
![](http://forum.hellroom.ru/Themes/default/images/post/xx.gif) |
« Ответ #13 : Октябрь 16, 2013, 15:26:12 » |
|
Daisher, скорее всего - никак.
|
|
|
Записан
|
|
|
|
Daisher
Пользователь
![*](http://forum.hellroom.ru/Themes/default/images/star13.png) ![*](http://forum.hellroom.ru/Themes/default/images/star13.png)
Репутация: 0
Offline
Пол: ![Мужской](http://forum.hellroom.ru/Themes/default/images/Male.gif)
API: GameMaker Studio
Деятельность: PM
Сообщений: 54
|
![](http://forum.hellroom.ru/Themes/default/images/post/xx.gif) |
« Ответ #14 : Октябрь 16, 2013, 18:36:57 » |
|
Решил свою задачу добавление этого кода родителю всех объектов: my_name = object_get_name (object_index) // получаем имя своего объекта spr_name = string(my_name+"_0.png"); // генерим имя своего файла spr_check = file_exists(spr_name); // проверяем по имени файла его существование
if (spr_check) // если есть файл с таким именем { sprite_replace(object_get_sprite (object_index), spr_name, 1, false, false, 0, 0); // назначаем на свой инстанс этот спрайт }; Можно назначать и на объект тоже, чтобы следующие с ним создавались, но мне это не надо: if (spr_check) // если есть файл с таким именем { spr_id = sprite_add(spr_name, 1, false, false, 0, 0); // добавляем его и записываем ид object_set_sprite (object_index, spr_id) ; // назначаем на свой объект этот спрайт };
|
|
|
Записан
|
|
|
|
|