お世話になっております。
SS6Player for Unity(以下SS6PU)担当です。
一点、最初に確認なのですが……
現在ご使用のSS6PUのバージョンをご確認いただければと思います。
※Unityの上部メニューバー「Tools」>「SpriteStudio6」>「About」にて確認できます。
もし、Ver.1.1.3以前でしたら(現在最新はVer.1.1.5です)、
https://github.com/SpriteStudio/SS6PlayerForUnity
※SS6PUのGitHubです。
から、最新版を取得頂けますようお願いいたします。
ブランチは、現在「master」「develop」「sampledevelop」のいずれも、Ver.1.1.5になっているはずなので、ご随意のブランチから取得してください。
- 「master」は安定版(developよりも少し古いバージョンのタイミングがあります)
- 「develop」は現在最新版
- 「sampledevelop」はサンプル付きのdevelop
となっています。
※Ver.1.1.3でマテリアルテーブルのコピーにバグがあることがレポートされましたため、それを改修したのがVer.1.1.4以降になります。
※できれば、SS6PUについてご質問いただけます場合に、ご使用のバージョン番号を併記していただけますと、確認上非常に助かります。
次に……
セルマップ番号の1と2がTable-MaterialのNo[20-39]とNo「40-59」を指しており、ここにあるマテリアルが変更されると思ったのですが
については、ご認識されている通りです。
最後に、ご指摘いただいた件なのですが、当方で検証してみたのですが、結果は正常に動作しておりました。
簡単な検証コードを下記しますと(前回同様、お手数ですが色付背景の部分をテキストエディタなどに貼り付けて見ていただけると判り易いと思います)
/* マテリアルテーブルのシャローコピー(簡易複製)をとる */
/* MEMO: ここの時点ではマテリアルは全部プロジェクト内のものを指しています。 */
Material[] tableMaterial = ScriptRoot.TableCopyMaterialShallow();
Material[] tableMaterialOriginal = ScriptRoot.TableCopyMaterialShallow();
/* テクスチャを変更(セルマップ0を変更) */
/* MEMO: 最後の引数にtrueを与えることで、該当するマテリアルを複製した新しい別の実体を割り当てています。 */
Script_SpriteStudio6_Root.Material.TextureSet(tableMaterial, 1, SwapTexture, true);
/* 2つのシャローコピーを比較する */
for(int i=0; i<tableMaterial.Length; i++) {
/* MEMO: TextureSetをtrueで行っているので、書き換えたところは参照が異なっている */
if(tableMaterial[i] != tableMaterialOriginal[i]) {
Debug.Log("Different Material [" + i.ToString() + "]");
}
}
/* 複製したテーブルを設定 */
ScriptRoot.TableSetMaterial(tableMaterial);
となります。
上記のリストは、先日のシャローコピー版で、シャローコピーを2つとり・片方を書き換え後に比較して、書き換わったマテリアルのテーブルインデックスを出力するだけの簡単なものです。
一応、こちら含め、実際でもテクスチャが変更されるかなども確認しましたが、いずれも(当方検証の範囲内ですと)正常に動作しております。
もし、Ver.1.1.4以降(当方でテストしたのはVer.1.1.5です)でも正常に動作されないようでしたら、該当箇所のスクリプトなどを弊社サポートまで送付いただけたりしますと、弊社でも類似の実装で確認できるかと思います。
※スクリプトは全てでなくて構いません。該当の処理を行っている箇所をメールなどにペーストしていただけるだけでも大丈夫です。
以上となります。
お忙しい中お手数をおかけして申し訳ございませんが、何卒ご検証の程お願い申し上げます。