Skip to content

スクリプトリファレンス: アニメーション全体制御

YITSUSE, Masami edited this page Apr 20, 2015 · 19 revisions

本「アニメーション全体制御」機能群は下記で定義されています。
クラス名: Script_SpriteStudio_PartsRoot
スクリプトファイル: SpriteStudio/Script/Script_SpriteStudio_PartsRoot.cs

本機能群は、原則下記の呼び出し方法になります。
本クラスのインスタンス名.関数名(....);
本クラスのインスタンス名.変数名
本クラスのインスタンス名.プロパティ名

-- 注釈:
本リファレンス中で、「インスタンス」(かぎ括弧なし)と書かれている場合は「クラスの実体(プログラム用語)」を指し、「「インスタンス」アニメーション」(かぎ括弧あり)と書かれている場合は「SpriteStudio5」のインスタンス機能を使用して作られたデータ群(及びそのデータをインポートしたSS5Player for Unityのデータ)を指します。

--

▼アニメーション再生制御関数群

アニメーション再生のための関数群は、下記のものが提供されています。

--

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

public int AnimationGetIndexNo(
             string AnimationName
             )

引数:

  • AnimationName : アニメーション名

返値:

  • アニメーション番号
    -1 ... 失敗(エラー)

機能解説:
アニメーション名からアニメーション番号を取得します。
アニメーション名が発見できなかった場合、本関数はエラーを返します。

--

アニメーションの再生開始

public bool AnimationPlay(
             int No,
             int TimesPlay,
             int FrameInitial,
             float RateTime,
             PlayStyle KindStylePlay,
             string LabelStart,
             int FrameOffsetStart,
             string LabelEnd,
             int FrameOffsetEnd
             )

引数:

  • No: アニメーション番号(省略時: -1...現状設定を変更しない)
  • TimesPlay: 再生回数(省略時: -1...現状設定を変更しない)
  • FrameInitial: 再生開始時オフセットフレーム(省略時: -1...現状設定を変更しない)
  • RateTime: 再生速度係数(省略時: 0.0f...現状設定を変更しない)
  • KindStylePlay: 再生方式(省略時: PlayStyle.NO_CHANGE...現状設定を変更しない)
  • LabelStart: 再生区間先頭基準ラベル(省略時: ""...現状設定を変更しない)
  • FrameOffsetStart: 再生区間先頭オフセット(省略時: int.MinValue...現状設定を変更しない)
  • LabelEnd: 再生区間終端基準ラベル(省略時: ""...現状設定を変更しない)
  • FrameOffsetEnd : 再生区間終端オフセット(省略時: int.MaxValue...現状設定を変更しない)

返値:

  • 複製されたマテリアルテーブル(の参照)
    null ... 失敗(エラー)

機能解説:
アニメーションの再生を開始します。

再生区間は「LabelStartが示すフレーム+FrameOffsetStart」~「LabeEndが示すフレーム+FrameOffsetEnd」で、ループ時も本区間が適用されます。
FrameStartがアニメーション中に発見できない場合、再生区間の先頭基準位置は指定アニメーションの先頭になります。
FrameEndがアニメーション中に発見できない場合、再生区間の終端基準位置は指定アニメーションの末尾になります。
FrameInitialは、再生区間の先頭からのオフセットフレーム数です。

RateTimeは再生速度の係数(倍率)で、2.0fなら倍速、0.5fなら半分速になります。
また、本値に負数を設定すると逆再生を行います。

PlayCountは「再生回数」で、1を指定するとループしない・0を指定すると無限ループ指定となります。
指定された再生回数を再生終了すると、再生終了時のコールバック(後述)が行われます。

KindStyleは、(Script_SpriteStudio_PartsRoot.)PlayStyleに定義される再生方法種別で、「NORMAL」なら単方向再生・「PINGPONG」なら往復再生を行います。
本値にPINGPONGを指定した場合、「区間を1往復したら、再生回数1回」とカウントされます。

