| 
 
| 赞 | 1 |  
| VIP | 116 |  
| 好人卡 | 40 |  
| 积分 | 4 |  
| 经验 | 19804 |  
| 最后登录 | 2017-12-13 |  
| 在线时间 | 4175 小时 |  
 Lv2.观梦者 
 
	梦石0 星屑432 在线时间4175 小时注册时间2010-6-26帖子6474 | 
| 看看这个代码 我把FUKI对话框的那个改变字体颜色的脚本移植过去了,这样一来,我以为在RM的特技、装备等注解窗口输入复制代码class Window_Help < Window_Base
  #--------------------------------------------------------------------------
  # ● 初始化对像
  #--------------------------------------------------------------------------
  def initialize
    super(0, 0, 800, 64)
    self.contents = Bitmap.new(width - 32, height - 32)
  end
  #--------------------------------------------------------------------------
  # ● 设置文本
  #     text  : 窗口显示的字符串
  #     align : 对齐方式 (0..左对齐、1..中间对齐、2..右对齐)
  #--------------------------------------------------------------------------
  def set_text(text, align = 0)
    # 如果文本和对齐方式的至少一方与上次的不同
    if text != @text or align != @align
      # 再描绘文本
      self.contents.clear
      self.contents.font.color = normal_color
      # 为了方便、将 "\\\\" 变换为 "\000" 
      text.gsub!(/\\\\/) { "\000" }
      # "\\C" 变为 "\001"、"\\G" 变为 "\002"
      text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }
      text.gsub!(/\\[Gg]/) { "\002" }
      #后面这些是自己从别处移植过来的
      # c 获取 1 个字
      if ((c = text.slice!(/./m)) != nil)        
        case c
        when "\000"       # \\ 的情况下 
          # 还原为本来的文字
          c = "\\"
        when "\001"        #\C[n] 的情况下
          # 更改文字色
          text.sub!(/\[([0-9]+)\]/, "")
          color = $1.to_i
          if color >= 0 and color <= 7
            self.contents.font.color = text_color(color)
          end
        when "\002"        # \G 的情况下
        # 生成金钱窗口
          if @gold_window == nil
            @gold_window = Window_货币.new
            @gold_window.x = 560 - @gold_window.width
            if $game_temp.in_battle
              @gold_window.y = 192
            else
            @gold_window.y = self.y >= 128 ? 32 : 384
            end
            @gold_window.opacity = self.opacity
            @gold_window.back_opacity = self.back_opacity
          end        
        end        
        #为了兼容1.03版本特别修改一下:
        if c == "\001" or c == "\002" or c == "\003" or c == "\n"
          c = ""        
        end
        # dx 为要描绘文字的宽度加法运算
      end
      self.contents.draw_text(4, 0, self.width - 40, 32, text, align)
      @text = text
      @align = align
      @actor = nil
    end
    self.visible = true
  end
  #--------------------------------------------------------------------------
  # ● 设置角色
  #     actor : 要显示状态的角色
  #--------------------------------------------------------------------------
  def set_actor(actor)
    if actor != @actor
      self.contents.clear
      draw_actor_name(actor, 4, 0)
      draw_actor_state(actor, 140, 0)
      draw_actor_hp(actor, 284, 0)
      draw_actor_sp(actor, 460, 0)
      @actor = actor
      @text = nil
      self.visible = true
    end
  end
  #--------------------------------------------------------------------------
  # ● 设置敌人——RTAB有所变化
  #     enemy : 要显示名字和状态的敌人
  #--------------------------------------------------------------------------
  def set_enemy(enemy)
    text = enemy.name.sub(/\\[Ff]\[([0-9]+)\]/) {""}
    state_text = make_battler_state_text(enemy, 112, false)
    if state_text != ""
      text += "  " + state_text
    end
    set_text(text, 1)
  end
end
\c[5]
 就可以改变文字颜色了,结果发现两大问题
 1.必须在开头输入才行,无法从中间输入来改变后面内容的颜色
 2.更可怕的,吃字bug,有时候(例如返回主菜单然后重新进来)第一个字会消失,进而第二个,第三个……
 | 
 |