日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

如何优雅的研究 RGSS3 (七) 加入LOGO屏幕

發布時間:2025/4/16 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何优雅的研究 RGSS3 (七) 加入LOGO屏幕 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

對于游戲 LOGO 屏幕。

首先設計 LOGO Scene類。我們知道,現場類?Scene_Base 子類。

讓我們回顧一下現場的作品。

首先運行開始處理。其次是開始治療。然后停止更新屏幕,最后,治療結束前,理。

以下來逐個分析這些方法。


當進入?LOGO 畫面時,顯然不須要也不可能回到上一個畫面,因此在開始處理的方法中,我們要清空場景的切換記錄。

接下來要創建出須要顯示的 LOGO 圖片,可是不能讓它馬上顯示,而是要使其淡入畫面,因此要凍結住圖像的顯示。

最后播放 LOGO 畫面的音效。

#--------------------------------------------------------------------------# ● 開始處理#--------------------------------------------------------------------------def startsuperSceneManager.clearGraphics.freezecreate_logoplay_logo_musicend
在畫面開始后,我們要準備圖像的漸變、接受按鍵,并初始化計數器。

#--------------------------------------------------------------------------# ● 開始后處理#--------------------------------------------------------------------------def post_startperform_transitionInput.update@count = CONF_LOGO::DISP_FLAME_LOGOend
在更新畫面時。除了調用的更新畫面方法外。還要推斷LOGO畫面是否結束,結束則進入標題畫面。


#--------------------------------------------------------------------------# ● 更新畫面#--------------------------------------------------------------------------alias :_orig_update :updatedef update_orig_updateSceneManager.goto(Scene_Title) if disp_logo?end
而僅僅有按下跳過鍵或達到一定時間?LOGO 畫面才會結束。而這個一定的時間我們將它設置為一個常量,每次更新畫面時將計數器減一。當計數器為零時則結束 LOGO 畫面。

#--------------------------------------------------------------------------# ● 推斷LOGO畫面是否結束#--------------------------------------------------------------------------def disp_logo?if Input.trigger?(:C)true if CONF_LOGO::SKIP_LOGOelse@count -= 1true if @count <= 0endend
在結束 LOGO 畫面前不要忘了將圖片與音樂淡出。

#--------------------------------------------------------------------------# ● 結束前處理#--------------------------------------------------------------------------def pre_terminatefadeout_all(transition_speed)end


淡出方法也非常easy。

#--------------------------------------------------------------------------# ● 淡出聲音和圖形#--------------------------------------------------------------------------def fadeout_all(time)RPG::ME.fade(time) if @use_meGraphics.fadeout(time)RPG::SE.stop if @use_seRPG::ME.stop if @use_meend<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">?</span>


之后在結束處理中將圖片精靈消除。

#--------------------------------------------------------------------------# ● 結束處理#--------------------------------------------------------------------------def terminatesuperdispose_logoend
整個場景中事實上僅僅有一個精靈,也就是 LOGO 圖像精靈。

它在開始處理中創建。

#--------------------------------------------------------------------------# ● 生成LOGO#--------------------------------------------------------------------------def create_logo@sprite = Sprite.new@sprite.bitmap = Cache.system(CONF_LOGO::FILE_LOGO)center_sprite(@sprite)end


從緩存沖取出圖像創建出精靈。然后將精靈放置在屏幕中央。

#--------------------------------------------------------------------------# ● 精靈移動到屏幕中央#--------------------------------------------------------------------------def center_sprite(sprite)sprite.ox = sprite.bitmap.width / 2sprite.oy = sprite.bitmap.height / 2sprite.x = Graphics.width / 2sprite.y = Graphics.height / 2end


該精靈在結束處理中被釋放。

#--------------------------------------------------------------------------# ● 釋放LOGO#--------------------------------------------------------------------------def dispose_logo@sprite.bitmap.dispose@sprite.disposeend


