スクリプトリファレンス([Root]パーツ) - SpriteStudio/SS6PlayerForUnity GitHub Wiki

SS6Player for Unity(以降「SS6PU」)のアニメーション制御用クラス(Script_SpriteStudio6_Root)のパーツ管理関係の機能群のスクリプトリファレンスです。


アニメーション番号の取得

関数(動的)

int CountGetParts()

引数

返値

パーツ数
-1 ... 失敗(エラー)

解説

アニメーションで使用されているパーツ数を取得します。


パーツIDの取得

関数(動的)

int IDGetParts(string name)

引数

  • name : パーツ名

返値

パーツID
-1 ... 失敗(エラー)

解説

アニメーションで使用されているパーツを示すIDを取得します。
アニメーションを制御する際でパーツを扱う場合、必ずこの値が必要になります。

アニメーションのオブジェクト(シーン上の実体に限らず、その元になっているプレハブなど)が同一である限り、パーツ名とIDは静的に一対になっています(元のデータが再インポートなどで変わらない限り、名前に対応したパーツIDが変わることはありません)。
そのため、使用する頻度が高いパーツの場合、目的のパーツIDをキャッシュ(最初に取得して、その値を保持)しておくことを推奨します。

パーツIDは、「0 ~ CountGetParts-1」の値をとります。


パーツの強制非表示設定

関数(動的)

bool HideSet(
        int idParts,
        bool flagSwitch,
        bool flagInvolveChildren=false
    )

引数

  • idParts : パーツID
  • flagSwitch : 非表示状態
  • flagInvolveChildren : 子パーツへの設定の扱い

返値

true ... 成功
false ... 失敗(エラー)

解説

パーツの強制的な非表示状態を設定します。
本関数で非表示を設定すると、アニメーションのデータの如何を問わず、パーツが非表示になります。

パーツIDは、IDGetParts関数を使用して取得してください。

idPartsに「-1」を指定すると、「アニメーションオブジェクト自体に非表示状態を設定」します。
一見すると、「idPartsを0・flagInvolveChildrenをtrue」を指定した場合と同じように見えます(そして結果もほぼ同じになります)が、用途が明確に異なるので注意してください。
※「パーツIDが0」は常に「Rootパーツ」で・全てのアニメーションパーツは「Rootパーツの子パーツ」なので、「idPartsを0・flagInvolveChildrenをtrue」は、すなわち「全てのパーツ」の指定になります。

idPartsを-1にした場合は、インスペクタのHide Forceと同じもので、有効なidParts(0 ~ CountGetParts-1)での指定と別に働きます(優先度としては最上位なります)。
一方「idPartsを0・flagInvolveChildrenをtrue」は「全てのパーツに非表示状態を設定」します。
そのため、idPartsを「-1」に指定した設定を再設定するには(同様に)idPartsに「-1」を指定して再設定する必要があります(同様に、「idPartsを0・flagInvolveChildrenをtrue」の場合は、「idPartsを0・flagInvolveChildrenをtrue」か「(forループなどで)全てのパーツに対して」再設定を行う必要があります)。

flagInvolveChildrenに「true」に指定すると、idPartsが示すパーツの子パーツに対しても、flagSwitchを設定します。

flagSwitchは「trueで強制的に非表示」「falseでアニメーションデータでの指定に従う(表示)」動作になります。


パーツが持つ当たり判定の非表示同期設定 (Ver.2.0以降)

関数(動的)

bool ColliderSetInterlockHide(
        int idParts,
        bool flagSwitch,
        bool flagInvolveChildren=false
    )

引数

  • idParts : パーツID
  • flagSwitch : 同期状態
  • flagInvolveChildren : 子パーツへの設定の扱い

返値

true ... 成功
false ... 失敗(エラー)

解説

パーツの非表示状態に当たり判定(コリジョン・コライダ)の有効・無効を同期させます。

パーツIDは、IDGetParts関数を使用して取得してください。

