スクリプトリファレンス([Root]マテリアル) - SpriteStudio/SS6PlayerForUnity GitHub Wiki

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

SS6PUの「Ver.1.x系」と「Ver.2.0以降」とでは、マテリアルの管理仕様が根本的に変わっています。

  • Ver.1.x系
    インポート時に静的データとして(使用する)マテリアルを生成し、それをテーブル(TableMaterial)の形で運用しています。
  • Ver.2.0以降
    インポート時にはマテリアルを作成せず、実行時に使用しているマテリアルを作成し・SS6PUの内部にある「マテリアルキャッシュ」に貯蔵して・全アニメーションオブジェクトで共用します。

そのため、「Ver.1.x系」と「Ver.2.0以降」とでは、本マテリアル系の関数群が根本的に変更されていますので、注意してください。
原則として「関数の役割(表題)」に「Ver.1.x系」「Ver.2.0以降」と注記が存在していますので、必ずご使用のSS6PUバージョンに適合しているかどうかを確認してから読み進めて頂けますようお願いいたします。


Ver.2.0以降 マテリアル操作関数群

アニメーション描画用マテリアルの取得 (Ver.2.0以降)

関数(動的)

UnityEngine.Material MaterialGet(
        int indexCellMap,
        Library_SpriteStudio6.KindOperationBlend operationBlend,
        Library_SpriteStudio6.KindMasking masking,
        string nameShader,
        bool flagCreateNew,
        UnityEngine.Shader shader=null,
        Library_SpriteStudio6.CallBack.FunctionMaterialSetUp functionMaterialSetUp=null
    )

引数

  • indexCellMap : セルマップ番号
  • operationBlend : ブレンド種別
  • masking : マスキング種別
  • nameShader : シェーダ名
  • flagCreateNew : 既存しなかった場合に新規作成するか?
  • shader : 使用するシェーダ
  • functionMaterialSetUp : マテリアル作成時に呼ばれる追加設定関数

返値

対象マテリアルの参照
null ... マテリアルが既存していない / 失敗(エラー)

解説

現在アニメーションが使用しているマテリアルキャッシュから、下記の完全一致で特定される描画用マテリアルを取得します。

  • indexCellMap : セルマップ番号
  • operationBlend : ブレンド種別
  • masking : マスキング種別
  • nameShader : シェーダ名

本関数は「アニメーション」用のマテリアルしか取得することはできません(エフェクト用のマテリアルは取得できません)。

基本的に、SS6PUの内部処理以外からはあまり使用する機会はないと思われ、「アプリケーション専用のシェーダなどで描画するための専用マテリアルを事前定義したい」場合などが使用機会として存在する程度だと思われます。
Ver.2.0以降では描画用のマテリアルが描画時に動的に作成されるようになったため、「まだ描画に一度も使用されていないマテリアル」については、実際に描画で使用されるタイミングになるまでマテリアルキャッシュの中に登録されていない状態になることに注意してください。
つまり「既存のシェーダを代替して・機能を差し替える(既存シェーダをオーバーライドするよう)」シェーダを作成して・運用するような場合に「事前にマテリアルキャッシュに登録しておかないと、(マテリアルの作成される瞬間が特定できないため)MaterialReplaceAnimation関数などではシェーダ差し替えができないシチュエーションを回避するために「事前に使用するマテリアルを登録してしまう(アニメーションで必要になった瞬間には既存としておく)」ような処理を行うために本関数を使用します。

indexCellMapは対象とするセルマップで、0オリジンの番号(インデックス)です。

operationBlendは対象とするブレンド種別で、下記の指定となります。

  • MASK_PRE : マスク描画前描画用
  • MASK : マスク描画用
  • MIX : 描画モード「ミックス」用
  • ADD : 描画モード「加算」用
  • SUB : 描画モード「減算」用
  • MUL : 描画モード「α乗算」用(半透明考慮)
  • MUL_NA : 描画モード「乗算」用(半透明無視)
  • SCR : 描画モード「スクリーン」用
  • EXC : 描画モード「除外」用
  • INV : 描画モード「反転」用

