Project1

标题: 请问Interpreter的问题 [打印本页]

作者: kvkv97    时间: 2014-11-3 19:33
标题: 请问Interpreter的问题
  def initialize(depth = 0, main = false)
    @depth = depth
    @Main = main
    # 深度超过 100 级
    if depth > 1
      print("调用公用事件超过了限制。")
      exit
    end
    # 清除注释器的内部状态
    clear
  end
  def clear
    @map_id = 0                       # 启动时的地图 ID
    @event_id = 0                     # 事件 ID
    @message_waiting = false          # 信息结束后待机中
    @move_route_waiting = false       # 移动结束后待机中
    @button_input_variable_id = 0     # 输入按钮 变量 ID
    @wait_count = 0                   # 窗口计数
    @child_interpreter = nil          # 子实例
    @branch = {}                      # 分支数据
  end
1,我把 if depth > 100改 if depth > 1,再设定公共事件为5个,进入游戏调用的时候,为什么游戏不提示?
2,@depth = depth和@main = main两个量被初师化为0和假,意思是什么?
3,我把@map_id = 0 改@map_id = 100的话,也不影响游戏效果,为什么这个量会没效果?


作者: RyanBern    时间: 2014-11-3 19:55
1.depth的含义是调用深度而非事件个数,比方说公共事件1调用2,2调用3……你可以按照这种方式试验一下,会提示信息。
这样做是为了避免调用堆栈过深而导致溢出。
2.main的含义是该解释器是否是主解释器。可以查一下,好像只有地图上的解释器是主要的解释器。基本都是通过它来调用其他事件。这个和地图上NPC对话完毕后NPC会保留原始朝向的功能有关。
3.clear只是默认值设定,它的效果取决于@map_id = 0时有无特殊含义。在这里@map_id=0没什么特殊含义,只是为了保证初始化的时候它不会是nil而已。所以改成别的自然也没区别。




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1