有一个 logic 模块,一个scene模块。
如下所示,传统做法是实时地把坐标等数据从logic拉到scene里来。

class Scene
{
Sprite sprt_player;

lt;typegt; update()
{
sprt_player.put_pos (logic.monster.get_pos());
sprt_player.put_animation_index (logic.player.get_action_index());
sprt_player.put_animation_time (logic.player.get_action_time());
}

lt;typegt; render()
{
sprite_manager.render();
}
}

现在我们采用另外一种思想:

在Sprite类中,删去 put_xxx()和get_xxx(),
并把Sprite类内部对属性xxx的访问修改为xxx()。
(在Sprite类中定义virtual lt;typegt; xxx()=0)
然后如下所示:

class Scene
{
class SpritePlayer : Sprite
{
override lt;typegt; pos() { return logic.player.get_pos(); }
override lt;typegt; animation_index() { return logic.player.get_action_index(); }
override lt;typegt; animation_time() { return logic.player.get_action_time(); }
}

SpritePlayer sprt_player;

lt;typegt; update()
{
}

lt;typegt; render()
{
sprite_manager.render();
}
}


锐亚教育

锐亚教育,游戏开发论坛|游戏制作人|游戏策划|游戏开发|独立游戏|游戏产业|游戏研发|游戏运营| unity|unity3d|unity3d官网|unity3d 教程|金融帝国3|8k8k8k|mcafee8.5i|游戏蛮牛|蛮牛 unity|蛮牛