Project1

标题: 如何改變Window_Message字的顏色 [打印本页]

作者: 燕征    时间: 2016-5-31 23:34
标题: 如何改變Window_Message字的顏色
我想使所有的文字都是黑色,希望可以不透過每一個對話自加\c[]的方式來改
參考過 怎么更改标题画面以及菜单栏的字体颜色?
裡面提供了這樣的作法
自定義腳本

在改換Title和存讀檔的字體顏色上我都成功更換了,只有遊戲裡的文字顯示我怎麼改都改不了

我想這個應該是關於Window_Message,所以我自定義一個 class Window_Msg < Window_Message 內容同上的東西
去Scene_Map把Window_Message換成Window_Msg,無效
所以我又嘗試去Window_Base改def normal_color制定的顏色
為了以防萬一,Window_Message裡的 self.contents.font.color = normal_color 我也改成了 self.contents.font.color = Color.new(0, 0, 0, 255)
我外掛的"文字顯示強化"也做了關於normal_color的改動

全局搜索過 "normal"和"Message"兩個關鍵字看過,沒有發現我認為會影響的地方有漏掉
所以想請問到底應該要改些什麼?

作者: 夜狠简单    时间: 2016-6-1 14:56
#--------------------------------------------------------------------------
  # ● 获取文字色
  #     n : 文字色编号 (0~7)
  #--------------------------------------------------------------------------
  def text_color(n)
    case n
    when 0
      return Color.new(255, 255, 255, 255)
    when 1
      return Color.new(128, 128, 255, 255)
    when 2
      return Color.new(255, 128, 128, 255)
    when 3
      return Color.new(128, 255, 128, 255)
    when 4
      return Color.new(128, 255, 255, 255)
    when 5
      return Color.new(255, 128, 255, 255)
    when 6
      return Color.new(255, 255, 128, 255)
    when 7
      return Color.new(192, 192, 192, 255)
    else
      normal_color
    end
  end
  #--------------------------------------------------------------------------
  # ● 获取普通文字色
  #--------------------------------------------------------------------------
  def normal_color
    return Color.new(255, 255, 255, 255)
  end
作者: 燕征    时间: 2016-6-7 22:32
過了一個禮拜感覺可以再自頂一次0a0
作者: cinderelmini    时间: 2016-6-8 14:05
本帖最后由 cinderelmini 于 2016-6-9 13:57 编辑
  1. def normal_color; return Color.new(0, 0, 0); end
复制代码
这行放在【Window_Message】里面最后一个end之前任一空行。

请在默认工程里尝试,如果使用了其他相关的外挂脚本,最好提供相关内容,
默认工程里这样是没问题的,其他的窝是不知道了……
顺便放个饭粒: 对话框文字颜色.zip (201.15 KB, 下载次数: 53)
作者: 燕征    时间: 2016-6-9 21:25
本帖最后由 燕征 于 2016-6-9 21:30 编辑

應該確實是我外掛的"文字顯示強化"腳本影響的。

之前已經試著把裡面refresh用到normal_color的地方換成了Color.new(0, 0, 0, 255)
後面也有試著把
RUBY 代码复制
  1. def normal_color; return Color.new(0, 0, 0); end
放進去,但是死活沒有反應
我看大大的範本確實是可以的,然後把用到的這個外掛放下去就打回原形

"文字顯示強化"連同變動以放入附上的工程中,下面另收外掛腳本
def normal_color; return Color.new(0, 0, 0); end在 line 8
refresh用到的self.contents.font.color = normal_color以註解方式在 line 57
改為self.contents.font.color = Color.new(0, 0, 0, 255)在line 58

文字顯示強化

對話框文字顏色.rar

196.47 KB, 下载次数: 43


作者: cinderelmini    时间: 2016-6-10 15:04
本帖最后由 cinderelmini 于 2016-6-12 15:13 编辑
燕征 发表于 2016-6-9 21:25
應該確實是我外掛的"文字顯示強化"腳本影響的。

之前已經試著把裡面refresh用到normal_color的地方換成了C ...


把重定义normal_color那句放进Window_Message类之后,
文字绘制强化脚本其他地方不用改,只改下面这个方法:

给上面这个方法加了两处文字颜色改变(行末有备注)

分割线


或者你可以在【文字顯示強化】里面的【reset_window】方法里找到:
  1. self.contents = Bitmap.new(self.width - 32, self.height - 32)
复制代码
然后在它下面加上:
  1. self.contents.font.color = normal_color
复制代码
因为这个窗口里的Bitmap实例对象self.contents在这里被重建了,
然后这个Bitmap里的Font的所有属性都是新的(也就是默认的,color是Color.new(255, 255, 255, 255)),
而这个方法在refresh方法内部使用,
且refresh设定Font字号和颜色的句子在方法开头,而reset_window在这之后,
所以导致前面设定的Font属性是无效的。





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