PSMerger
- 無料版Digital0 JPY
- kaikogaがCSCombinerをギフトで購入する(内容は無料版と同じ)Digital100 JPY
- 旧版Digital0 JPY

clusterのPlayerScriptやItemScriptをマージします。 CSCombiner https://vkao.booth.pm/items/5924956 をかなり参考にしました!
これは何ですか?
・複数のPlayerScriptを同時に動かしたい時に使います PlayerScript は同時に1つしか登録できず、PlayerScriptの onFrame() や onReceive() は同時に1つしか登録できないので、複数の PlayerScript アセットは基本的には同時に動きませんが、それをなんとかします。 例えば配布された OSC スクリプトを使いながら自分のワールド用の PlayerLocalUI や PlayerStorage を操作したい時にべんりです。 ・ItemScriptやPlayerScriptのソースコードを結合したい時に使います CSCombinerと同様の単純なソースコード結合もできます。
インストール方法
unitypackageをUnityのプロジェクトに追加すると、VPAI( https://booth.pm/ja/items/4951120 )経由でPSMergerがインストールされます。 その際、 VRChat 向けのワールド・アバタープロジェクトを持っているなどで既に ALCOM を利用している場合は、 vpm.kaikoga.net Millenium https://vpm.kaikoga.net/millenium/ がリポジトリに追加されます。(が、驚かないでください。)
使用方法
◆ ScriptableItem にマージ `Components` -> `Silksprite` -> `PSMerger` 以下に PSMerger のコンポーネントがあります。 ScriptableItem に PlayerScriptMerger または ItemScriptMerger コンポーネントを追加すると、その場でマージされます。 PlayerScriptMerger を使う場合は、マージされたPlayerScriptがスペース内のすべてのプレイヤーに適用されるItemScriptが自動で設定されます。 (コンポーネントやプレハブの設定を変更します。) ◆ JavaScriptAsset にマージ `Assets` -> `Create` -> `Silksprite` -> `PSMerger` -> `ClusterScriptAssetMerger` を利用すると、マージされたスクリプトをJavaScriptアセットに出力できます。 git 管理されたプロジェクトでプレハブの差分を減らしたい時に便利です。 PSMerger 2.0.0 以上では試験的なソースマップ出力も行えます。 設定したマージ対象は、「Compile」ボタンを押した時の他、以下のタイミングで自動で更新されます。 ・ワールドをアップロードする ・プレビューを再生する
注意事項
マージされたスクリプトはなるべく複数のスクリプトが同時に動いてるような挙動をするように頑張っていますが、一部のAPIは微妙に挙動が異なります。 具体的には以下のような感じです。 ・ ClusterScript.onReceive()は常に { item: true, player: true } が設定されたものとして動作します。 ・ ClusterScript.onPurchaseUpdated() は他のスクリプトが subscribePurchase() した購入情報も受信します。 ・ UnityComponent.onClick() は共存できません。後勝ちになります。 ・他のスクリプト由来のコールバックも呼ばれるので、区別するために meta を活用してください。 (生成された JavaScript を読める人は、そうしたほうがわかりやすいかもしれません)
Sourcemap サポート
オプションで、ソースマップを出力することもできます。 ソースマップを出力すると、 ClusterScript Log Console Window 2 ( https://kaikoga.booth.pm/items/7084684 ) とかで便利です。
PSCollector
PSMerger 2.0.0 では PSCollector を追加しました。 `Components` -> `Silksprite` -> `PSCollector` 以下に PSCollector のコンポーネントがあります。 ScriptableItem や PlayerScript に「PS Asset Collector」コンポーネントを刺すと、シーン内の「Merged World Item Reference List」や「Merged Player Local Object Reference List」の内容を対応するコンポーネントにマージして書き込みます。 ※注意:既存の設定内容は上書きされます! 注意:残念ながら、「 Merged Item Material Set List 」は存在しません!
PSMerger CSExEx
PSMerger 3.0.0 では PSMerger CSExEx を追加しました。 同梱の PSMergerCSExEx-x.x.x-VPAI.unitypackage を、 ClusterScriptExtension ( https://booth.pm/ja/items/6089933 ) と一緒にインストールしてください。( ClusterScriptExtension が必要です) PlayerScript Merger や ItemScript Merger に対応する「 PlayerScript Merger Extension」や「ItemScript Merger Extension」が追加されます。 マージするスクリプトにClusterScriptExtension の書き方でコメントを書くことで、インスペクタから値を設定することができるようになります。 (設定された値は、スクリプトをマージするタイミングで適用されます)
アップデート履歴
[2025-08-16: v4.0.0] アップデート。 ・ワールドアップロードできない不具合を修正。 [2025-08-10: v3.0.0] アップデート。 ・ PSMergerCSExEx 追加。 [2025-07-14: v2.1.0] アップデート。 ・Script Library指定時にSourceMapが正常に出力されない不具合を修正。 [2025-06-21: v2.0.0] アップデート。 ・ PSCollector 追加。 ・ 試験的なソースマップ出力を追加。 [2025-05-31: v1.0.0] 公開。