Есть много способов сделать это, но я не думаю, что формат списка анимаций должен быть искажен для поддержки какой-то другой цели. Я склонен создавать «метаданные» (также в формате plist, но может быть в базе данных) для подобных ситуаций. Обычно эти метаданные загружаются в ядро при запуске игры, навсегда. Например, из одной из моих игр, следующий код:
[self addToDictionary:dic
key:@"improvedCheapShot"
name:@"Cheap Shot +"
characterClassKey:@"rogue"
rankInClass:3 costBP:3 skillSpeed:2 skillPower:150 skillRange:0
isMapSkill:NO isMultiTargetSkill:NO
isHealingSkill:NO isProtectingSkill:NO
damageType:geDamageTypePhysical
effectImpact:geEffectImpactNotApplicable
toolTip:@"Strikes the weakest foe in melee range, ignoring its defense. Damage is increased by 20%."
soundFx:@"sound_fx_skill_sword5.mp3"
damageAnimationSpec:[GECombatDamageAnimation damageMagicAnimation:geDamageMagicAnimationSoldier
playerFile:nil
CPUfile:@"magie_cheapShot"
frames:15]
];
Это из моего синглтон-класса для battleSkillSpecifications, показан только один навык (из многих). Там я храню всю информацию, необходимую для 'skillExecutionController' и 'skillAnimationSequencer'.
Я убежден, что ваша игра в конечном итоге потребует нескольких случаев координации между анимацией и звуком.