お世話になっております。SS6Player for Unity開発担当です。
サポート担当(瀬良)から、プレーヤーのスクリプト改造のヒントについて要請がありましたので、別返信にてフォローさせていただきます。
まず、パーツをセルマップ毎などで変更しようとすると、改造などもかなり大掛かりになるかと思いますので、最低限の改造で済みそうな提案となります。
「パーツ毎でパーツカラーを(スクリプトから)設定する」ような改造方法になります。
※これを必要なパーツに対して行うことで、目的は達成できるのではないかと思います。
SS6Player for Unity(Ver.1.1.32)の、パーツ毎のワークエリアがあります。
Script_SpriteStudio6_Root.TableControlParts[n]
※nはパーツのインデックス(パーツID)です。
このワークの中に、
internal BufferParameterSprite ParameterSprite;
という描画パーツのみで内容が有効な描画情報のワークエリアがあります。
この構造体の中に、
internal BufferAttribute<Library_SpriteStudio6.Data.Animation.Attribute.PartsColor> PartsColor;
という、「アニメーションデータからデコードした、パーツカラーの値をキャッシュしておく」メンバ変数(フィールド)があります。
ここ(ParameterSprite.PartsColor)の内容を変更することで、実際に描画されるアニメーションにパーツカラーを影響させることができるかと思います。
このキャッシュの値は、
- SpriteStudio6で作成されているアニメーション側で指定されていない場合、「効果なし」に指定されています。ただし、アニメーション側で指定してしまっていると、ワークに自力で設定した値は上書きされてしまいます。
- アニメーション変更時には(BufferParameterSprite.AnimationChange関数で)クリア(効果なしに設定)されてしまいます。
- 動的パーツカラー(アニメーション全体に影響する方)を使用していると、そちら(動的パーツカラー)が優先されてしまいます。
という点に注意していただければ、恐らくこのワークを任意の色・合成方法に変更することで、各パーツ個別に任意で指定するようにすることができるかと思います。
具体的に改造して・動作検証したわけではありませんので、少々決め手にかけるヒントとなってしまい、大変申し訳ございませんが、もしご要望の動作への一助となれば幸いです。