本関数は再生できないようなパラメータを与えられた場合(アニメーション番号が不正など)にエラーを返します。

--

アニメーションの再生停止

public void AnimationStop()

引数:

返値:

機能解説:
現在再生しているアニメーションを停止します。

--

アニメーションの再生一時停止状態の設定

public bool AnimationPause(
             bool FlagSwitch
             )

引数:

  • FlagSwitch : true...一時停止 / false...一時停止解除

返値:

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

機能解説:
現在再生しているアニメーションの一時停止状態を設定します。
※後の機能変更のため本関数は処理成否の返値を持っていますが、現状falseを返すことはありません。

--

アニメーションが再生中かのチェック

public bool AnimationCheckPlay()

引数:

返値:

  • true...再生中 / false...再生していない

機能解説:
現在、アニメーションを再生中かをチェックします。

--

アニメーションが一時停止中かのチェック

public bool AnimationCheckPause()

引数:

返値:

  • true...一時停止中 / false...一時停止していない

機能解説:
現在、アニメーションが一時停止中かをチェックします。
アニメーションが再生中でない場合、本関数は必ずfalseを返します。

--

▼アニメーション再生コールバック機能群

アニメーション再生時に発生するコールバック機能群は、下記のものが提供されています。
いずれも、(関数ではなく)プロパティでコールバック処理関数を設定します。

--

アニメーションの再生終了時コールバック

(プロパティ)
internal Library_SpriteStudio.FunctionCallBackPlayEnd FunctionPlayEnd
※本プロパティは「Ver.1.2.3」より後の直近のバージョンアップで、publicスコープに変更されます。

機能解説:
アニメーションが再生終了した際に呼び出されるコールバック関数を設定するためのプロパティです。
本プロパティに直接関数(の参照)を代入することでコールバックが機能します(nullを設定すると、コールバックを行いません)。

本コールバックは、「MonoBehaviour.LateUpdate」のタイミングで呼び出されます。
LateUpdate内での厳密な処理順序は下記の様になります。

  1. 描画
  2. ユーザーデータの検知コールバック処理
  3. 本コールバック処理
    そのため、本プロパティに定義されたコールバック処理関数では、「その次のフレームで処理すべき情報を設定する」程度に留め、あまり複雑な処理は行わないことを推奨いたします。

デリゲート型:
public delegate bool FunctionCallBackPlayEnd(
             GameObject ObjectControl
             );

デリゲート関数引数:

  • ObjectControl: 再生終了したアニメーションの最親オブジェクト(解説要参照)

デリゲート関数返値:

  • true...アニメーションをシーンに残存させる / false...アニメーションをシーンから消去する

デリゲート関数機能解説:
アニメーションが終了した際にコールバックされる関数型です(FunctionPlayEndに代入することができる関数は、本デリゲート型と同じ引数と返値である必要があります)。

ObjectControlに渡ってくるGameObjectは、「どのPrefabを使用したか」で変わってきますので注意してください。

  • 制御用プレハブ(~_Control)をシーンに設置ないしInstantiateした場合: 制御用プレハブのインスタンスのGameObject
  • 制御用プレハブを使用せずに(インポート時に「Prefab」フォルダ内に格納されているプレハブを独自のGameObjectなどの下に付ける等で)シーンに設置ないしInstantiateした場合: Script_SpriteStudio_PartsRoot.csが割り当てられている(Rootパーツの)GameObject

※正確には、「Script_SpriteStudio_PartsRoot.csを持つプレハブが、Script_SpriteStudio_LinkPrefabを通してシーン上に設置もしくはInstantiateされたのか否か」で変わります。

また、本関数がfalseを返した場合に削除されるGameObjectの基点も、上記の違いと同様となります。

--

アニメーションデータ中のユーザーデータコールバック

(プロパティ)
internal Library_SpriteStudio.FunctionCallBackUserData FunctionUserData
※本プロパティは「Ver.1.2.3」より後の直近のバージョンアップで、publicスコープに変更されます。

