搜索附件  
同能RPG制作大师 附件中心 同能RM技术讨论区 RPG Maker XP 讨论区 【无用脚本】Debuger调试器(阉割版1.0): Debuger.zip

【无用脚本】Debuger调试器(阉割版1.0): Debuger.zip

 

【无用脚本】Debuger调试器(阉割版1.0):
因为自己设计游戏时候需要经常调试脚本,之前调试都是使用默认的p或print方法进行查看,真的受不了他的窗口弹出,激活和置顶机制,所以优化了一种 “船新” 的Debuger调试器。该版本还属于测试阶段,有问题欢迎反馈,常年更新。
    什么是阉割版?   答:有很多其它次要功能没有加入,代码没有优化。
    有没有正式版?   答:随缘制作,目前不想做,因为工程暂时没用到,欢迎有能力的人将它完善。

使用方法
    将调试器插入脚本编辑器顶端,在后面使用一个全局变量来创建一个debuger对象,具体如下图:
     
     

    当我们需要观察输出时,可以这样:
     

    它的显示效果如下图:
     
     

    在显示的时候,您可以使用方向键来控制画面,毕竟信息比较多,一次性显示不完。
    当您想退出输出界面时,您可以按下Esc键退出。

代码区:

  #--------------------------------------------------------------------------
  # 作者:Daviant(蚂蚁)
  #--------------------------------------------------------------------------