※「α乗算」と「乗算」のラベル名のアプローチ方向が逆になっている(α乗算...Multiple/乗算...Multiple-NonAlpha)ので混乱しないよう注意してください(SS5PUのMULがSpriteStudio6のα乗算の挙動であったために、プレーヤーバージョン間での使用感互換の面からこの命名になっております)。

maskingは対象とするマスキング種別で、下記の指定となります。

  • THROUGH : マスク対象非チェック(マスキングなし)用
  • MASK : マスク対象チェック(マスキングあり)用

nameShaderはアニメーションデータ中で指定している「描画に使用するシェーダ名」で、SpriteStudio6の「シェーダ」アトリビュートで指定している「シェーダID」と結びついている「シェーダのファイル名」と同一です。
nullを指定すると「標準シェーダ(シェーダアトリビュートを使用しない場合の、通常の描画)」の指定となります。

flagCreateNewは、trueを指定するとマテリアルキャッシュ内に該当するマテリアルが既存しない場合に、新しくマテリアルを作成して・マテリアルキャッシュに登録し・そのマテリアルを返します。
falseを指定するとマテリアルキャッシュに該当するマテリアルが既存しない場合は、null(該当マテリアルなし)を返します。

shaderは、(マテリアルを新規作成する場合に)マテリアルに使用するシェーダを指定します。
nullを指定すると「標準シェーダ」の指定となります。

functionMaterialSetUpは、(マテリアルを新規作成する場合に)シェーダとテクスチャを割り当てたマテリアルに追加設定などを行うための関数を指定します。
通常は指定された「ブレンド種別」「マスキング」に妥当な設定をマテリアルに行う処理を担当します。
nullを指定するとSS6PUの通常のマテリアルへの設定処理を行います。
本関数を指定しなくてはならないシチュエーションとしては、自作したシェーダなどをshaderに指定し・かつ「(その)シェーダがSS6PUの標準シェーダと各種設定などの非互換性を持つ(=SS6PUが持つ設定処理の代替処理が必要)」などが挙げられます。

このfunctionMaterialSetUpは下記の仕様を持った関数です。

UnityEngine.Material FunctionMaterialSetUp(
        UnityEngine.Material material,
        int operationBlend, 
        Library_SpriteStudio6.KindMasking masking,
        bool flagZWrite
    )
  • 引数

    • material : 新規作成されたマテリアル
    • operationBlend : 描画時のブレンド種別(実値がLibrary_SpriteStudio6.KindOperationBlend型か Library_SpriteStudio6.KindOperationBlendEffect型の場合があるので、intにキャストされています)
    • masking : マスキングの種別
    • flagZWrite : Zバッファへの書き込みを行うかのフラグです(trueで書き込みを行う)
  • 返値
    設定が終了したマテリアルへの参照(通常は引数のmaterialを返します)
    null : 処理が失敗した


アニメーション描画用マテリアルの差し替え (Ver.2.0以降)

関数(動的)

UnityEngine.Material MaterialReplaceAnimation(
        int indexCellMap,
        Library_SpriteStudio6.KindOperationBlend operationBlend,
        Library_SpriteStudio6.KindMasking masking,
        string nameShader,
        UnityEngine.Material material,
        bool flagGlobal=false
    )

引数

  • indexCellMap : セルマップ番号
  • operationBlend : ブレンド種別
  • masking : マスキング種別
  • nameShader : シェーダ名
  • material : 新しく設定するマテリアル
  • flagGlobal : グローバルのマテリアルキャッシュが対象か?

返値

元々設定されていたマテリアル
null ... 対象マテリアルが存在していない / 失敗(エラー)

解説

現在アニメーションが使用しているマテリアルキャッシュから、下記の完全一致で特定されるアニメーション描画用マテリアルを取得します。

  • indexCellMap : セルマップ番号
  • operationBlend : ブレンド種別
  • masking : マスキング種別
  • nameShader : シェーダ名