機能解説:
アニメーションがユーザーデータを持つフレームを再生した際に呼び出されるコールバック関数を設定するためのプロパティです。
本プロパティに直接関数(の参照)を代入することでコールバックが機能します。
本値にnullを設定すると、コールバックを行いません。

アニメーション再生中にフレームスキップが起こった場合、パーツ毎でフレームスキップ区間のユーザーデータを「再生されたはずの順序を守って」発行されます(Unityの仕様上GameObjectの処理順序が不定なため、パーツ同士の順序は不定となりますが、パーツ内での再生フレーム順序を守って・区間内にあるユーザーデータの数だけコールバック関数が呼び出されます)。

本コールバックは、「MonoBehaviour.LateUpdate」のタイミングで呼び出されます。
LateUpdate内での厳密な処理順序は下記の様になります。

  1. 描画
  2. 本コールバック処理
  3. アニメーション再生終了時コールバック処理
    そのため、本プロパティに定義されたコールバック処理関数では、「その次のフレームで処理すべき情報を設定する」程度に留め、あまり複雑な処理は行わないことを推奨いたします。

デリゲート型:
public delegate void FunctionCallBackUserData(
             GameObject ObjectControl,
             string PartsName,
             Library_SpriteStudio.AnimationData AnimationDataParts,
             int AnimationNo,
             int FrameNoDecode,
             int FrameNoKeyData,
             Library_SpriteStudio.KeyFrame.ValueUser.Data Data,
             bool FlagWayBack
             );

デリゲート関数引数:

  • ObjectControl: コールバックを発生したアニメーションの最親オブジェクト(解説要参照)
  • PartsName: コールバックを発生したパーツ名
  • AnimationDataParts: コールバックを発生したパーツの静的アニメーションデータ
  • AnimationNo: 再生中のアニメーション番号
  • FrameNoDecode: デコードされた時の再生フレーム番号
  • FrameNoKeyData: ユーザーデータが設置されているフレーム番号
  • Data: 検知されたユーザーデータの内容
  • FlagWayBack: true...往復(ピンポン)再生時の帰り道 / false...通常再生もしくは往復(ピンポン)再生時の行き道

デリゲート関数返値:

デリゲート関数機能解説:
アニメーション再生中にユーザーデータを検知した際にコールバックされる関数型です(FunctionUserDataに代入することができる関数は、本デリゲート型と同じ引数と返値である必要があります)。

AnimationDataPartsについては、過去互換性のために設置されていますが、「Ver.1.2.0」以降はアニメーションデータが(ScriptableObjectを使用した)外部静的データに変更になっているため、本値の内容は書き換えないように注意してください(「Ver.1.1.18」以前は、各インスタンスがアニメーションデータを保持していたために影響範囲が当該インスタンスのみとなり書き換え可能でしたが、「Ver.1.2.0」以降は静的アニメーションデータを書き換えてしまうので、同じ静的アニメーションデータを参照している全てに影響が及ぶ他、プロジェクトのデータを破壊してしまうことにつながるため、絶対に内容変更を行わないでください)。

Dataが内包しているユーザーデータについては、Dataの下記のプロパティで各値が格納されているかどうかを知ることができます。

  • Data.IsNumber : 整数データを所有しているか?
  • Data.IsRectangle : 領域データを所有しているか?
  • Data.IsCoordinate : 頂点データを所有しているか?
  • Data.IsText : テキストデータを所有しているか?

上記の各プロパティ値が「true」である場合に、下記の各値を取得できます。

  • uint型: Data.Number
  • Rect型: Data.Rectangle
  • Vector2型: Data.Coordinate.Point
  • string型: Data.Text

※Dataも、AnimationDataPartsと同様に、静的アニメーションデータ内の情報が直接渡されますので、本値を書き換えないように注意してください。

