ページ 1 / 1
【解決済】移動ルートの設定でイベントのスプライトを削除
Posted: 2019年10月08日(火) 23:37
by DEDEN
移動ルートの設定から実行中のイベントのスプライトを消したいです
イベントの一時消去などではスプライトが残ってしまうので重くなってしまいます
透明化ではなくスプライト自体を消したいです
見つけたスクリプト素材はどれも移動ルートの設定からは消せませんでした
どうか宜しくお願いします
Re: 移動ルートの設定でイベントのスプライトを削除
Posted: 2019年10月12日(土) 23:38
by ぽんぽこねるそん
少し時間がたっているのでもう解決しているかもしれませんが
一応スクリプトを貼っておきます。
イベントの数が極端に多いとそれだけで重いのでイベント自体を削除できるようになっています。
コード: 全て選択
#移動ルートの設定のスクリプトで delete_sprite と記述すると
#イベントのスプライトを削除します。
#移動ルートの設定のスクリプトで delete と記述すると
#イベントとイベントのスプライトを削除します。
#==============================================================================
# ■ Game_Map
#------------------------------------------------------------------------------
# マップを扱うクラスです。スクロールや通行可能判定などの機能を持っています。
# このクラスのインスタンスは $game_map で参照されます。
#==============================================================================
class Game_Map
#--------------------------------------------------------------------------
# ● イベントの更新
#--------------------------------------------------------------------------
alias event_delete_update_events update_events
def update_events
event_delete_update_events
@events.delete_if {|key, event| event.delete_flag && !self.interpreter.running?}
end
end
#==============================================================================
# ■ Game_CharacterBase
#------------------------------------------------------------------------------
# キャラクターを扱う基本のクラスです。全てのキャラクターに共通する、座標やグ
# ラフィックなどの基本的な情報を保持します。
#==============================================================================
class Game_CharacterBase
#--------------------------------------------------------------------------
# ● 公開インスタンス変数
#--------------------------------------------------------------------------
attr_reader :dispose_flag # 開放フラグ
attr_reader :delete_flag # 削除フラグ
#--------------------------------------------------------------------------
# ● スプライト削除
#--------------------------------------------------------------------------
def delete_sprite
end
#--------------------------------------------------------------------------
# ● 削除
#--------------------------------------------------------------------------
def delete
end
end
#==============================================================================
# ■ Game_Event
#------------------------------------------------------------------------------
# イベントを扱うクラスです。条件判定によるイベントページ切り替えや、並列処理
# イベント実行などの機能を持っており、Game_Map クラスの内部で使用されます。
#==============================================================================
class Game_Event < Game_Character
#--------------------------------------------------------------------------
# ● スプライト削除
#--------------------------------------------------------------------------
def delete_sprite
@dispose_flag = true
erase
end
#--------------------------------------------------------------------------
# ● 削除
#--------------------------------------------------------------------------
def delete
delete_sprite
@delete_flag = true
end
end
#==============================================================================
# ■ Sprite_Character
#------------------------------------------------------------------------------
# キャラクター表示用のスプライトです。Game_Character クラスのインスタンスを
# 監視し、スプライトの状態を自動的に変化させます。
#==============================================================================
class Sprite_Character < Sprite_Base
#--------------------------------------------------------------------------
# ● フレーム更新
#--------------------------------------------------------------------------
alias dispose_update update
def update
dispose if @character.dispose_flag
dispose_update unless disposed?
end
end
#==============================================================================
# ■ Spriteset_Map
#------------------------------------------------------------------------------
# マップ画面のスプライトやタイルマップなどをまとめたクラスです。このクラスは
# Scene_Map クラスの内部で使用されます。
#==============================================================================
class Spriteset_Map
#--------------------------------------------------------------------------
# ● キャラクタースプライトの更新
#--------------------------------------------------------------------------
alias dispose_update_characters update_characters
def update_characters
dispose_update_characters
@character_sprites.delete_if {|sprite| sprite.character.dispose_flag }
end
end
Re: 移動ルートの設定でイベントのスプライトを削除
Posted: 2019年10月13日(日) 14:16
by DEDEN
ありがとうございます
劇的に軽くなりました
スプライトと同時にイベント自体も削除する機能も凄く便利です