本関数の注意点として、「マテリアルキャッシュに既存しているマテリアル(=描画で使用されたことがあるマテリアル)」しか対象とできないことにあります。
つまり、「将来描画に使用されることが解っている」マテリアルでも、まだ描画に使用されていない場合にはマテリアルキャッシュ内に存在しないために、対象とすることができません(検索で発見できない)。 そのような「先行的に使用されると解っているマテリアル」を定義したい場合については、MaterialGet関数などを使用して新規定義するようにしてください。

indexCellMapは対象とするセルマップで、0オリジンの番号(インデックス)です。

operationBlendは対象とするブレンド種別で、下記の指定となります。

  • MASK_PRE : マスク描画前描画用
  • MASK : マスク描画用
  • MIX : 描画モード「ミックス」用
  • ADD : 描画モード「加算」用
  • SUB : 描画モード「減算」用
  • MUL : 描画モード「α乗算」用(半透明考慮)
  • MUL_NA : 描画モード「乗算」用(半透明無視)
  • SCR : 描画モード「スクリーン」用
  • EXC : 描画モード「除外」用
  • INV : 描画モード「反転」用

※「α乗算」と「乗算」のラベル名のアプローチ方向が逆になっている(α乗算...Multiple/乗算...Multiple-NonAlpha)ので混乱しないよう注意してください(SS5PUのMULがSpriteStudio6のα乗算の挙動であったために、プレーヤーバージョン間での使用感互換の面からこの命名になっております)。

maskingは対象とするマスキング種別で、下記の指定となります。

  • THROUGH : マスク対象非チェック(マスキングなし)用
  • MASK : マスク対象チェック(マスキングあり)用

nameShaderはアニメーションデータ中で指定している「描画に使用するシェーダ名」で、SpriteStudio6の「シェーダ」アトリビュートで指定している「シェーダID」と結びついている「シェーダのファイル名」と同一です。
nullを指定すると「標準シェーダ(シェーダアトリビュートを使用しない場合の、通常の描画)」の指定となります。

materialは、新しく設定する(差し替える)マテリアルです。
nullを指定すると、その特定されたマテリアルをマテリアルキャッシュから消去します。

flagGlobalは、trueで大域(現時点描画されている全てのSS6PU描画オブジェクト間で共用されている)マテリアルキャッシュ内のマテリアル群が対象です。
falseで局所(単体のアニメーションでのみ使用している)マテリアルキャッシュ内のマテリアルが対象となります。


アニメーション用標準シェーダの設定 (Ver.2.0以降)

関数(動的)

UnityEngine.Shader ShaderSetStandardAnimation(
        UnityEngine.Shader shader,
        Library_SpriteStudio6.CallBack.FunctionMaterialSetUp functionMaterialSetUp,
        bool flagReplaceMaterialCache,
        bool flagGlobal=false
    )

引数

  • shader : 新規設定するシェーダ
  • functionMaterialSetUp : shaderを使用したマテリアルを初期設定するための関数
  • flagReplaceMaterialCache : 既存のキャッシュの内容も置き換えるか?
  • flagGlobal : グローバルのマテリアルキャッシュが対象か?

返値

元々設定されていたシェーダ
null ... 失敗(エラー)

解説

SS6PUが持っているアニメーション描画用(のマテリアルに割り当てられる)標準シェーダを変更します。

shaderは新しく標準シェーダに設定するシェーダです。
nullを指定すると、本来SS6PUが持っている標準シェーダを設定します。

functionMaterialSetUpは、(マテリアルを新規作成する場合に)シェーダとテクスチャを割り当てたマテリアルに追加設定などを行うための関数を指定します。
通常は指定された「ブレンド種別」「マスキング」に妥当な設定をマテリアルに行う処理を担当します。
nullを指定するとSS6PUの通常のマテリアルへの設定処理を行います。
本関数を指定しなくてはならないシチュエーションとしては、自作したシェーダなどをshaderに指定し・かつ「(その)シェーダがSS6PUの標準シェーダと各種設定などの非互換性を持つ(=SS6PUが持つ設定処理の代替処理が必要)」などが挙げられます。
本関数の仕様は、MaterialGet関数の解説を参照してください。

