【解決済】移動ルートの設定でイベントのスプライトを削除

DEDEN
記事: 58
登録日時: 2018年8月25日(土) 15:06

【解決済】移動ルートの設定でイベントのスプライトを削除

投稿記事by DEDEN » 2019年10月08日(火) 23:37

移動ルートの設定から実行中のイベントのスプライトを消したいです
イベントの一時消去などではスプライトが残ってしまうので重くなってしまいます
透明化ではなくスプライト自体を消したいです
見つけたスクリプト素材はどれも移動ルートの設定からは消せませんでした
どうか宜しくお願いします
最後に編集したユーザー DEDEN on 2019年10月13日(日) 14:16 [ 編集 1 回目 ]

ぽんぽこねるそん
記事: 53
登録日時: 2018年10月26日(金) 12:24

Re: 移動ルートの設定でイベントのスプライトを削除

投稿記事by ぽんぽこねるそん » 2019年10月12日(土) 23:38

少し時間がたっているのでもう解決しているかもしれませんが
一応スクリプトを貼っておきます。
イベントの数が極端に多いとそれだけで重いのでイベント自体を削除できるようになっています。



コード: 全て選択

#移動ルートの設定のスクリプトで 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
DEDEN
記事: 58
登録日時: 2018年8月25日(土) 15:06

Re: 移動ルートの設定でイベントのスプライトを削除

投稿記事by DEDEN » 2019年10月13日(日) 14:16

ありがとうございます
劇的に軽くなりました
スプライトと同時にイベント自体も削除する機能も凄く便利です

“VX / Ace:スクリプト素材のリクエスト” へ戻る