美文网首页
RPGMaker MV的场景管理系统

RPGMaker MV的场景管理系统

作者: logoss | 来源:发表于2019-03-15 10:36 被阅读0次

    看了一下RPGMakerMV的代码,做个笔记
    rm中有个场景管理器SceneManager,这是一个静态类,就当做单例使用。
    对应的是Scene_Base,这是所有场景的基类。标题场景,地图场景,战斗场景等都直接继承自Scene_Base。

    SceneManager

    主要字段
    • _scene 当前场景 保存的是实例
    • _nextScene 下一个场景 保存的是类
    • _previousClass 上一个场景 保存的是类
    • _stack=[] 场景堆 stack里存的是场景的类型,不是场景实例。当需要返回上一个场景时,根据类型新建场景。
    • _stopped=false 是否暂停
    主要方法
    • update() 帧循环 原理是requestAnimationFrame()

    updateMain() 在update里面,处理场景的更新

    updateInputData() 这三个都在updateMain里面
    changeScene()
    updateScene()

    • goto(sceneClass) 切换场景。传入新场景的类,它自动new一个新的。当前场景的类保存在_previousClass里
    • push(sceneClass) 把原来的场景的类型放入stack,然后切换场景。
    • pop() 返回_stack顶不的场景,如果没有,退出游戏。

    Scene_Base

    主要字段
    • _active=false 是否激活
    • _fadeSign=0 1表示正在fadeIn -1表示正在fadeOut
    • _fadeDuration=0 淡入淡出时间
    • _fadeSprite=null
    • _imageReservationId=Utils.generateRuntimeId()
    主要方法
    • isActive() 对应_active 是否激活
    • initialize() 初始化函数,new的时候调用。一般不用,或者用来声明一下变量。
    • create() 空函数 初始化函数,创建窗口内容,子类重写。切换场景时* SceneManager调用
    • isReady() 场景是否准备好。主要是create后要load图形。SceneManager根据这个函数来判断。 调用create()后可能需要时间准备 这个函数可以根据实际情况重写
    • start() 开始 SceneManger根据IsReady()来判断调用时机。里面可以重写要做的事。
    • update() 每帧更新,由sceneManager调用
    • updateFade() 如果_fadeDuration>0 ,根据_fadeSign来处理淡入淡出
    • updateChildren() 依次调用children数组中的实例,运行update()
    • stop() 停止 this._active=false
    • isBusy() 是否正在忙碌。默认只检测是否在淡入淡出。可以自己扩展。
    • terminate() 空函数 结束时要做的是 子类重写里面的内容
    • createWindowLayer() 创建窗口层,窗口只能放在窗口层 有个_windowLayer属性,保存创建的窗口层
    • addWindow(window) 添加窗口到窗口层 this._windowLayer.addChild(window)
    • startFadeIn(duration,white) duration是帧数 white填true或false
    • popScene() 返回上一个场景 SceneManager.pop()
    • checkGameover() 检测游戏是否终止 其实就是判断$gameParty.isAllDead()
    • fadeOutAll() 缓慢淡出所有声音和场景显示
    • fadeSpeed() return 24
    • slowFadeSpeed() return this.fadeSpeed()*2

    相关文章

      网友评论

          本文标题:RPGMaker MV的场景管理系统

          本文链接:https://www.haomeiwen.com/subject/tiakmqtx.html