お世話になっております。SS6Player for Unity(以降SS6PU)開発担当です。
現在、SS6PUはランタイムでのマテリアルの解放はUnityに一任しています。
※SS6PUでは現在独自の解放や(SS6PUのプレーヤー内部処理での)複製・変更などは行っていないという意味です。
ただ、どうもプロジェクトの運用状態などによっては、ランタイムで解放されたオブジェクトが持っていたマテリアルがリークされるケースがあるようです。
お手元のUnityプロジェクトの状態・データの使用(運用)状態がわからないので確定的な理由については断定できませんが、例えば下記のような事例等もあります。
-------
【Unity】DestroyしたオブジェクトのMaterialがリークする問題への対応
https://qiita.com/ShajikuWorks/items/da5ee4bc55832218f39a
-------
[Unity] Rendererのmaterialプロパティはメモリリークの原因になりうる
https://qiita.com/IKD-Member/items/4cb4a3ab97b6006d2652
もしこの事例に当てはまるとした場合の例で、下記のような形でScript_SpriteStudio6_Rootクラスに追加実装を行うことで解消できる可能性もあります。
※Script_SpriteStudio6_Rootクラスはpartialにしてありますので、外部から関数や変数などを追加実装することが可能です。
------- ここから
public partial class Script_SpriteStudio6_Root
{
void OnDestroy()
{
if(null != InstanceMeshRenderer)
{
foreach(UnityEngine.Material material in InstanceMeshRenderer.materials)
{
Destroy(material);
}
}
}
}
------- ここまで
※下記リストは、1つめのURLの記事でサンプルされているOnDestroy関数の処理内容をそのまま移植(メッシュレンダラをどう取得しているかが違うだけ)したものです。元の通りにDestroyImmediateを使用するかDestroyを使用するかはお手元のプロジェクトの状況に合わせてください。
以上がご質問いただいた情報の範囲で類推した返信となります。
ご検証の材料としていただければ幸いです。
何卒今後ともよろしくお願いいたします。