在 Scene_Base?中有一個運行漸變?perform_transition 方法,它調用?transition_speed 獲取漸變速度。

我們將其重載為自己的版本號。

#--------------------------------------------------------------------------# ● 獲取漸變速度#--------------------------------------------------------------------------def transition_speedif Input.trigger?(:C)return 0elsereturn CONF_LOGO::FADE_SPEED_LOGOendend
LOGO 畫面中的音效在開始處理時調用 play_logo_music 播放。

#--------------------------------------------------------------------------# ● 播放LOGO顯示時的音效#--------------------------------------------------------------------------def play_logo_music@use_se = true@use_me = falselogo_music = RPG::SE.new(CONF_LOGO::MU_LOGO)logo_music.play rescue @use_se = falseunless @use_se@use_me = truelogo_music = RPG::ME.new(CONF_LOGO::MU_LOGO)logo_music.play rescue @use_me = falseendend

這樣我們的 LOGO 畫面類就設計好了,當中涉及到了很多常量,我們用一個專門的模塊來定義它們。

#============================================================================== # ■ CONF_LOGO #------------------------------------------------------------------------------ #  設定常量 #==============================================================================module CONF_LOGO# LOGO功能開關USE_LOGO = true# 回到標題畫面時是否顯示LOGO畫面RESET_LOGO = false# TEST時是否顯示LOGO畫面TEST_LOGO = true# 能否夠跳過LOGO畫面SKIP_LOGO = true# LOGO圖像文件名稱# (Graphics/System/設定的LOGO畫面文件名稱)FILE_LOGO = "logo"# LOGO畫面中的SE# (Audio/SE/設定的SE文件名稱 Audio/ME/設定的ME文件名稱)# ※當值為空時不播放MU_LOGO = ""# 淡入淡出漸變率(幀數)FADE_SPEED_LOGO = 10# LOGO顯示的時間的長度(幀數)DISP_FLAME_LOGO = 30end
重寫 SceneManager 中的 first_scene_class,使得最初的場景中顯示 LOGO 畫面。

#============================================================================== # ■ SceneManager #------------------------------------------------------------------------------ #  場景切換的管理器。

RGSS3 內置了新功能,在使用 call 方法切換新場景時,能夠 # 用 return 方法返回上一個場景。

#============================================================================== module SceneManager @reset_flg = true #-------------------------------------------------------------------------- # ● 獲取最初場景的所屬類 #-------------------------------------------------------------------------- def self.first_scene_class if CONF_LOGO::USE_LOGO and @reset_flg @reset_flg = false # 假設顯示LOGO if CONF_LOGO::TEST_LOGO # 假設在測試時顯示LOGO $BTEST ? Scene_Battle : Scene_Logo else # 假設不在測試時顯示LOGO $BTEST ? Scene_Battle : ( $TEST ? Scene_Title : Scene_Logo ) end else # 假設不顯示LOGO $BTEST ? Scene_Battle : Scene_Title end end end


完整的腳本插件代碼例如以下