flagReplaceMaterialCacheは、trueを設定すると「現在マテリアルキャッシュに既存している標準シェーダを使用しているマテリアル」のシェーダを全て置き換えます。
falseを設定すると「既存のマテリアルキャッシュ内のマテリアルはそのままで、本関数以降で新規作成される標準シェーダを使用したマテリアル」に対して設定したシェーダを使用します。

flagGlobalは、trueで大域(現時点描画されている全てのSS6PU描画オブジェクト間で共用されている)マテリアルキャッシュが用いるシェーダを置き換えます。
falseで局所(単体のアニメーションでのみ使用している)マテリアルキャッシュが用いるシェーダを置き換えます。

この関数は、(特にflagReplaceMaterialCacheをtrueに設定した場合)マテリアルの再構築と再建策行うため、パフォーマンスに悪影響を及ぼす可能性があります。
ですので、必要がない場合、本関数をみだりに呼び出すことは推奨しません。


エフェクト用標準シェーダの設定 (Ver.2.0以降)

関数(動的)

UnityEngine.Shader ShaderSetStandardEffect(
        UnityEngine.Shader shader,
        Library_SpriteStudio6.CallBack.FunctionMaterialSetUp functionMaterialSetUp,
        bool flagReplaceMaterialCache,
        bool flagGlobal=false
    )

引数

  • shader : 新規設定するシェーダ
  • functionMaterialSetUp : shaderを使用したマテリアルを初期設定するための関数
  • flagReplaceMaterialCache : 既存のキャッシュの内容も置き換えるか?
  • flagGlobal : グローバルのマテリアルキャッシュが対象か?

返値

元々設定されていたシェーダ
null ... 失敗(エラー)

解説

SS6PUが持っているエフェクト描画用(のマテリアルに割り当てられる)標準シェーダを変更します。

エフェクト用のシェーダを変更する以外については、ShaderSetStandardAnimation関数と同じです。


ステンシル用標準シェーダの設定 (Ver.2.0以降)

関数(動的)

UnityEngine.Shader ShaderSetStandardStencil(
        UnityEngine.Shader shader,
        bool flagReplaceMaterialCache,
        bool flagGlobal=false
    )

引数

  • shader : 新規設定するシェーダ
  • flagReplaceMaterialCache : 既存のキャッシュの内容も置き換えるか?
  • flagGlobal : グローバルのマテリアルキャッシュが対象か?

返値

元々設定されていたシェーダ
null ... 失敗(エラー)

解説

SS6PUが持っているステンシル描画用(のマテリアルに割り当てられる)標準シェーダを変更します。
ステンシル描画はマスキングの状態を作り出すために使われます。

通常、本関数は(マスキングの動作仕様を変更する以外には)使用機会がありません。
そのためみだりに使用しないようにしてください。
ShaderSetStandardAnimation関数やShaderSetStandardEffect関数に存在した「functionMaterialSetUp(マテリアルの新規作成時に呼び出される関数)」がない理由については、本関数(ステンシル描画用)の同delegate関数は「アニメーション用(ShaderSetStandardAnimation関数)」で先行して設定されたものを流用します(そのため、ShaderSetStandardAnimationと併用する場合、本関数の前にShaderSetStandardAnimation関数を呼び出して・マテリアルの特別設定の関数を既設定しておく必要があります)。

その他基本的な仕様は、ShaderSetStandardAnimation関数と同じです。


アニメーション専用マテリアルキャッシュの作成 (Ver.2.0以降)

関数(動的)

bool CacheBootUpMaterial(bool flagInvolveChildren=true)

引数

  • flagInvolveChildren : 子パーツへの設定の扱い

返値

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

解説

