有一个 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();
    }
}


测试:1锐亚教育

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