FlagWayBackは往復(ピンポン)再生時の行き帰りを判定するための情報ですが、逆再生などが絡んだ場合に、下記の規則で変化します(往復再生時以外では本値は常にfalseになります)。

  • 正方向再生時: フレーム進行方向が+方向である時にfalse / -方向である場合にtrue
  • 逆方向再生時: フレーム進行方向が-方向である時にfalse / +方向である場合にtrue

ObjectControlで渡されるGameObjectは、「アニメーションの再生終了時コールバック」と同じ仕様になっています。
ただし、「Ver.1.2.3」までは「Script_SpriteStudio_LinkPrefabを通さずにシーンに配置・Instantiateされた」場合でも、Rootパーツの親のGameObjectを返してしまうバグがあります。
本件は「Ver.1.2.3」より後の直近のバージョンアップで修正されます。
※「Ver.1.2.3」より後のバージョンを使用して・かつアプリケーション制作の都合上「Ver.1.2.3」以前と完全互換の振る舞いを望まれる場合、「Script_SpriteStudio_PartsRoot.cs」の中を「Until "Ver.1.2.3"」で検索していただき、その直上の「#if false」を「#if true」に変更していただくことで、「Ver.1.2.3」までと互換の引数内容となります。

--

▼表示状態制御関数群

アニメーションの表示状態制御のための関数群は、下記のものが提供されています。

--

表示状態の設定

public void HideSetForce(
             bool FlagSwitch,
             bool FlagSetChild,
             bool FlagSetInstance
             )

引数:

  • FlagSwitch: true...強制非表示 / false...表示(アニメーションデータに従う)
  • FlagSetChild: true...子パーツにも適用 / false...自身にのみ適用(省略時: false)
  • FlagSetInstance: true...「インスタンス」アニメーションの実体にも適用 / false...自身にのみ適用(省略時: false)

返値:

機能解説:
パーツの表示状態を設定します。
ただし、本クラスで指定した場合には、アニメーション全体(呼び出している「インスタンス」アニメーションも含みます)の表示状態を設定します。
本関数で非表示状態にしても「表示されない」だけで、「アニメーションの更新」は行われますので、その点はご注意ください。

FlagSetChildをtrueにすると、表示状態を(自身の直下の)子パーツ全てに設定します。
FlagSetInstanceをtrueにすると、自身が呼び出している「(SpriteStudio5の機能名の)インスタンス」アニメーションの実体にも設定を行います。

FlagSetChildとFlagSetInstanceは、特殊な設定を行うために付いていますが、実用上省略状態で使用しても殆ど問題ないと思われます。
特にFlagSetInstanceについては、「インスタンス」アニメーションの実体に対して設定するよりも、呼び出し元の「インスタンス」パーツに対して本関数を呼び出した方が効果的なので、余程特殊な場合を除いてtrueを設定する機会はないと思われます。
また、FlagSetChild・FlagSetInstanceはtrueにすると、子パーツを走査した処理を行うためCPU負荷がかかる場合がありますので、注意してください。

--

