โดยหลักๆการเขียน Scene ขึ้นมาใหม่จะมีส่วนสำคัญๆอยู่ 3 ตัวคือ
1.class -> ชื่อของ Scene ที่ต้องการ
2.main -> เป็นส่วนกำหนดว่าต้องการเรียกใช้ Window อะไรบ้าง
3.update-> เป็นส่วนให้กำหนดว่าเวลาเรากดคีย์ใดๆ แล้วจะเกิดอะไรขึ้น
ตัวอย่างการเขียน Scene ใหม่
Code:
class Scene_ชื่อที่ต้องการ #ชื่อ Scene ที่ต้องการ
  def main
    # กำหนดช้อยส์คอมมานที่จะให้เลือกว่ามีอะไรบ้าง โดยเพิ่มเลขหลัง s ไปเรื่อยๆ
    s0 = "เนื้อหาที่จะโชว์ 1"
    s1 = "เนื้อหาที่จะโชว์ 2"
    s2 = "เนื้อหาที่จะโชว์ 3"
    # 200คือความกว้างWindow ส่วนเลข s0-3 คือตัวหนังสือตามที่เรากำหนด
    @command_window = Window_Command.new(200, [s0, s1, s2])
    # ตำแหน่งแกน y ของ command_window 
    @command_window.y = 64 #เลือนกรอบลงมา 64พิคเซคเพื่อเหลือพื้นที่ใ้ห้ช่อง Help
    # เรียกใช้หน้าต่าง help
    @note_window = Window_Help.new
    # เริ่มเรียกใช้ Scene และเรียก window ทั้งหมด
    Graphics.transition
    loop do
      Graphics.update
      Input.update
      update
      if $scene != self
        break
      end
    end
    Graphics.freeze
    #ลบ window ต่างๆเมื่อออกจาก Scene
    @command_window.dispose 
    @note_window.dispose 
  end #จบ main
#--------------------------------------------------------------------------
def update
    # เมื่อตำแหน่ง เคอเซอร์อยู่ที่ when ใดก็ให้โชว์ข้อความนั้นๆที่ window help
    case @command_window.index 
      when 0
        @note_window.set_text("แสดงคำอธิบายเนื้อหา 1", 0)
      when 1
        @note_window.set_text("แสดงคำอธิบายเนื้อหา 2", 0)
      when 2
        @note_window.set_text("แสดงคำอธิบายเนื้อหา 3", 0)
      end
    #อัพเดทตำแหน่งเคอเซอร์
    @command_window.update
    # เมื่อกด X (ยกเลิก) 
    if Input.trigger?(Input::B) 
      # เรียกใช้เสียงเวลากด cancel
      $game_system.se_play($data_system.cancel_se)
      # ไปหน้าจอ
      $scene = Scene_Map.new 
    # จบการเช็คเมื่อกด X
    end
    # เมื่อกด C (ตกลง)
    if Input.trigger?(Input::C) 
        # เรียกใช้เสียงเวลากด ตกลง
        $game_system.se_play($data_system.decision_se)
      # เมื่อตำแหน่ง เคอเซอร์อยู่ที่ when ใดเวลากด C ก็ให้เกิดเหตุการณ์นั้นๆ
      case @command_window.index 
        when 0
          เหตุการณ์ 1
        when 1
          เหตุการณ์ 2
        when 2 
          เหตุการณ์ 3
      end
        # ตรงนี้อาจมีการเรียกใช้ Scene นี้อีกครั้งเพื่ออัพเดทข้อมูลหลังจากกด C
        $scene = Scene_ชื่อที่ต้องการ.new 
    end
  end
end
loop ที่อยู่ด้านล่าง Graphics.transition  เอาไว้สำหรับตรวจเช็คว่าหน้าเมนูนั้น ๆ ถูกโหลดขึ้นมาหรือยังน่ะครับ (ถ้าจำไม่ผิดนะ) ถ้ายังโหลดไม่ขึ้นก็จะลูปไปเรื่อย ๆ จนกว่าจะโหลดขึ้น ถึงออกจากลูป
การเรียกใช้ window ใดๆใน Scene นี้ จะไม่ยุ่งเกี่ยวกับ window เดียวกันในหน้าต่างอื่น
จึงสามารถกำหนด เพิ่ม/ลด window หรือตำแหน่งของ window ใน Scene นี้ได้เลย เช่น
		Show ContentSpoiler:
		
กำหนดความโปร่งใส
Code:
ชื่อวินโดว์.opacity = 0 ถึง 255
 
ตำแหน่งแกน x
Code:
ชื่อวินโดว์.x = 0 ถึง 640
 
ตำแหน่งแกน y
Code:
ชื่อวินโดว์.y = 0 ถึง 480
 
ตำแหน่งแกน Z
Code:
ชื่อวินโดว์.z = เท่าไรก็ได้ แต่ยิ่งมากจะยิ่งงบังหน้าต่างอื่น
 
กว้างของวินโดว์
Code:
@status_window.width = 0 ถึง 640
 
ความสูงของวินโดว์
Code:
@status_window.height = 0 ถึง 480
โดยหลักๆคือใส่ต่อหลังจากเรียก window เรียบร้อยแล้ว
เช่นถ้าต้องการปรับความสูงของ Window_Help เป็น 64 ก็จะใส่ว่า
Code:
@note_window = Window_Help.new
@note_window.height = 64
 
	 
การทำพื้นหลัง Scene แบบโปร่งใส่ (เห็นแม็บ)
		Show ContentSpoiler:
		
ให้ก็อบ
Code:
@map = Spriteset_Map.new
ใส่ใต้
และ ก็อบ
ใส่ใต้
ก่อนถึง end
 
	 
การใส่พื้นหลังให้ Scene 
		Show ContentSpoiler:
		
ให้ก็อบ
Code:
@ชื่อพื้นหลัง = Sprite.new
@ชื่อพื้นหลัง.bitmap = RPG::Cache.picture("ชื่อรูปในโฟลเดอร์ Pictures")
ใส่ใต้
ห้ามใส่ใต้วินโดว์อื่น เพราะรูปจะบังหน้าต่างนั้นได้ (โค๊ตจะอ่านไล่จากบนลงล่าง)
และ ก็อบ
Code:
@ชื่อพื้นหลัง.dispose
ใส่ใต้
ก่อนถึง end
 
	 
การเรียกใช้ Scene
		Show ContentSpoiler:
		
ใช้คำสั่งเรียกใช้สคริปแล้วเรียกว่า
Code:
$scene = Scene_ชื่อที่ต้องการ.new
 
	 
ตย.การ เรียกใช้ Scene
ต.ย.เมนูเปลี่ยนฟอนท์ระหว่างเล่น
![[Image: ss-sc-1.png]](http://upic.me/t/2o/ss-sc-1.png)
![[Image: ss-sc-2.png]](http://upic.me/t/sy/ss-sc-2.png)
http://www.mediafire.com/?mxmn0xygixj
เครดิต : Shinryu
การทำพื้นหลังเลื่อนไว้บทในบทการอัพเดทวินโดว์ละกัน