程式的部分,到這邊完成之後就告一段落了(吧)

遊戲的開頭畫面我還沒去改他,不過那邊我會放在比較後面的進度再去動它...至少是我要公開之前(也太晚)。

 


 

這邊主要是描述一下介面的呼叫和宣告。

 

 

 

 

在指令碼中,遊戲預設開頭為"Scene"、在場景處理下的幾頁,這邊包含了介面被呼叫出來時的設定、退出和更新的方法。

當然也可以在這裡設定A介面呼叫B介面這樣,具體方式是 $scene = class名稱.new,且根據該class的start設定可能需要參數。


舉例來說:

        $scene = Scene_File.new(true, false, false)

這行在Scene_Menu中呼叫讀檔畫面,而class名稱就要到名稱是Scene_File的那一頁找。

class Scene_File

可以發現這裡有一個被宣告成叫作Scene_File的class,歐對了那個code的顏色是我自己的習慣,看不懂沒關係,總之有上色有保佑

仔細看一下會發現這個class跟我剛剛貼的另一行程式不太一樣,他的前面沒有空格,也就是沒有抬頭。這是一種讓程式變得更方便易懂的編排方式,VX預設的指令碼裡面的程式也都是這樣排的。

class a_must_smaller_than_b      #最外圈class

       if  ( a > b)                          #包含在class底下

             a = a - b                      #包含在上一行的 if底下

       end

end

 

好像不是很有必要說這個ˊ_ˋ,有在摸CODE的人都知道才對,最好是養成習慣。

 

總之看一下Scene_File就會發現,這個class涵蓋了整頁。也就是說這一頁所定義的function全部都要經由Scene_File才能夠使用。

在一頁裡面定義多個class理論上只要VX沒檔就沒問題,士說這個也沒必要檔的感覺。因為這麼作對使用者並沒有好處,除非能記住自己的class們散落在哪,不然基本上一頁還是一個class比較方便。

 

那就拿這一頁來說明一下介面能做的事情。重點有4個: 初始化、開始、中斷、更新。然後因為我並沒有完全摸透,所以沒寫的地方就是我真的不知道了。

話說這只是筆記好像也沒必要講這麼多。

 

 

 

 

 

 

初始化。可以看到這裡有三個參數,就是剛才呼叫的時候必須放入的三個參數。呼叫.new的時候基本上就是呼叫這個function。

要是初始化沒有要參數,那一開始呼叫的時候就不用參數了。不如說是因為是存讀檔這樣特殊的介面才會有這個存在。通常這個會放在Window_開頭的頁面中,創新的介面的時候要注意一下。
  def initialize(saving, from_title, from_event)
    @saving = saving
    @from_title = from_title
    @from_event = from_event
  end 

 

開始。要是沒有initialize,那呼叫最先執行的就是start。
  def start
    super                                                                  #我對他沒有很熟,雖然這裡有說明但是我並沒有看懂。但是他很重要
    create_menu_background
    @help_window = Window_Help.new                      #呼叫Window_Help底下的介面
    create_savefile_windows                                       #呼叫存讀檔介面,同class底下必須要有這個名字的function
    if @saving
      @index = $game_temp.last_file_index
      @help_window.set_text(Vocab::SaveMessage)
    else
      @index = self.latest_file_index
      @help_window.set_text(Vocab::LoadMessage)
    end
    @savefile_windows[@index].selected = true
  end

 

中斷。簡單來說就是把該關的都關一關。dispose在VX裡面就是把介面關掉,有創的就要關,不然他會留著。然後要是這裡有寫說要關掉,start那邊卻沒有呼叫的話會出錯。
  def terminate
    super
    dispose_menu_background
    @help_window.dispose
    dispose_item_windows
  end


更新。...................坦白說我覺得沒甚麼好講的。有創+會變動的介面就要update,當然你不想讓他動的話就不update也行,他不會出錯。但是selection不更新的話整個遊戲進到這個介面之後就不動了,除非你關掉他,這個放在下面講。
  def update
    super
    update_menu_background
    @help_window.update
    update_savefile_windows
    update_savefile_selection
  end
 

 以上的程式中(以下的也是),有@開頭的都是變數,沒有@的就是直接呼叫有該名稱的function,沒有宣告的話會出錯。

想要在一個介面中同時顯示多個介面的話,則那些介面的update、terminate跟create都要在同樣的class下宣告。

 

 

 

另外還有一個同樣重要的

這個function決定的是在這個介面中對完家按下的按鈕作出的反應,名稱則是隨著update裡面可以作更動。

   def update_savefile_selection
    if Input.trigger?(Input::C)             #檢查你是不是按了Z              
      determine_savefile                     #按下Z之後要做的事情   
    elsif Input.trigger?(Input::B)         #沒有按Z的話就檢查有沒有按X
      Sound.play_cancel                      #按下X之後要做的事情
      return_scene
     ~吃掉~

 


 

 

差不多就這樣,跟自己製作一個新的介面...我覺得差異不大。

 

 

 

 

 

 

 

補上一個比較特別的(?)

help_window連結(?)的時候要是沒有作任何設定會抓錯資料。

 

@item_window.help_window = @help_window        #連結help_window和item_window    

@item_window.index = 0                                       #設定item_window現在指到哪個物品

以上兩行,如果先連結再設定的話會看到預設抓錯資料,要將先後順序對調才能正常使用。

 

 

再補上(?)

draw_item_name的宣告位置是Window_Base,有心要改的人可以參考一下

貼個關鍵字"只想畫物品圖示"

 

創作者介紹
IVY

思緒集散地

IVY 發表在 痞客邦 PIXNET 留言(0) 人氣()