再生しているアニメーションオブジェクトに局所(ローカル)マテリアルキャッシュを作成します。
通常、マテリアルキャッシュは大域(プロジェクトデータ毎)に存在していますが、本関数を使用して単独のマテリアルキャッシュを作成することで、(マテリアルの変更などを)アニメーションオブジェクトの中だけで共有される範囲として扱うことが可能です。
本関数で設置した局所マテリアルキャッシュが不要になった場合は、CacheShutDownMaterial関数関数を使用して解放してください。

flagInvolveChildrenは、trueを指定した場合マテリアルキャッシュを子アニメーション(アニメーションの中から呼び出している別アニメーションやエフェクトなど)でも共有する設定を行います。
falseの場合、子アニメーション群は既に設定されているマテリアルキャッシュ(大半は大域のマテリアルキャッシュです)を使用したままになります。

このマテリアルキャッシュで管理されるリソースとしては下記が存在します。

  • 描画のために作成されたマテリアル群
  • アニメーション用・エフェクト用・ステンシル用の標準シェーダ
  • 使用するセルマップ用テクスチャ

基本的にこれらの内、「標準シェーダ」と「使用するセルマップ用テクスチャ」について、(ローカルのマテリアルキャッシュが作成されていても)内容の変更が行われていない場合には大域マテリアルキャッシュが使用され、変更されている場合には局所マテリアルキャッシュが使用されます。
セルマップテクスチャの変更については、TextureSetCellMap関数を参照してください。


アニメーション専用マテリアルキャッシュの解放 (Ver.2.0以降)

関数(動的)

void CacheShutDownMaterial()

引数

返値

解説

現在割り当たっている局所マテリアルキャッシュを解放します。
CacheBootUpMaterial関数を使用して設置した局所マテリアルキャッシュは、必ず本関数を使用して解放してください。


Ver.1.x系 マテリアル操作関数群

マテリアルの取得 (Ver.1.x系)

関数(動的)

UnityEngine.Material MaterialGet(
        int indexCellMap,
        Library_SpriteStudio6.KindOperationBlend operationBlend,
        Library_SpriteStudio6.KindMasking masking
    )

引数

  • indexCellMap : セルマップ番号
  • operationBlend : ブレンド種別
  • masking : マスキング種別

返値

対象マテリアルの参照
null ... マテリアルが未割当 / 失敗(エラー)

解説

現在アニメーションが使用しているマテリアルテーブルから(描画に使用している)マテリアルを取得します。
原則、アニメーション制御(Script_SpriteStudio6_Rootクラス)の実体が持つTableMaterial変数から直接取得することは避けてください。
※SS5PUまではTableMaterialから直接取得するのが仕様でしたが、SS6PUからは直接取得は極力行わないで下さい(配列添字の処理などが面倒なこともあり、非推奨・消極的禁止とします)。マテリアルテーブル全体を取得する場合でもTableGetMaterial関数を使用してください。

indexCellMapは対象とするセルマップで、0オリジンの番号(インデックス)です。

operationBlendは対象とするブレンド種別で、下記の指定となります。

  • MASK_PRE : マスク描画前描画用
  • MASK : マスク描画用
  • MIX : 描画モード「ミックス」用
  • ADD : 描画モード「加算」用
  • SUB : 描画モード「減算」用
  • MUL : 描画モード「α乗算」用(半透明考慮)
  • MUL_NA : 描画モード「乗算」用(半透明無視)
  • SCR : 描画モード「スクリーン」用
  • EXC : 描画モード「除外」用
  • INV : 描画モード「反転」用

※「α乗算」と「乗算」のラベル名のアプローチ方向が逆になっている(α乗算...Multiple/乗算...Multiple-NonAlpha)ので混乱しないよう注意してください(SS5PUのMULがSpriteStudio6のα乗算の挙動であったために、プレーヤーバージョン間での使用感互換の面からこの命名になっております)。

maskingは対象とするマスキング種別で、下記の指定となります。

  • THROUGH : マスク対象非チェック(マスキングなし)用
  • MASK : マスク対象チェック(マスキングあり)用