idPartsに「-1」を指定すると、「アニメーションオブジェクト自体に同期状態を設定」します。
一見すると、「idPartsを0・flagInvolveChildrenをtrue」を指定した場合と同じように見えます(そして結果もほぼ同じになります)が、用途が明確に異なるので注意してください。
※「パーツIDが0」は常に「Rootパーツ」で・全てのアニメーションパーツは「Rootパーツの子パーツ」なので、「idPartsを0・flagInvolveChildrenをtrue」は、すなわち「全てのパーツ」の指定になります。

idPartsを-1にした場合は、インスペクタのHide Forceと同じもので、有効なidParts(0 ~ CountGetParts-1)での指定と別に働きます(優先度としては最上位なります)。
一方「idPartsを0・flagInvolveChildrenをtrue」は「全てのパーツに非表示状態を設定」します。
そのため、idPartsを「-1」に指定した設定を再設定するには(同様に)idPartsに「-1」を指定して再設定する必要があります(同様に、「idPartsを0・flagInvolveChildrenをtrue」の場合は、「idPartsを0・flagInvolveChildrenをtrue」か「(forループなどで)全てのパーツに対して」再設定を行う必要があります)。

flagInvolveChildrenに「true」に指定すると、idPartsが示すパーツの子パーツに対しても、flagSwitchを設定します。

flagSwitchは、trueで「パーツの非表示状態なら当たり判定も無効」になり、falseで「非表示状態に関わらず常に有効」の動作になります。
また、ここでの「非表示」は「アニメーション等の結果の非表示」であり、「SpriteStudo6上でのパーツに設定された非表示の設定」ではありません。


パーツのカラーラベル種別の取得

関数(動的)

Library_SpriteStudio6.Data.Parts.Animation.ColorLabel.KindForm FormGetColorLabel(
        int idParts
    )

引数

  • idParts : パーツID

返値

パーツに設定されているカラーラベルの種別
-1 ... 失敗(エラー)

解説

パーツに設定されているカラーラベルの種別を取得します。

パーツIDは、IDGetParts関数を使用して取得してください。

取得できる種類はSpriteStudio6で設定できる内容と同じで、現在は下記になります(型はLibrary_SpriteStudio6.Data.Parts.Animation.ColorLabel.KindFormです)。

  • NON : なし(カラーラベルが設定されていない)
  • RED : レッド(赤)
  • ORANGE : オレンジ(橙)
  • YELLOW : イエロー(黄)
  • GREEN : グリーン(緑)
  • BLUE : ブルー(青)
  • VIOLET : ヴァイオレット(菫)
  • GRAY : グレー(灰)
  • CUSTOM : カスタム(任意)

また、SpriteStudio6上で、「カスタム色」設定で定型色と同じ成分を設定した(例えば「レッド」のRGBと同じ値)を設定した場合、本関数で取得される値は「CUSTOM」になります。

設定された色の実際の色成分を取得したい場合、ColorGetColorLabel関数を使用してください。


パーツのカラーラベル色の取得

関数(動的)

UnityEngine.Color ColorGetColorLabel(
        int idParts
    )

引数

  • idParts : パーツID

返値

パーツに設定されているカラーラベルの実際の色成分
RGBA全成分0.0f(完全透明) ... カラーラベルが指定されていない(もしくは失敗)

解説

パーツに設定されているカラーラベルの実際の色成分を取得します。

パーツIDは、IDGetParts関数を使用して取得してください。

SpriteStudio6で設定したパーツのカラーラベルの設定方法(標準カラー群・カスタム)に関わらず、実際の色を取得できます(主にカスタム色での設定時の色を取得する目的で使用します)。

SpriteStudio6ではカラーラベルの不透明度(A)成分を指定することはできませんが、本関数は色が設定されている場合に不透明度成分を常に1.0fとした色を返します。
※つまり、実際に色が指定されているか(もしくはエラー)をチェックする場合、厳密にRGBA全ての要素が0.0fであることを見る必要はなく、不透明度成分が1.0f未満であれば、色が指定されていない(もしくはエラー)とみなすことができます。


