c++ - 如何使用 for 循环 (DirectX) 显示某种效果
问题描述
我有一个在 DirectX 9 上制作游戏的学校项目。我们正在一个团队中制作一个项目,他们给了我一个任务来揭示使用 for 循环的某种效果。
这是效果列表
EFK_CHAR efk_filename[][MAX_PATH] =
{
u"asset/texture/エフェクト案/Dunk.efk", //0
u"asset/texture/エフェクト案/BAD.efk", //1
u"asset/texture/エフェクト案/block.efk", //2
u"asset/texture/エフェクト案/combinationSelect.efk", //3
u"asset/texture/エフェクト案/pass.efk", //4
u"asset/texture/エフェクト案/Perfect.efk", //5
u"asset/texture/エフェクト案/SonicBoom.efk", //6
u"asset/texture/エフェクト案/wind.efk", //7
};
这段代码位于 int Effect_Init 中。它揭示了效果 Dunk.efk
effect = Effekseer::Effect::Create(manager, efk_filename[0]);
老师说我必须创建一个包含 EFK_CHAR efk_filename 索引的数组并创建一个 for 循环。所以我可以从 main.cpp 中的所有这些效果中调用某种效果。例如,如果我想在按下 P 按钮时显示索引为 7 的效果。
我真的不明白,所以我写道:
EFK_CHAR efk_filename[][MAX_PATH] =
{
u"asset/texture/エフェクト案/Dunk.efk", //0
u"asset/texture/エフェクト案/BAD.efk", //1
u"asset/texture/エフェクト案/block.efk", //2
u"asset/texture/エフェクト案/combinationSelect.efk", //3
u"asset/texture/エフェクト案/pass.efk", //4
u"asset/texture/エフェクト案/Perfect.efk", //5
u"asset/texture/エフェクト案/SonicBoom.efk", //6
u"asset/texture/エフェクト案/wind.efk", //7
};
EFK_CHAR Effect_Count[8] = { 0,1,2,3,4,5,6,7 }; //Does this array contain the indexes of EFK_CHAR efk_filename[][MAX_PATH]?
而且我不确定 for 循环。我知道在循环内我必须写effect = Effekseer::Effect::Create(manager, efk_filename[i]);
. 我可以写类似的东西for(int i = 0; i > EFK_CHAR, i ++)
吗?
解决方案
这主要取决于您的老师的想法,这很难猜测,但这里有一些可能的选择。
如果您只想遍历整个文件名数组,只需执行以下操作:
for (size_t i = 0; i < MAX_PATH; i++)
{
auto effect = Effekseer::Effect::Create(manager, efk_filename[i]);
// do something with that effect, maybe to check if the button was pressed
// or something like that?
// if (button_pressed)
// {
// applyEffect(effect);
// }
}
另一种可能性是您只需要考虑效果列表中的某些特定效果,这可以通过索引列表来完成(假设您只想迭代效果 1、3 和 5):
#define NUM_EFFECTS 3 // or constexpr NUM_EFFECTS = 3; if you prefer
size_t idx_array[NUM_EFFECTS] = {1, 3, 5};
for (size_t i = 0; i < NUM_EFFECTS; i++)
{
auto effect = Effekseer::Effect::Create(manager, efk_filename[idx_array[i]]);
// do something with the effect
}
不幸的是,我不确定如何理解“当我按下 P 按钮时显示索引 7 的效果”。也许它是关于创建一个映射键 <--> 索引,比如{'P', 7}
?如果是,您可以使用std::map<char, size_t> key_map;
它并像这样选择您的效果efk_filename[key_map['P']]
。
推荐阅读
- r - 具有“未来”的并行 GIS
- r - How to change the title color in shinydashboard from server using shinyjs
- amazon-web-services - AWS athena 结果集显示列的 zig zaged 值
- python - 在 Gensim 中使用标记文档和循环
- flutter - 参数类型“对象?” 不能分配给参数类型“颜色?”
- python - torch.hub.load() 引发 HTTPError:HTTP 错误 404:加载模型时未找到
- maya - 在 Maya 中隐藏架子选项卡(使用 Python)
- domain-driven-design - DDD – 如何在其他有界上下文中实现对多语言数据的访问
- java - org.hibernate.exception.GenericJDBCException:关键字“as”附近的语法不正确
- json - 当值不匹配时使用 jq 添加新的 JSON 字段