マテリアルテーブルの取得 (Ver.1.x系)

関数(動的)

UnityEngine.Material[] TableGetMaterial(
        bool flagInUse=true
    )

引数

  • flagInUse : 現在使用中のマテリアルテーブルか?

返値

マテリアルテーブルの参照
null ... マテリアルテーブルが未割当 / 失敗(エラー)

解説

アニメーションに割り当たっているマテリアルテーブル(マテリアルの配列)を取得します。
原則、アニメーション制御(Script_SpriteStudio6_Rootクラス)の実体が持つTableMaterial変数から直接取得することは避けて、本関数を使用してください。
※SS5PUまではTableMaterialから直接取得するのが仕様でしたが、SS6PUからは直接取得は極力行わないで下さい(配列添字の処理などが面倒なこともあり、非推奨・消極的禁止とします)。

flagInUseの設定はTableGetCellMap関数のflagInUseと同じ仕様です。
※ただし、対象がセルマップテーブルではなくマテリアルテーブルです。

本テーブルからマテリアルを取得する場合の配列添字はMaterial.IndexGetTable関数を使用するようにしてください。
※添字を直接単純な式で算出することは不可能ではないですが、後に仕様変更があった場合なども含め、直接算出に有益性がないため、極力そういった処理は避けるようにしてください。


マテリアルテーブルの設定 (Ver.1.x系)

関数(動的)

bool TableSetMaterial(
        UnityEngine.Material[] tableMaterial
    )

引数

  • tableMaterial : 設定するマテリアルテーブル

返値

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

解説

アニメーションに使用するマテリアルテーブル(マテリアルの配列)を設定します。
アニメーション制御(Script_SpriteStudio6_Rootクラス)の実体が持つTableMaterial変数に直接設定しないでください。 ※SS5PUまではTableMaterialに直接設定するのが仕様でしたが、SS6PUからは行わないで下さい(SS6PUが誤動作する場合があります)。

アニメーションの元データのマテリアルテーブル(TableGetMaterial関数にfalseを与えた時に取得できるマテリアルテーブル)を変更することはできません。
あくまで「現在、描画に使用しているマテリアルテーブル」のみ設定可能です。

また、本関数でインスタンスアニメーションなどの子アニメーションのマテリアルテーブルを変更することは、極力避けて・下記関数群を使用してください(本関数を使用した場合、用法によっては正常動作しない場合があります)。

与えられるマテリアルテーブルは、下記の条件(最低限互換である保障)が必要になります。

  • 変更前(正常動作するマテリアルテーブル)のマテリアルテーブル以上の長さが必要です(通常の差替用途では同じ長さになるはずです)。
  • アニメーションデータで使用しているセルマップ数分のマテリアルを最低限格納している必要があります。
  • 変更前のマテリアルテーブルの対応セルマップ(テクスチャ)と同じ並びである必要があります。
  • 配列を設定する際に、合成方法の並びがSS6PUの仕様に即している必要があります。

※最後の2つについては、原則、配列添字をMaterial.IndexGetTable関数を使用していれば問題は起こりづらいはずです。


マテリアルテーブルのマテリアル数の取得 (Ver.1.x系)

関数(動的)

int CountGetTableMaterial(
        bool flagInUse=true
    )

引数

  • flagInUse : 現在使用中のマテリアルテーブルか?

返値

マテリアルテーブルのマテリアル数(配列長)
-1 ... 失敗(エラー)

解説

アニメーションに割り当たっているマテリアルテーブル(マテリアルの配列)の配列長を取得します。
主に、現在のマテリアルテーブルと互換のマテリアルテーブルを自力で作成したりする際の、マテリアルテーブルの配列長を取得する場合に使用します。

flagInUseの設定はTableGetCellMap関数のflagInUseと同じ仕様です。
※ただし、対象がセルマップテーブルではなくマテリアルテーブルです。