class Debuger
  #--------------------------------------------------------------------------
  # ● 初始化
  #--------------------------------------------------------------------------
  def initialize
    @time = Graphics.frame_count # 获取刷新次数
    @p = 0 # Y轴偏移
    @px = 0 # X轴偏移
    @line = 0 # 当前行
    @col = 0 # 当前列
    @f = 16 # 字体大小
  end
  #--------------------------------------------------------------------------
  # ● 创建
  #--------------------------------------------------------------------------
  def create
    dispose # 先把之前的状态全部释放
    @sprite = Sprite.new
    @bitmap = Bitmap.new(6400, 6400*2)
    @content = Bitmap.new(640, 480)
    @content.fill_rect(0, 0, 640, 480, Color.new(0,0,0, 150))
    @sprite.bitmap = @content
    @bitmap.font.color = Color.new(0,255,0) #初始化颜色
    @bitmap.font.size = @f
  end
  #--------------------------------------------------------------------------
  # ● 释放
  #--------------------------------------------------------------------------
  def dispose
    if @sprite
      @sprite.dispose
    end
    if @bitmap
      @bitmap.dispose
      @content.dispose
    end
  end
  #--------------------------------------------------------------------------
  # ● 写文本到Debuger
  # text        : 输出内容
  #--------------------------------------------------------------------------
  def write( text )
      while ((c = text.slice!(/./m)) != nil )
        if c == "\n"
          @line = @line + 1
          @col = 0
        elsif c == "\001"
          # 这里可以扩展颜色管理
          @bitmap.font.bold = false
          @bitmap.font.color = Color.new(0,255,0)
        elsif c == "\002" # 内容样式
          @bitmap.font.bold = false
          @bitmap.font.color = Color.new(0,174,192)
        elsif c == "\003" # 内容样式2
          @bitmap.font.bold = false
          @bitmap.font.color = Color.new(237,144,243)
        elsif c == "\004" # 属性样式
          @bitmap.font.bold = false
          @bitmap.font.color = Color.new(243,220,144)
        elsif c == "\005" # 方法样式
          @bitmap.font.color = Color.new(243,150,144)
          @bitmap.font.bold = true
        else
          if c[0] > 33 && c[0] < 128
            @bitmap.draw_text(@col, (@line-1)*@f, 640, @f, c)
            @col = @col + @f/2
          else
            @bitmap.draw_text(@col, (@line-1)*@f, 640, @f, c)
            @col = @col + @f
          end
        end
      end
  end
  #--------------------------------------------------------------------------
  # ● 输出
  # vars        : 要观察的信息变量
  # f           : 字体大小
  #--------------------------------------------------------------------------
  def log( vars, f = 22 )
    # 初始化
    @p = 0
    @px = 0
    @line = 0
    @col = 0
    @f = f
    create
    # 创建信息
    message = "\n"
    message = message + "  \001所属类: \002"+vars.class.to_s+"\n"
    message = message + "  \001内容: \003"+vars.to_s + "\n"
    t = vars.methods
    i = 0
    attrs = []
    attrsM = ""
    metsM = ""
    mets = []
    logic = false
    for i in 0...t.length
        # 获取属性表
        c = t
        logic = c[0]  > 64 && c[0] < 91
        logic = logic || c[0]  > 96 && c[0] < 124
        logic = logic || c[0]  > 127
        if logic && c[c.length-1] == 61
         # p c[0].to_s + "  " + c[c.length-1].to_s
         #p c
          attrs.push(c.slice(0, c.length - 1))
          tmp = " "
          tmp = eval("vars."+attrs[attrs.length-1]).to_s
          attrsM = attrsM + "   \004" + attrs[attrs.length-1] + ":\002"+ tmp +"\n"
        else
            mets.push(c)
        end
      end
      # 获取方法表
      for i in 0...attrs.length
        mets.delete(attrs)
      end
      for i in 0...mets.length
        metsM = metsM + "   \002[ \005"+mets+" \002]\n"
      end
    # 拼接信息
    message = message + "  \001属性: \002共"+attrs.length.to_s+"个 \n"
    message = message + attrsM + "\n"
    message = message + "  \001方法:\002共"+mets.length.to_s+"个 \n"
    message = message + metsM + "\n\001"
    # 写出
    write( message )
    @content.blt(0, 0, @bitmap, Rect.new(@px*@f/2,@p*24,640,480))
    @sprite.z = 10000
    Graphics.transition
    # 等待操作
    wait
  end
  #--------------------------------------------------------------------------
  # ● 等待
  #--------------------------------------------------------------------------
  def wait
    loop do
      Graphics.update
      Input.update
      if Input.press?(Input::UP)
        @p = @p - 1
        @content.fill_rect(0, 0, 640, 480, Color.new(0,0,0, 150))
        @content.blt(0, 0, @bitmap, Rect.new(@px*@f/4,@p*6,640,480))
      end
      if Input.press?(Input::DOWN)
        @p = @p + 1
        @content.fill_rect(0, 0, 640, 480, Color.new(0,0,0, 150))
        @content.blt(0, 0, @bitmap, Rect.new(@px*@f/4,@p*6,640,480))
      end
      
      if Input.press?(Input::LEFT)
        @px = @px + 1
        @content.fill_rect(0, 0, 640, 480, Color.new(0,0,0, 150))
        @content.blt(0, 0, @bitmap, Rect.new(@px*@f/4,@p*6,640,480))
      end
      if Input.press?(Input::RIGHT)
        @px = @px - 1
        @content.fill_rect(0, 0, 640, 480, Color.new(0,0,0, 150))
        @content.blt(0, 0, @bitmap, Rect.new(@px*@f/4,@p*6,640,480))
      end
      if Input.trigger?(Input::B)
        dispose
        break
      end
    end
  end
end





代码API手册
  ⚪write    【将文本写出到debuger界面。该方法需要与wait一起使用】
        参数1:str字符串文本
        返回:  空

  ⚪log    【输出你的输入信息】
        参数1:要观察的对象
        参数2:可选参数。字体大小,默认22
        返回:  空

  ⚪wait    【等待渲染】
        返回:  空

脚本附件下载



             本帖来自P1论坛作者antilmid,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址:https://rpg.blue/forum.php?mod=viewthread&tid=477662  若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。
Loading...

QQ|Archiver|手机版|小黑屋|同能RPG制作大师 ( 沪ICP备12027754号-3 )

GMT+8, 2024-11-22 04:48 , Processed in 0.051289 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

返回顶部