我专门针对javacript
,特别是pixijs
canvas-webgl库,但这个问题很容易推广到制作游戏。
我正在开发一款简单的2D游戏。在游戏中,有各种对象被渲染为在屏幕上可见,并且通常它们彼此相关。例如,有5个敌人角色,每个角色都有一个武器,一个名字文字,一个命中点栏等,可以一起显示在屏幕上。
要对所有这些图形对象进行分组,通常会有一个Container
,即Enemy
,其对象放在children
数组中。
但是,如何在代码中稍后访问某个特定对象? Enemies[3].children[0]
并不意味着什么,索引可以更改。我想要得到的是,例如,具有属性weapon-1
的敌人的身份race=hobbit
的武器。
在 pixijs 中,我找不到一个例子。在 Kineticjs 中有find
方法。在pixijs我也没看到。
我认为有三种方法可以在javascript中实现这一点(使用pixijs):
编写一个通用find
方法,允许搜索对象取决于其属性,每次我需要对象时,在Container
内进行搜索。这就像 KineticJs 。但效率会有多高?
使用所有图形对象保留一个巨大的javascript map
,然后立即使用其变量名称即map.stage.enemies.hobbits[0].weapons.weapon1
}到达我想要的对象。但我怎么能保持这个呢?似乎很容易失去控制。此外,仍然需要find
函数来搜索动态变化的属性。
与第二个相似;将子项作为变量添加到父项,即var weapon = new Weapon(); enemy.addChild(weapon); enemy.weapon1 = weapon;
,然后在知道其变量名称后轻松到达该对象。但是,对象已经保存在children
中,是否需要再次维护?
第一个似乎对我好。但是,
你怎么做得更好?你是如何组织这个的?还有更好的第四种方式吗?
感谢。