本関数で取得したマテリアルテーブルにマテリアルを設定する場合、原則、配列添字をMaterial.IndexGetTable関数を使用するようにしてください。


マテリアルテーブルの複製(簡易) (Ver.1.x系)

関数(動的)

UnityEngine.Material[] TableCopyMaterialDeep(
        bool flagInUse=true
    )

引数

  • flagInUse : 現在使用中のマテリアルテーブルか?

返値

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

解説

アニメーションに割り当たっているマテリアルテーブル(マテリアルの配列)のシャローコピーを取得します。
マテリアルテーブル自体は別の実体になりますが、そこに設定されている各マテリアルは元のマテリアルテーブルと同じ実体を参照しています。

flagInUseの設定はTableGetCellMap関数のflagInUseと同じ仕様です。
※ただし、対象がセルマップテーブルではなくマテリアルテーブルです。


マテリアルテーブルの複製(完全) (Ver.1.x系)

関数(動的)

UnityEngine.Material[] TableCopyMaterialDeep(
        bool flagInUse=true
    )

引数

  • flagInUse : 現在使用中のマテリアルテーブルか?

返値

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

解説

アニメーションに割り当たっているマテリアルテーブル(マテリアルの配列)のディープコピーを取得します。
マテリアルテーブルも設定されている各マテリアルも別の実体になりますが、マテリアルが参照しているテクスチャ群とシェーダの実体だけは元のマテリアルが参照しているものと同じ実体を参照しています。

それ以外については、TableCopyMaterialShallow関数と同じです。


マテリアルテーブルのテクスチャ数の取得 (Ver.1.x系)

関数(動的)

int CountGetTextureTableMaterial(
        bool flagInUse=true
    )

引数

  • flagInUse : 現在使用中のマテリアルテーブルか?

返値

マテリアルテーブルに含まれているテクスチャ数
-1 ... 失敗(エラー)

解説

アニメーションに割り当たっているマテリアルテーブルに含まれているテクスチャ数(セルマップ数)を取得します。

flagInUseの設定はTableGetCellMap関数のflagInUseと同じ仕様です。
※ただし、対象がセルマップテーブルではなくマテリアルテーブルです。

本関数を使用する際に、注意がひとつあります。
インポートしたSpriteStudio6のデータで1つのテクスチャを複数のセルマップで共有していた場合、インポータはそれを解釈して「テクスチャを共有しているマテリアル」の場合には同じマテリアルを割り当てますが、本関数はその「テクスチャの共有」を考慮しません。
例えば、SpriteStudio6のデータ上で「セルマップが5ファイル存在しているが・固有のテクスチャは4ファイルしかない(つまり5つのssceの内1つのssceはどれかとテクスチャを共有している)」場合に、本関数が返す値は「5」になります。
※ですので、本関数は厳密には「セルマップ数を返す」関数です(後に関数名を変更する可能性がありますが、その場合でも移行期間を設けて本関数名を変更するようにするつもりです)。

マテリアルテーブル長から直接算出も可能ですが、後に仕様変更の可能性もあるため、できるだけ直接算出は避けるようにしてください。


インスタンスへのマテリアルテーブルの設定 (Ver.1.x系)

関数(動的)

bool TableSetMaterialInstance(
        int idParts,
        UnityEngine.Material[] tableMaterial,
        bool flagInvolveChildInstance=true
    )

引数

  • idParts : パーツID
  • tableMaterial : 設定するマテリアルテーブル
  • flagInvolveChildInstance : 子のインスタンスにも適用するか?

返値

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

解説

指定インスタンスパーツが制御しているインスタンスが現在使用しているマテリアルテーブルを変更します。
TableSetMaterial関数のインスタンス専用関数です。

tableMaterialはインスタンスが使用しているマテリアルテーブルの最低限互換である必要があります。
最低限互換という条件については、TableSetMaterial関数の解説を参照してください。

flagInvolveChildInstanceはインスタンスの持つ子アニメーションにもマテリアルテーブルの変更を適用するかを指定します。

  • true : インスタンスの持つ(エフェクトを除く)子アニメーション群にも適用します。
  • false : インスタンスのみで子アニメーションには適用しません。

