游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2883|回复: 1

还是流程控制的问题

[复制链接]

16

主题

31

帖子

39

积分

注册会员

Rank: 2

积分
39
发表于 2011-4-13 13:33:00 | 显示全部楼层 |阅读模式
Flow1::     bool MouseProc(int,int,unsigned __int32)
        {
                fos=fosExitNotClear;                    //设定当前流程需要退出
                NextObject=new SecondObject;            //设定下一个流程对象
                      //之后对象控制器会自动清除当前对象,并将指定的对象做为新的当前对象

                return(true);
        }
        void ObjectReturn(FlowObject *obj)
        {
        //这里的obj为之前new出来的NextObject,这个函数在NextObject被delete前调用,一般用来回传参数
                fos=fosOK;
                NextObject=NULL;
        }

Flow2::     bool OnClick(int,int,unsigned __int32)
        {
                fos=fosReturn;                      //设定当前状态为返回上一次调用fosExitNotClear的类

                return(true);
        }

问题1: Flow2 返回后是不是就被清除了? 如果想再次从Flow1进入,是不是又要重新new一个Flow2? 那这样如果Flow2很多资源要加载,重复加载玩家会觉得不爽。
问题2:Flow1 Flow2之间的游戏数据,除了使用全局变量外,有函数可以传递吗?

PS:我是希望把游戏设计成 StartMenu流程,第1关(找茬),第2关(打飞机),……,结束流程。//就不用关注gamestate了
1.希望能节省加载时间,加载过的流程可以重复使用,不需要NEW,任意流程时都可以指定到某个流程(不是NEW出来的)。
2.不同流程对共同数据的处理,比如游戏分数等,除了全局变量外,有其他解决方法吗
总的是希望学会用引擎管理游戏流程的方法,能很好的扩充和变更,以便之后可以专注在游戏内容的设计上。

2万

主题

2万

帖子

6万

积分

论坛元老

Rank: 8Rank: 8

积分
66489
QQ
发表于 2011-4-13 17:00:00 | 显示全部楼层

Re:还是流程控制的问题

fosReturn之后,确实就是被删除了。

目前尚未提供相应的解决办法。

资源的管理你应该另建立一个类来处理,而不是完全扔在游戏对应的流程中。就像你所?的有可能多个流程会共用一个数据。

即然你重载了FlowControl,如果不使用全局变量那就在你重载实现的FlowControl加入这些数据管理类的实例就可以了。

这样数据与游戏流程对象分离,重新创建也不会有什么消耗。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2024-11-21 21:03

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表