表示不透明度変更(使用非推奨

(プロパティ)
internal float RateOpacity

機能解説:
Rootパーツ以下の各パーツの不透明度を制御します(0.0f:完全透明~1.0f:完全不透明)。
ただし、本プロパティは、使用を非推奨とします(使用した場合のサポートも原則お断りさせて頂きます)。

本値を操作すると、Rootパーツ以下の全ての各パーツに独立して、不透明度が効果します(つまり、パーツの継ぎ目などが透けて多重半透明描画になってしまいますので、アニメーション全体の半透明化と異なります)。
原則本値については、「インスタンス」アニメーションの不透明度を制御するために設けられている内部機能ですので、正規提供機能とは異なることなることを、予めご理解下さいますようお願い致します。
※本来アニメーションそのものを、表示状態そのままで半透明化を行うためには、一度(Unity Proの機能で)テクスチャレンダリングを行ってから、そのテクスチャをUnityの機能で表示してやる必要があります。

本機能のスクリプトからの使用については、主に下記の条件を全て満たした場合に、ほぼ正常動作が可能だと思われます。

  • アニメーションが複数パーツが重なる形で作成されていない。
  • アニメーションが「インスタンス」アニメーションを保持していない。
  • アニメーションが「インスタンス」アニメーションとして呼び出されたものでない。

また、その他についても、諸条件が生じる可能性もありますが、それらについても、本プロパティの使用については「使用者側の自己責任」とさせていただきます。
(ただ、スクリプトからの半透明制御のご質問が少なくないこともあり、紹介はさせていただきます)

--

▼マテリアルテーブル制御関数・変数群

マテリアルテーブルは、本クラスのインスタンスが持っている「描画に使用される可能性のあるマテリアルの配列」のことで、インスペクタ上では「Based-Material Table」と記載されています。
マテリアルテーブルについては、その格納規則が決まっているのと、ドローコール最適化機能とも密接な関係にあるため、取り扱う際には「Library_SpriteStudio」のリファレンスを一度通読くださいますようお願い致します(特に同リファレンスで「付記」とついている項目記述は重要です)。

マテリアルテーブル制御のための関数・変数群は、下記のものが提供されています。

--

マテリアルテーブルの実体の取得・設定

(変数)
public Material[] TableMaterial

機能解説:
アニメーションで使用しているマテリアルテーブル(の参照)です。
本値を代入・取得することで、マテリアルテーブルを入れ替えたりすることが可能です。

本マテリアルテーブルと称される「マテリアルの参照の配列」自体は、本クラスのインスタンス毎で持っていますので、本配列の内容(マテリアルの参照値)を書き換えたりしても影響は「単一のインスタンス」の範囲となりますが、本配列に定義されている参照の実体(マテリアルそのもの)を操作してしまうと、対象がProjectなどに格納されていたり・複数のインスタンスで共有されている場合複数のインスタンスに影響が及びますので注意してください。 また、マテリアルテーブルには格納規則やドローコール最適化機能などとの関連が存在しますので、操作する際には注意が必要です。
マテリアルテーブルの各種規則や扱い方についてはLibrary_SpriteStudioのリファレンスの内容を参照・ご理解の上行うようにしてください。

--

個別マテリアルの取得

public Material MaterialGet(
             int TextureNo,
             Library_SpriteStudio.KindColorOperation Operation
             )

引数:

  • TextureNo: 格納テクスチャ番号
  • Operation: ターゲットへの合成方法

返値:

  • マテリアル(の参照)
    null ... 失敗(エラー)

機能解説:
TableMaterialに格納されている、指定したテクスチャ格納番号(0が先頭)の指定ターゲット合成方法用のマテリアルを取得します。

--

マテリアルテーブルの複製

public Material[] TableCopyMaterial()

引数:

返値: TableMaterialの複製(の参照)
null ... 失敗(エラー)

機能解説:
TableMaterialの複製を新規に作成します。
TableMaterialそのものではないため、「TableMaterialに格納されているマテリアル群」と「本関数の返値に格納されているマテリアル群」は別々のインスタンスになります。

--

マテリアルテーブルに格納可能なテクスチャ数の取得

public int TextureGetCount(
             Material[] TableDataMaterial
             )

引数:

  • TableDataMaterial: (無効な引数・解説参照)

返値:

  • TabelMaterialに格納可能なテクスチャ数
    -1 ... 失敗(エラー)

機能解説:
現在設定されているTableMaterialに格納可能なテクスチャ数を取得します。

「Ver.1.2.3」現在では、マテリアルの配列を渡すような引数が付いていますが、本引数は使用していません。
そのため、nullを与えておくか・「Material[] TableDataMaterial=null」のような形にパッチを充てて、省略して使用してくださいますようお願いいたします。
本引数は「Ver.1.2.3」より後の直近のバージョンアップで、削除されます。

--

テクスチャの直接変更

public bool TextureChange(
             int Index,
             Texture2D DataTexture
             )

引数:

  • Index: テクスチャ格納番号
  • DataTexture: テクスチャ(の参照)

返値:

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

機能解説:
TableTextureに内包されるIndex番目のテクスチャをDataTextureに差し替えます。
Indexは「0 ~ (TextureGetCount() - 1)」の間である必要があり、その範囲外の値を与えると本関数はエラーを返します。

本関数は、Projectに含まれるマテリアルの元データを書き換えたり、同じマテリアルを使用している他のアニメーションに影響を与えたりしないよう、TableMaterialの該当する箇所のマテリアル(各ターゲット合成方法用の合計4つ)を新規に作成(new)し・TableMaterialの内容を変更します。

そのため、複数の本クラスのインスタンスに同じテクスチャを差替指定を行っても「同じ内容の別のマテリアル」が適用されてしまうため、「ドローコール最適化の阻害」が起こる可能性があります。
その対策については、Libray_SpriteStudioの解説の「付記: ドローコール最適化の阻害について」などをご参照ください。

--

▼動的オーバーレイ色制御関数群

動的オーバーレイ色とは、OPTPiX SpriteStudio(5)の「カラーブレンド」をスクリプト側から乗っ取り・動的にオーバーレイ色を変更することができる機能です。
ただし、本機能には下記の制限がついています。

  • 原則、本機能でオーバーレイ色を指定している間、アニメーション側のカラーブレンドアトリビュートでのオーバーレイ色制御は無視されます(排他関係です)。
  • 本機能ではSpriteStudio5のカラーブレンド時に指定できる色成分の内「R」「G」「B」「%」しか制御することができません(「A」については、常に255と同じ状態に固定されます)。

動的オーバーレイ色制御のための関数群は、下記のものが提供されています。

--

動的オーバーレイ色設定バッファの取得

public Script_SpriteStudio_PartsRoot.ColorBlendOverwrite DataGetColorBlendOverwrite()

引数:

返値:

  • 動的オーバーレイ色設定バッファ(の参照)
    null ... 失敗(エラー)

機能解説:
動的オーバーレイ色を操作するための設定バッファを取得します。
実際のオーバーレイ色の操作は、本関数で取得したバッファのクラス機能を使うことで行います。
本関数呼出時に設定バッファが存在していない(初回呼出時か一度DataReleaseColorBlendOverwrite関数を実行した後)場合に、本関数の内部処理で設定バッファが作成(new)されます。
その後は何度呼び出しても(DataReleaseColorBlendOverwrite関数を実行しない限り)設定バッファが別に新規作成されることはありません。
ただし、原則として設定バッファへの参照の取得は(実行時のコスト面から考えても)本関数を毎回呼び出す必要はなく、1つの本クラスのインスタンスにつき使用開始時の1回のみで、設定バッファへの参照を保存しておいてアクセスする方が効率的です。

--

動的オーバーレイ色設定バッファの廃棄

public void DataReleaseColorBlendOverwrite()

引数:

返値:

機能解説:
現在存在している動的オーバーレイ色の設定バッファを廃棄します。
本関数を実行した後は、動的オーバーレイを使用しないことが確定するため(再度DataGetColorBlendOverwrite関数を実行するまで)、オーバーレイ色の動作はアニメーションデータの内容に即します。
本関数を実行後は、本関数実行前にDataGetColorBlendOverwrite関数で取得していた、動的オーバーレイ色の設定バッファへの参照は無効になります(使用するとメモリ例外や意図しないバグの原因になります)ので、ご注意ください。
※本関数実行後は、設定バッファの参照を保管していた場合、その保管変数をnullにすることを推奨いたします。

オーバーレイ色を操作しなくなった場合、必ずしも本関数を使用する必要はありません(後述の「Script_SpriteStudio_PartsRoot.ColorBlendOverwrite」クラスの提供機能で「動的オーバーレイ色を無効」の設定にしても同様の効果を得ることができます)。
ただし、本関数を実行して操作バッファを解放することで、メモリとCPUの処理を少し減らすことができます。

現実的に本関数を使うか使わないかの「使い分け」については、

  • (実際にオーバーレイ色操作をしている合計時間ではなく)頻繁に操作を行う場合、本関数を使用しないで「動的オーバーレイ色を無効」の設定を行うようにする。
  • (実際にオーバーレイ色操作をしている合計時間ではなく)色換をそんなに行わない(例えばアニメーションが消えるときなどだけに使用する)ような場合、本関数を使用する。

という方法を推奨の一例として提示いたします。
※頻繁にオーバーレイ色操作を行うScript_SpriteStudio_PartsRootクラスのインスタンスで、DataGetColorBlendOverwriteと本関数を繰り返し使用した場合、都度操作バッファがnewされるため、メモリの断片化やガベージコレクトなどの面でデメリットを負う可能性が高いと思われることからの推奨的使い分けの一案です。

--

▼動的オーバーレイ色設定バッファ提供機能群

動的オーバーレイ色の実際の設定は、DataGetColorBlendOverwrite関数で取得した「Script_SpriteStudio_PartsRoot.ColorBlendOverwrite」クラスの機能を使用して行います。

本クラスのアクセスは、(冒頭にあるScript_SpriteStudio_PartsRootへのアクセス方法ではなく)下記の方法になります。
取得した動的オーバーレイ用バッファのインスタンス.関数名(....);

--

オーバーレイ色の設定(均一色指定型)

public void SetOverall(
             Library_SpriteStudio.KindColorOperation KindOperation,
             ref Color DataColor
             )

引数:

  • KindOperation: 適用する動的オーバーレイ色の合成方法
  • DataColor: 適用する動的オーバーレイ色

返値:

機能解説:
適用する動的オーバーレイ色を「単一色」で設定します。
本関数で設定したオーバーレイ色は、アニメーションの全スプライトパーツ毎に統一して適用されます。
SpriteStudio5で「カラーブレンド」アトリビュートを「単色」で設定した場合と同じ効果を得るための機能関数です。
DataColorの各成分は

  • DataColor.r: 「カラーブレンド」アトリビュート指定色の「R」値
  • DataColor.g: 「カラーブレンド」アトリビュート指定色の「G」値
  • DataColor.b: 「カラーブレンド」アトリビュート指定色の「B」値
  • DataColor.a: 「カラーブレンド」アトリビュート指定色の「%」値

となります。
各値は、SpriteStudio5上では「0~255」の範囲整数で設定する値を、「0.0f~1.0f」の値に変換した値を設定するようにしてください。
また、(SpriteStudio5の「カラーブレンド」アトリビュートの指定の)「A」値は適用することはできず、必ず1.0f(255)の値を設定した時と同じ動作をします。

KindOperationに「Library_SpriteStudio.KindColorOperation.NON」を設定すると、動的オーバーレイ色の設定適用を一時的にやめて、アニメーションデータのカラーブレンドのデータを使用します。
それ以外の合成方法を指定した場合、アニメーションデータのカラーブレンドのデータは使用されず、本設定バッファを通して行った設定を使用します。
(アニメーションデータのカラーブレンドと本クラスでの動的設定機能は、排他関係にあります)

--

オーバーレイ色の設定(各4頂点指定型)

public void SetVertex(
             Library_SpriteStudio.KindColorOperation KindOperation,
             ref Color DataColorLU,
             ref Color DataColorRU,
             ref Color DataColorRD,
             ref Color DataColorLD
             )

引数:

  • KindOperation: 適用する動的オーバーレイ色の合成方法
  • DataColorLU: 適用する動的オーバーレイ色(左上頂点用)
  • DataColorRU: 適用する動的オーバーレイ色(右上頂点用)
  • DataColorRD: 適用する動的オーバーレイ色(右下頂点用)
  • DataColorLD: 適用する動的オーバーレイ色(左下頂点用)

返値:

機能解説:
適用する動的オーバーレイ色を「各頂点ごと」で設定します(中心位置の色は自動算出され、指定4色の平均値になります)。
本関数で設定したオーバーレイ色は、アニメーションの全スプライトパーツ毎に統一して適用されます。
SpriteStudio5で「カラーブレンド」アトリビュートを「頂点カラー」で設定した場合と同じ効果を得るための機能関数です。

その他の仕様・注意点などについては、SetOverall関数の解説を参照してください。

--

▼トリガー型コライダ接触コールバック機能群

(SpriteStudio5の「当たり判定」設定で)同じGameObjectに付けられたコライダコンポーネントのトリガー型のコライダ接触時に発生するイベントをコールバックする機能群は、下記のものが提供されています。
いずれも、(関数ではなく)プロパティでコールバック処理関数を設定します。
また、本コールバックはアニメーション処理とは非同期に行われます(Unity内の物理・接触処理と同期しています)。

(プロパティ)

  • 接触開始: public FunctionCallBackOnTrigger FunctionOnTriggerEnter
  • 接触中: public FunctionCallBackOnTrigger FunctionOnTriggerStay
  • 接触終了: public FunctionCallBackOnTrigger FunctionOnTriggerEnd

機能解説:
トリガー型のコライダ接触時に呼び出されるコールバック関数を設定するためのプロパティです。
本プロパティに直接関数(の参照)を代入することでコールバックが機能します(nullを設定すると、コールバックを行いません)。

※上記プロパティは、いずれもMonoBehaviourクラスの

  • OnTriggerEnter
  • OnTriggerStay
  • OnTriggerExit

に対応しています。

デリゲート型: (共通)
public delegate void FunctionCallBackOnTrigger(
             Collider Self,
             Collider Pair
             );

デリゲート関数引数:

  • Self: 自分自身のコライダ
  • Pair: 接触したコライダ

デリゲート関数返値:

デリゲート関数機能解説:
接触を判定する際に、トリガーでの検知とコリジョンコンタクトでの検知の2種類がありますが、これらは、コライダに対してリジッドボディの有無や、その他運用状況で使い分ける必要があります。
それらの使い分けについては、Unityの仕様を参照して下さい。

--

▼コリジョン型コライダ接触コールバック機能群

(SpriteStudio5の「当たり判定」設定で)同じGameObjectに付けられたコライダコンポーネントのコリジョン型のコライダ接触時に発生するイベントをコールバックする機能群は、下記のものが提供されています。
いずれも、(関数ではなく)プロパティでコールバック処理関数を設定します。
また、本コールバックはアニメーション処理とは非同期に行われます(Unity内の物理・接触処理と同期しています)。

(プロパティ)

  • 接触開始: public FunctionCallBackOnTrigger FunctionOnTriggerEnter
  • 接触中: public FunctionCallBackOnTrigger FunctionOnTriggerStay
  • 接触終了: public FunctionCallBackOnTrigger FunctionOnTriggerEnd

機能解説:
コリジョン型のコライダ接触時に呼び出されるコールバック関数を設定するためのプロパティです。
本プロパティに直接関数(の参照)を代入することでコールバックが機能します(nullを設定すると、コールバックを行いません)。

※上記プロパティは、いずれもMonoBehaviourクラスの

  • OnCollisionEnter
  • OnCollisionStay
  • OnCollisionExit

に対応しています。

デリゲート型: (共通)
public delegate void FunctionCallBackOnCollision(
             Collider Self,
             Collision Contacts
             );

デリゲート関数引数:

  • Self: 自分自身のコライダ
  • Contacts: 接触したコリジョンコンタクト情報

デリゲート関数返値:

デリゲート関数機能解説:
接触を判定する際に、トリガーでの検知とコリジョンコンタクトでの検知の2種類がありますが、これらは、コライダに対してリジッドボディの有無や、その他運用状況で使い分ける必要があります。
それらの使い分けについては、Unityの仕様を参照して下さい。

Clone this wiki locally
You can’t perform that action at this time.