Open SpriteStudio opened 9 years ago
特定パーツの色を変える場合はアニメーション再生処理のメッシュ加工の処理に手を加える必要があります。
対応方法:SS5PUを改造する
特定パーツのオーバーレイ色を動的に設定するためのSS5PUの改造方法になります。
これを応用して、Script_SpriteStudio_PartsRootに動的オーバーレイ色を持つことで、各Script_SpriteStudio_Triangle2/4からScriptRootメンバを経由して、アニメーション全体の色を動的に変化させる方法にも転用可能です。
パーツのインスタンス毎に存在しているScript_SpriteStudio_Triangle2/4.csのUpdate関数の中にある「SpriteStudioData.UpdateMesh」の処理の直後にdataMeshのcolor32メンバの値を書き換えます。
安全なのは、別個に「Color32[] DataColor32 = new Color32[CountVertexData];」として希望するオーバーレイ色のテーブルを作成し、それをdataMeshのcolor32メンバに再割り当てする方法となります。
オーバーレイ色の合成オペレーション方法の設定は、dataMeshのuv2メンバの.yにオペレーション番号(Library_SpriteStudio.KindColorOperation列挙)を設定することで設定可能です。
ただし、列挙の値をfloatにキャストしてそのまま与えてしまうと、浮動小数の丸め誤差が起こる可能性があるので、キャスト後に+0.01f程度の微小な値を加算しておくことを推奨します。
注意点
CountVertexDataの具体的な値については、呼び出すスプライトパーツのスクリプトが「~_Triangle2」「~_Triangle4」とで異なります。
Color32のAの成分は、SS上でのカラーブレンドの「%」に対応している点です。SS上のカラーブレンドのAに対応しているのは、dataMeshのuv2メンバの.xになります。 この値を変更するとパーツが透けてしまいますので、基本的には変更しないことを推奨します。
備考
このあたりの処理については、Library_SpriteStudio.csのAnimationDataSpriteクラス内「UpdateMesh」関数の「Set Vertex-Datas」の注釈以降の処理が参考になると思います。
「SpriteStudioData.UpdateMesh」関数に引数を追加した上で、「UpdateMesh」関数の内容を改造される形でも構いません。 それぞれのクラス内にColor/Color32とオペレーション方法を格納するような場合、privateスコープで変数宣言を行い、プロパティで外部から操作する方法を推奨します。
特定パーツの色を変える場合はアニメーション再生処理のメッシュ加工の処理に手を加える必要があります。
対応方法:SS5PUを改造する
特定パーツのオーバーレイ色を動的に設定するためのSS5PUの改造方法になります。
これを応用して、Script_SpriteStudio_PartsRootに動的オーバーレイ色を持つことで、各Script_SpriteStudio_Triangle2/4からScriptRootメンバを経由して、アニメーション全体の色を動的に変化させる方法にも転用可能です。
パーツのインスタンス毎に存在しているScript_SpriteStudio_Triangle2/4.csのUpdate関数の中にある「SpriteStudioData.UpdateMesh」の処理の直後にdataMeshのcolor32メンバの値を書き換えます。
安全なのは、別個に「Color32[] DataColor32 = new Color32[CountVertexData];」として希望するオーバーレイ色のテーブルを作成し、それをdataMeshのcolor32メンバに再割り当てする方法となります。
オーバーレイ色の合成オペレーション方法の設定は、dataMeshのuv2メンバの.yにオペレーション番号(Library_SpriteStudio.KindColorOperation列挙)を設定することで設定可能です。
ただし、列挙の値をfloatにキャストしてそのまま与えてしまうと、浮動小数の丸め誤差が起こる可能性があるので、キャスト後に+0.01f程度の微小な値を加算しておくことを推奨します。
注意点
CountVertexDataの具体的な値については、呼び出すスプライトパーツのスクリプトが「~_Triangle2」「~_Triangle4」とで異なります。
Color32のAの成分は、SS上でのカラーブレンドの「%」に対応している点です。SS上のカラーブレンドのAに対応しているのは、dataMeshのuv2メンバの.xになります。 この値を変更するとパーツが透けてしまいますので、基本的には変更しないことを推奨します。
備考
このあたりの処理については、Library_SpriteStudio.csのAnimationDataSpriteクラス内「UpdateMesh」関数の「Set Vertex-Datas」の注釈以降の処理が参考になると思います。
「SpriteStudioData.UpdateMesh」関数に引数を追加した上で、「UpdateMesh」関数の内容を改造される形でも構いません。 それぞれのクラス内にColor/Color32とオペレーション方法を格納するような場合、privateスコープで変数宣言を行い、プロパティで外部から操作する方法を推奨します。