エフェクトへのマテリアルテーブルの設定 (Ver.1.x系)

関数(動的)

bool TableSetMaterialEffect(
        int idParts,
        UnityEngine.Material[] tableMaterial
    )

引数

  • idParts : パーツID
  • tableMaterial : 設定するマテリアルテーブル

返値

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

解説

指定エフェクトパーツが制御しているエフェクトが現在使用しているマテリアルテーブルを変更します。
※マテリアルテーブルの構成が、アニメーションとエフェクトとでは異なるので、注意してください。

tableMaterialはエフェクトが使用しているマテリアルテーブルの最低限互換である必要があります。


指定セルマップを格納するためのマテリアルテーブル長の取得 (Ver.1.x系)

関数(静的)

Class: Material
int CountGetTable(
        int countCellMap
    )

引数

  • countCellMap : セルマップ数

返値

マテリアルテーブルの配列長
-1 ... 失敗(エラー)

解説

指定セルマップ数を格納するためのマテリアルテーブル長を取得します。

自力でマテリアルテーブルを作成する時のマテリアルテーブル長などに利用してください。


マテリアルテーブル内インデックスの取得 (Ver.1.x系)

関数(静的)

Class: Material
int IndexGetTable(
        int indexCellMap,
        Library_SpriteStudio6.KindOperationBlend operationBlend,
        Library_SpriteStudio6.KindMasking masking
    )

引数

  • indexCellMap : セルマップ番号
  • operationBlend : ブレンド種別
  • masking : マスキング種別

返値

対象マテリアルのマテリアルテーブル上の配列添字
-1 ... 失敗(エラー)

解説

指定セルマップ数を格納するためのマテリアルテーブル長を取得します。

自力でマテリアルテーブルを作成する時のマテリアルテーブルの配列添字を扱う時などに利用してください。

(取得するのが添字かマテリアルの違いはありますが)indexCellMap・operationBlend・maskingの仕様はMaterialGet関数と同じです。


マテリアルテーブルのテクスチャス数の取得 (Ver.1.x系)

関数(静的)

Class: Material
int CountGetTexture(
        UnityEngine.Material[] tableMaterial
    )

引数

  • tableMaterial : マテリアルテーブル

返値

マテリアルテーブルに含まれているテクスチャ数
-1 ... 失敗(エラー)

解説

指定されたマテリアルテーブルに含むことができるテクスチャ数(セルマップ数)を取得します。

本関数を使用する際に、注意がひとつあります。
本関数が返すのは、マテリアルテーブルに含むことができる「セルマップ数」であり厳密には「テクスチャ数」ではありません。
大半の場合、このセルマップ数とテクスチャ数は同義ですが、複数のセルマップ間でテクスチャを共有しようとした場合に、セルマップ数とテクスチャ数は異なってくることに注意してください。


マテリアルテーブルにテクスチャを設定 (Ver.1.x系)

関数(静的)

Class: Material
bool TextureSet(
        UnityEngine.Material[] tableMaterial,
        int indexCellMap,
        Texture2D texture,
        bool flagMaterialNew
    )

引数

  • tableMaterial : マテリアルテーブル
  • indexCellMap : セルマップ番号
  • texture : テクスチャ
  • flagMaterialNew : マテリアルを新規作成するか?

返値

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

解説

マテリアルテーブルの指定されたセルマップ用にあるマテリアル群に指定されたテクスチャを割り当てます(各セルマップ用には各合成方法別のシェーダが割り当たったマテリアルが存在していますが、その全合成方法用のマテリアル全てに同じテクスチャを設定します)。

flagMaterialNewの指定は下記の仕様です。

  • true : (適合した合成種別用のシェーダを設定した)マテリアルを新規で作成して指定テクスチャを設定します。
  • false : 現在設定されているマテリアルのテクスチャを指定テクスチャに変更します。