#encoding:utf-8 #============================================================================== # ■ CONF_LOGO #------------------------------------------------------------------------------ #  設定常量 #==============================================================================module CONF_LOGO# LOGO功能開關USE_LOGO = true# 回到標題畫面時是否顯示LOGO畫面RESET_LOGO = false# TEST時是否顯示LOGO畫面TEST_LOGO = true# 能否夠跳過LOGO畫面SKIP_LOGO = true# LOGO圖像文件名稱# (Graphics/System/設定的LOGO畫面文件名稱)FILE_LOGO = "logo"# LOGO畫面中的SE# (Audio/SE/設定的SE文件名稱 Audio/ME/設定的ME文件名稱)# ※當值為空時不播放MU_LOGO = ""# 淡入淡出漸變率(幀數)FADE_SPEED_LOGO = 10# LOGO顯示的時間的長度(幀數)DISP_FLAME_LOGO = 30end#============================================================================== # ■ Scene_Logo #------------------------------------------------------------------------------ #  LOGO畫面。 #==============================================================================class Scene_Logo < Scene_Base#--------------------------------------------------------------------------# ● 開始處理#--------------------------------------------------------------------------def startsuperSceneManager.clearGraphics.freezecreate_logoplay_logo_musicend#--------------------------------------------------------------------------# ● 開始后處理#--------------------------------------------------------------------------def post_startperform_transitionInput.update@count = CONF_LOGO::DISP_FLAME_LOGOend#--------------------------------------------------------------------------# ● 更新畫面#--------------------------------------------------------------------------alias :_orig_update :updatedef update_orig_updateSceneManager.goto(Scene_Title) if disp_logo?end#--------------------------------------------------------------------------# ● 推斷LOGO畫面是否結束#--------------------------------------------------------------------------def disp_logo?if Input.trigger?(:C)true if CONF_LOGO::SKIP_LOGOelse@count -= 1true if @count <= 0endend#--------------------------------------------------------------------------# ● 結束前處理#--------------------------------------------------------------------------def pre_terminatefadeout_all(transition_speed)end#--------------------------------------------------------------------------# ● 結束處理#--------------------------------------------------------------------------def terminatesuperdispose_logoend#--------------------------------------------------------------------------# ● 獲取漸變速度#--------------------------------------------------------------------------def transition_speedif Input.trigger?(:C)return 0elsereturn CONF_LOGO::FADE_SPEED_LOGOendend#--------------------------------------------------------------------------# ● 生成LOGO#--------------------------------------------------------------------------def create_logo@sprite = Sprite.new@sprite.bitmap = Cache.system(CONF_LOGO::FILE_LOGO)center_sprite(@sprite)end#--------------------------------------------------------------------------# ● 釋放LOGO#--------------------------------------------------------------------------def dispose_logo@sprite.bitmap.dispose@sprite.disposeend#--------------------------------------------------------------------------# ● 精靈移動到屏幕中央#--------------------------------------------------------------------------def center_sprite(sprite)sprite.ox = sprite.bitmap.width / 2sprite.oy = sprite.bitmap.height / 2sprite.x = Graphics.width / 2sprite.y = Graphics.height / 2end#--------------------------------------------------------------------------# ● 播放LOGO顯示時的音效#--------------------------------------------------------------------------def play_logo_music@use_se = true@use_me = falselogo_music = RPG::SE.new(CONF_LOGO::MU_LOGO)logo_music.play rescue @use_se = falseunless @use_se@use_me = truelogo_music = RPG::ME.new(CONF_LOGO::MU_LOGO)logo_music.play rescue @use_me = falseendend#--------------------------------------------------------------------------# ● 淡出聲音和圖形#--------------------------------------------------------------------------def fadeout_all(time)RPG::ME.fade(time) if @use_meGraphics.fadeout(time)RPG::SE.stop if @use_seRPG::ME.stop if @use_meend end#============================================================================== # ■ SceneManager #------------------------------------------------------------------------------ #  場景切換的管理器。

RGSS3 內置了新功能,在使用 call 方法切換新場景時。能夠 # 用 return 方法返回上一個場景。 #============================================================================== module SceneManager @reset_flg = true #-------------------------------------------------------------------------- # ● 獲取最初場景的所屬類 #-------------------------------------------------------------------------- def self.first_scene_class if CONF_LOGO::USE_LOGO and @reset_flg @reset_flg = false # 假設顯示LOGO if CONF_LOGO::TEST_LOGO # 假設在測試時顯示LOGO $BTEST ? Scene_Battle : Scene_Logo else # 假設不在測試時顯示LOGO $BTEST ? Scene_Battle : ( $TEST ?

Scene_Title : Scene_Logo ) end else # 假設不顯示LOGO $BTEST ? Scene_Battle : Scene_Title end end end














總結

以上是生活随笔為你收集整理的如何优雅的研究 RGSS3 (七) 加入LOGO屏幕的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。