”トップページ用”カテゴリより画像をお借りしてます/対策として有効ではなかったため、投稿形式にzipを復活させました。引き続きなりすまし、パスワード付き圧縮ファイルにご注意ください

EC Cloth Card Pager (衣装カード分割読み込みプラグイン)

EC Cloth Card Pager (衣装カード分割読み込みプラグイン)

『エモーションクリエイターズ (Emotion Creators)』の衣装(コーディネート)カード一覧ウィンドウを**ページ分割+遅延読み込み(ページネーション)**化し、カード大量所持時の長時間のフリーズ・硬直を劇的に解消する BepInEx プラグインです。


💡 概要・開発の背景

公式仕様では、Hシーンやエディット画面で衣装カードウィンドウを開いた際、UserData/coordinate/ 内にあるすべての PNG カードを一括でデコードし、全行の UI を同時に生成します。
そのため、カードが数十〜数百枚以上ある環境では、ウィンドウを開くたびに数秒〜数十秒の激しいフリーズ(プチフリ)が発生していました。

本プラグインは以下の仕組みでこの問題を解消します:

  1. カードヘッダーのみを高速スキャンし、「現在表示中のページ(例: 16枚)」のみ UI とサムネイルを生成。

  2. 非表示ページのサムネイルキャッシュは即時解放し、メモリ消費を抑制。

  3. カードごとのサムネイル読み込みをスロットル制御(同時実行数制限)し、肥大化したカードによるディスク・CPU 負荷の急増を防止。


✨ 主な機能

  • カード一覧のページ分割表示(1ページあたりの件数は自由に変更可能)

  • ゲーム公式準拠のページ送り UI(公式ボタンから見た目・フォント・エフェクトを自動クローン)

  • キーボードショートカット対応(PageUp / PageDown などで快適にページ移動)

  • サムネイル同時読み込み制限(巨大な衣装カードによる瞬間的な過負荷を防止)

  • 超大容量カードのサムネ自動スキップ機能(設定値以上の巨大カードはサムネを省いて軽快に動作)

  • 柔軟な UI カスタマイズ(位置、サイズ、ボタン間隔のリアルタイム微調整対応)


🛠️ 動作環境・導入方法

必要環境

  • 『エモーションクリエイターズ』本体

  • BepInEx 5.x(64bit)

インストール方法

  1. ビルドされた ECClothCardPager.dll をダウンロードします。

  2. ゲームのインストールフォルダ内にある BepInEx/plugins/ フォルダへ配置してください。

    Text

    EmotionCreators/
    └── BepInEx/
        └── plugins/
            └── ECClothCardPager.dll
  3. ゲームを起動すると自動的に適用されます。


🎮 使い方

衣装カードウィンドウを開くと、画面下部(服・アクセサリ等のチェック欄横)または設定した位置にページ送りバーが表示されます。

ページ送りバーの構成

Text

[ |<< ]  [ < ]  [ 1 / 5 ]  [ > ]  [ >>| ]  [ 更新 ]
  • |<<:最初のページへ移動

  • <:前のページへ移動

  • 1 / 5:現在のページ番号 / 総ページ数(クリック不可の表示枠)

  • >:次のページへ移動

  • >>|:最後のページへ移動

  • 更新:フォルダ内のカードを再スキャンして一覧を更新

ショートカットキー(デフォルト)

  • PageUp:前のページ

  • PageDown:次のページ
    ※衣装カードウィンドウが表示されている間のみ有効です。


⚙️ 設定項目(Config)

ゲーム内プラグイン設定(BepInEx Configuration Manager 等)または BepInEx/config/com.yourname.ec.clothcard.pager.cfg から各設定を変更できます。

[General] 基本設定

項目名デフォルト説明
Enabledtrueプラグインの有効/無効。false にすると公式の一括全量読み込みに戻ります。
ScopeAll適用範囲。All(全シーン)、PlayOnly(Hシーン等プレイ時のみ)、EditOnly(エディット画面のみ)。
CardsPerPage161ページに表示するカード枚数。数値を小さくするほど開閉やページ送りが軽くなります。
MaxConcurrentThumbs4サムネイルの同時読み込み上限数。0 で無制限(公式動作)。数十〜数百MBの巨大カードが複数ある場合、ディスク負荷を大幅に軽減します。
SkipThumbOverMB0指定容量(MB)を超える巨大カードのサムネイル読み込みをスキップ(黒枠表示)します。0 で無効(常に読み込み)。重いカードが混ざっている場合、64 や 128 にすると動作が劇的によくなります。

[UI] ページ送りバーの配置・外観

項目名デフォルト説明
ShowPagerButtonstrue画面上にページ送りバーを表示するかどうか。
PagerAnchorLoadRow配置の基準位置。<br>・LoadRow: ウィンドウ下部「服/アクセサリ」や「読込」ボタン付近<br>・SortRow: リスト上部のソートボタン付近<br>・WindowBottom: ウィンドウ底面中央
PagerTemplateAutoボタンの外観コピー元。<br>Auto(自動判別)、SortRow(ソートボタン)、LoadRow(読込ボタン)、CloseButton(閉じるボタン)
PagerScale0.7ボタンの大きさ(倍率)。1.0 で元ボタンと同等サイズ、0.7 で少し小さめ。
PagerGap0.5ボタン同士の横方向の間隔(px)。
PagerOffsetX0.0水平方向の位置オフセット(正数で右へ移動、px単位)。
PagerOffsetY0.0垂直方向の位置オフセット(正数で上へ移動、px単位)。
PagerDirectionX1基準ボタンのどちら側に配置するか(1: 右側、-1: 左側)。※スペースがない場合は自動反転します。

[Hotkey] ショートカットキー設定

項目名デフォルト説明
Enabledtrueショートカットキーによるページ送りを有効にするか。
PrevPagePageUp前のページへ進むキー。
NextPagePageDown次のページへ進むキー。

[Debug] デバッグ・調査用

項目名デフォルト説明
DumpWindowLayoutfalsetrue にすると、初回生成時に衣装ウィンドウの UI 階層と座標情報をログに出力します(ボタン位置を微調整する際の確認用)。
VerboseLogfalseソートやページングの詳細ログを出力します。不具合調査用。

❓ よくある質問 (FAQ)

Q. ページ送りボタンが他のボタンと重なって押しにくいです。

A. ゲーム画面を開いたまま BepInEx Configuration Manager(F1 または F5 キー)から、UI セクションの PagerOffsetX や PagerOffsetY、PagerScale をスライダーで微調整してください。リアルタイムにボタン位置が更新されます。

Q. 「更新」を押しても新しく追加したカードが出てきません。

A. ページ送りバーの [更新] ボタンを押すと再スキャンが実行されます。それでも表示されない場合は、カードが正しく UserData/coordinate/ フォルダ配下に置かれているか確認してください。

Q. 他の衣装・カード拡張プラグインと競合しますか?

A. 本プラグインは LoadCoordinateFileSystem のリスト初期化・ソート・カテゴリ処理のみをフック(Prefix)しています。カードのデータ自体を破壊・変更することはないため、基本的なプラグインとは安全に併用可能です。

コメント

タイトルとURLをコピーしました