パーツの反転状態の設定 (Ver.2.0以降)

関数(動的)

bool FlipSetParts(
        int idParts,
        bool flagFlipX,
        bool flagFlipY,
        bool flagFlipImageX,
        bool flagFlipImageY,
        bool flagInvolveChild=false
    )

引数

  • idParts : パーツID
  • flagFlipX : パーツ自体の横方向反転状態
  • flagFlipY : パーツ自体の縦方向反転状態
  • flagFlipImageX : パーツ内の画像の横方向反転状態
  • flagFlipImageY : パーツ内の画像の縦方向反転状態
  • flagInvolveChildren : 子パーツへの設定の扱い

返値

true ... 成功
false ... 失敗(エラー)

解説

パーツ自体の反転・図柄の反転状態を設定します。

パーツIDは、IDGetParts関数を使用して取得してください。

本関数にはidPartsに「-1」を指定することはできません(アニメーションオブジェクト自体への反転設定が存在しないためです)。
アニメーション全体に指定設定を影響させたい場合、「idPartsを0・flagInvolveChildrenをtrue」を指定してください。

flagInvolveChildrenに「true」に指定すると、idPartsが示すパーツの子パーツに対しても、flagSwitchを設定します。

flagFlipXは、trueで「パーツ自体の横方向を反転させる(パーツのローカルスケールXを符号反転したのと同じ)」、falseで「パーツ自体の横方向を反転させない」状態に設定されます。
flagFlipYは、trueで「パーツ自体の縦方向を反転させる(パーツのローカルスケールYを符号反転したのと同じ)」、falseで「パーツ自体の縦方向を反転させない」状態に設定されます。

flagFlipImageXは、trueで「パーツの画像(図柄のマッピング状態)を横方向を反転させる(パーツのイメージ左右反転をチェックしたのと同じ)」、falseで「パーツの画像を横方向反転させない」状態に設定されます。
flagFlipImageYは、trueで「パーツの画像(図柄のマッピング状態)を縦方向を反転させる(パーツのイメージ上下反転をチェックしたのと同じ)」、falseで「パーツの画像を縦方向反転させない」状態に設定されます。


最親Rootの取得

関数(動的)

Script_SpriteStudio6_Root RootGetHighest()

引数

返値

指定されたアニメーション制御を制御している最親のScript_SpriteStudio6_Root
null ... エラー / 自身が最親

解説

自身を起点として、自身が他のアニメーションオブジェクトの子(インスタンスアニメーション)であった場合、制御している最上位のアニメーションオブジェクトを取得します。


アニメーション制御クラスの取得

関数(静的)

Class: Parts
Script_SpriteStudio6_Root RootGet(
        GameObject gameObject,
        bool flagApplySelf=true
    )

引数

  • gameObject : 起点となるGameObject
  • flagApplySelf : gameObject自身を検査に含むか

返値

最初に発見されたScript_SpriteStudio6_Rootの参照
null ... 失敗(エラー) / 発見できなかった

解説

gameObjectを起点に子のGameObjectを走査して、最初に発見されたアニメーション制御(Script_SpriteStudio6_Root)を返します。

注意点としては、「最初に発見された」という点です。
子GameObject群の中に複数のScript_SpriteStudio6_Rootがあっても、走査ロジック上で最初に見つかったScript_SpriteStudio6_Rootのみを返します。
また、gameObjectの直下(直子)にあるGameObject群までは「最初に発見された=最も浅い階層にある」ということが保証されますが、孫以上の階層になった場合、「最初に発見された=最も浅い階層にある」ということが保証されなくなります。
※「インスタンス」アニメーションを含んだアニメーションについては、構造上、確実に「(インスタンスアニメーションの)親アニメーションが持つScript_SpriteStudio6_Root」を発見できます(「インスタンス」が持っているScript_SpriteStudio6_Rootを先に発見してきてしまうことはありません)。

flagApplySelfをfalseにすると、gameObject自身は走査対象に含まず、直子のGameObject群から走査を開始します。