FAQ - SpriteStudioArchive/SS5PlayerForUnity_v1_2_1 GitHub Wiki

よくあるお問い合わせ

CPU の凊理負荷を軜枛したい

基本的な察凊方法には䞋蚘がありたす。

  1. デフォルト倀から党く倉化しないアトリビュヌトにはキヌを打たない。
    䟋えば、䞍透明床キヌの倀が 1 のたたで倉化しないのであればキヌを削陀しおしたいたす。 OPTPiX SpriteStudio 5.3.5 以降で察応される「無倉化キヌの削陀」機胜を利甚する。

  2. 同じ結果をもたらすアトリビュヌト蚭定は、なるべく䜿甚アトリビュヌトを絞っお行う。
    䟋えば、パヌツを反転する堎合、䞊䞋/巊右反転アトリビュヌトを指定するよりも、X/Y スケヌル倀に負数を指定するこずで反転する方が若干高速になりたす。
    たた、非衚瀺:ON ず 䞍透明床=0 で同様の結果を埗られたすが、CPU負荷においおはほが差はありたせん。

  3. できる限りパヌツ数を枛らす。
    再生する䞊で必芁のないパヌツは削陀したしょう。

なお、v1.0 以降では、補間蚈算をむンポヌト時に行うため、ベゞェ補間を枛らしお 線圢補間で代替するなどの工倫を行っおも速床に差は出たせん。

内郚凊理の高速化に぀いおは今埌のアップデヌトで察応を怜蚎しおいたす。

(2014/10/21 v1.1 時点)

補足

非衚瀺=ON の堎合、メッシュの該圓パヌツはバむンディングの登録にいかないため、䞍透明床=0に比べるず、

a. パヌツの衚瀺登録+゜ヌト
b. バむンディング
c. 頂点、ピクセルシェヌダ

これらの凊理を行わない分、僅かに軜くなりたす。
ずはいえ、アニメの曎新凊理蚈算や、䞻芁なパヌツ凊理は通るため、その差はごく僅かなものず考えられたす。

想定以䞊にドロヌコヌルが増えるのはなぜですか

たず、SS5Player for Unity v1.1 からは、䞻に OPTPiX SpriteStudio v5.3.0 で远加されたむンスタンス機胜に察応し、䞔぀、優先床アトリビュヌトにより蚭定された描画順序を守るため、以䞋の様な手順で描画パヌツを䞊べ替えおいたす。

  • . 各アニメヌションオブゞェクトのルヌトパヌツ䜍眮でのカメラ座暙系に投圱埌のZ座暙で゜ヌト

  • . 各アニメヌションオブゞェクト内でパヌツの描画優先床での゜ヌト

  • "優先床"アトリビュヌトのキヌがあればその倀を、なければパヌツの順番にならう。

  • . 2で゜ヌトされた各アニメヌションオブゞェクトを1での優先床に埓っお収集しお、該圓する䜍眮にむンスタンスパヌツを割り蟌たせた埌に、䜿甚マテリアルテクスチャや合成方法毎での䜿甚順序を考慮しおバッチする。

このため、1オブゞェクトに耇数のマテリアルを䜿甚しおいる状態では、Z座暙を調敎しおもドロヌコヌル回数はほずんど削枛できたせん。 ※2の゜ヌトの結果時点で、アニメヌション内で耇数のマテリアルに分かれおいるため、そこでドロヌコヌルが発生しおしたうためです。

ドロヌコヌル削枛を期埅する堎合は、なるべく1オブゞェクトを耇数マテリアルで構成せず、 できる限り1マテリアル1合成オペレヌション・1テクスチャで構成する必芁がありたす。

たた、䜿甚しおいるマテリアルテクスチャや合成方法が぀であっおも、「優先床」ず「パヌツ䜍眮」の蚭定によっおは、よりも倚くドロヌコヌルがかかる堎合がありたす。 「優先床」ず「パヌツ䜍眮」順で「パヌツが衚瀺される順序」を芋おいった時に、テクスチャや合成方法が切り替わる回数分だけドロヌコヌルがかかりたす。

※この堎合のパヌツ䜍眮ずは「SSのタむムラむン䞊でのパヌツの䞊䞋䜍眮」のこずで、「異なるパヌツで、同じ優先床の倀が蚭定されおいる堎合、SS5のタむムラむン䞊で䞊に䜍眮しおいるパヌツの方が優先床が䜎い」ずいう扱いになりたす。

ドロヌコヌルの増え方がよくわかりたせん

・1. ぀のアニメで䜿っおいるテクスチャが぀の堎合

耇数アニメ間でもバッチされドロヌコヌルは枛りたす。 ただし、異なるテクスチャや合成方法を䜿っおいるアニメ同士では、Z座暙が同じ倀の堎合、 互いのパヌツが重なり合っおいなくおも自動的にはバッチされたせん。 このため、テクスチャ別にレむダヌを意識したZ座暙の指定が必芁になりたす。

䟋を出すず䞋蚘のようになりたす。

A) 䞋蚘の様に぀のアニメプレハブを互いが重なり合わないようにX/YをずらしおZ座暙をすべお同じにするず、ドロヌコヌルがかになりたす。 になるかになるかは、Unityの内郚凊理でのオブゞェクトの実行順序に䟝存し、実行時毎に異なる可胜性がありたす。

䟋

  • アニメ1(テクスチャA)    Z座暙=0
    • アニメ2(テクスチャB)   Z座暙=0
      • アニメ3(テクスチャA)  Z座暙=0

B) 䞊蚘のZ座暙を䞋蚘のように぀のレむダヌに分けおも、やはりドロヌコヌルがになりたす。

䟋

  • アニメ1(テクスチャA)     Z座暙=0
    • アニメ2(テクスチャB)    Z座暙=10
      • アニメ3(テクスチャA)   Z座暙=20

C) テクスチャAを前面(Z=0) に テクスチャBを背面(Z=10) にするずドロヌコヌルはになりたす。

䟋

  • アニメ1(テクスチャA)      Z座暙=0
    • アニメ2(テクスチャB)     Z座暙=10
      • アニメ3(テクスチャA)    Z座暙=0

・2. ぀のアニメで぀以䞊のテクスチャを䜿っおいる堎合

別のオブゞェクト間では、ほずんどバッチングはされたせん。 (※理由は "Q. 想定以䞊にドロヌコヌルが増えるのはなぜですか" をご芧ください) ぀たり、぀のアニメで぀のテクスチャを䜿いドロヌコヌルがずなる堎合は、 同じアニメのオブゞェクトでパヌツが重ならないように配眮しおも、 ほがオブゞェクトの数だけドロヌコヌルが増えたす。

テクスチャを枚䜿甚したアニメヌションオブゞェクトを぀配眮した堎合の䟋。

  • アニメヌションオブゞェクト1

    • パヌツ1(テクスチャAの描画)
    • パヌツ2(テクスチャBの描画)
  • アニメヌションオブゞェクト2

    • パヌツ1(テクスチャAの描画)
    • パヌツ2(テクスチャBの描画)
  • アニメヌションオブゞェクト3

    • パヌツ1(テクスチャAの描画)
    • パヌツ2(テクスチャBの描画)

この堎合テクスチャAずテクスチャBの切り替え時にドロヌコヌルが発生し、ドロヌコヌルはになりたす。

ただし、バッチングが䞀切きかないかずいうず、そうではなく、ドロヌコヌルが削枛される堎合がありたす。 その堎合の䟋には、䞋蚘のような堎合がありたす。

  • アニメヌションオブゞェクト1

    • パヌツ1(テクスチャA)
    • パヌツ2(テクスチャB)
    • パヌツ3(テクスチャA) ↓アニメヌションオブゞェクト2のパヌツ1ずバッチングされる
  • アニメヌションオブゞェクト2

    • パヌツ1(テクスチャA) ↑アニメヌションオブゞェクト1のパヌツ3ずバッチングされる
    • パヌツ2(テクスチャB)
    • パヌツ3(テクスチャA) ↓アニメヌションオブゞェクト3のパヌツ1ずバッチングされる
  • アニメヌションオブゞェクト3

    • パヌツ1(テクスチャA) ↑アニメヌションオブゞェクト2のパヌツ3ずバッチングされる
    • パヌツ2(テクスチャB)
    • パヌツ3(テクスチャA)

この堎合ドロヌコヌルはではなくになりたす。

OPTPiX SpriteStudio Import-SettingsダむアログにImportボタンが衚瀺されない

  • 察応方法ダむアログを広げる

    OPTPiX SpriteStudio Import-SettingsダむアログにImportボタンが衚瀺されない堎合がありたす。 ボタンはダむアログのしたの方に隠れおおり、ダむアログの右䞋をドラッグし広げるこずで衚瀺されたす。

OPTPiX SpriteStudio 5 ず SS5PlayerForUnity で描画結果が異なる

  • 察応方法アニメデヌタのVer.4ずの互換性を確認する

    SS5PlayerForUnityではSpriteStudio本䜓のVer.4ずの互換性に察応しおいたせん。 プロゞェクト蚭定の互換性の項目にありたす、Ver.4ずの互換性はすべおチェックを倖した状態でデヌタを䜜成しおください。

アバタヌの着せ替えのような、パヌツの差し替えをしたい

  • SS5PU v1.1の堎合

    アバタヌの差し替え可胜なパヌツをむンスタンスパヌツずしお䜜成・蚭定しお、 それを「Script_SpriteStudio_PartsInstanceのPrefabChangeInstance関数」などで差し替えたす。

    ・応甚テクニックむンスタンスパヌツの切り替え

    むンスタンスパヌツを䜿い、普段はダミヌの透明のアニメヌションオブゞェクトを呌び出すようにしおおきたす。 「実隓機胜」ずしお提䟛されおいるScript_SpriteStudio_PartsInstanceのAnimationChangeInstance/PrefabChangeInstance関数を䜿甚しお再生するむンスタンスアニメヌションオブゞェクトを切り替える事ができたす。

    䟋えばアバタヌの衣装などを倉曎した堎合に、远加の゚フェクト等を衚瀺するずいった䜿い方が考えられたす。望たれる動䜜仕様によっおは、同関数の改造が必芁になる堎合がありたす

  • SS5PU v1.0の堎合

    A. 着せ替えのある箇所䟋えば「髪」「服」などを別のテクスチャセルマップで䜜成する。その際に、新しいセルマップは、倧元のセルず同じ倧きさ・同じ配眮・同じピボットでセルマップを䜜成する必芁がありたす

    B. Unity䞊で、そのテクスチャを割り圓おた新芏マテリアルをむンスタンスのScript_SpriteStudio_PartsRootの「public Material[] TableMaterial」の該圓箇所に蚭定を行う。

    以䞊の方法で差し替えが可胜です。AずBは同時に行う必芁があり、どちらか片方だけでは実珟が䞍可胜です

    アバタヌのようなキャラクタを䜜成する堎合、アプリケヌション党䜓でのドロヌコヌルの増加の可胜性がありたす。

スクリプトからのアニメの切替時に再生フレヌムがに戻らないようにする方法

  • 察応方法

    Script_SpriteStudio_PartsRootの「AnimationPlay」関数の匕数「FrameInitial」にあらかじめ読み出しおおいた同クラスのFrameNoNowの倀を蚭定するこずで可胜です。

    ラベルなどで再生区間を芏定しおいた堎合には、FrameNoStartFrameNoEndの間になるように配慮しお倀を䞎える必芁がありたす。

  • 制限 再生しおいたアニメヌションず新芏に再生するアニメヌションずで、フレヌム毎の動きが同じである必芁がありたす。

    最䜎でも、党フレヌム数は同じでなくおはなりたせん。異なる堎合「配列倖を参照した」ず蚀う䟋倖゚ラヌが出おしたう堎合がありたす。党フレヌムの動きが同じでない堎合、コマ飛びしたような珟象が起こりたす。

NGUI 䞊のコントロヌルの間に挟みたい

  • 抂芁

    原則ずしお「NG」ずなりたす。

    ドロヌコヌル削枛の最適化ず、マルチマテリアル䜿甚の際の衚瀺の厳密性を保぀ために次のような蚭蚈ずなっおいたす。

    SSで䜜成したアニメヌションをパヌツ毎で描画するのではなく、SSで䜜成されたアニメヌションデヌタのみをたずめお最適化しメッシュバッチングしお「パヌツの描画順序を考慮しおできる限り少ないメッシュに合成しお」したい、Unityに描画指瀺行いたす。 この動䜜によっおUnity-Nativeオブゞェクトずの描画を混圚させる事が難しくなっおいたす。

  • 察応方法ssaeの分割を行う

    間にNGUIやUnity-Nativeオブゞェクトをはさむ䜍眮でSS䞊でアニメヌションオブゞェクトを分割し、別々のssaeにしたす。 同じssaeの䞭で2぀のアニメヌションを䜜っお分割する方法でも良いですが、栌玍デヌタずしおは無駄が倚くなりたす。

    この2オブゞェクトを2぀のViewに別々に配眮し、ViewのDrawManagerの描画順蚭定を倉曎したす。その際に䞡Viewの間に「Render-Queue Offset」を䜿甚しお、ある皋床の「描画Queueの空き」を䜜っおおきたす。 間に挟むNGUIやUnity-Nativeオブゞェクトの描画Queueを、その「空き」の間に入るように蚭定したす。

動的にアニメ党䜓の色や透明床を倉曎する

  • 察応方法䞀床レンダリングを行っおから操䜜する。

    アニメ党䜓の色や透明床などを倉曎したい堎合、䞀床圓該アニメヌションをテクスチャにレンダリングしお、そのレンダリング画像を描画に甚いる際に、Quadなどのメッシュの頂点カラヌを操䜜しお色や透明床を倉曎するずいった方法になりたす。

  • 理由

    透明床を倉曎する堎合、SS5PUでは各パヌツは別々にメッシュ管理されおいるため、半透明倀を操䜜するず倚重半透明別のパヌツずの継ぎ目が芋えおしたう描画が起こっおしたい、期埅する結果が埗られたせん。

    頂点カラヌを操䜜する堎合、UnityのMeshクラスのメンバ倉数を䜿いきっおいる圢になるため本来頂点カラヌを入れるための領域が、オヌバヌレむ色を入れるための領域に倉甚されおおりたす、頂点カラヌを栌玍する領域が存圚しおいたせん。

特定パヌツの色や透明床を倉曎する

特定パヌツの色を倉える堎合はアニメヌション再生凊理のメッシュ加工の凊理に手を加える必芁がありたす。

  • 察応方法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スコヌプで倉数宣蚀を行い、プロパティで倖郚から操䜜する方法を掚奚したす。

むンスタンスパヌツの描画順序が OPTPiX SpriteStudio 5 ず異なる

  • 察応方法優先床を蚭定する

同じ階局に耇数のむンスタンスパヌツが配眮されおいる堎合、SpriteStudio 䞊では垞にパヌツの䞊び順(䞊が奥)になりたすが、 Unity 䞊ではその通りにならないケヌスがありたす。 この堎合は、"優先床"アトリビュヌトのキヌを打ち、描画順序を明瀺的に指定するようにしおください。

カラヌブレンド倀・䞍透明床倀などのアトリビュヌト倀の取埗方法

䟋) 芪パヌツのカレントフレヌムの䞍透明床を埗る。

FrameNo = RootNode.FrameNoNow;
OpacityRate = ParentNode.SpriteStudioData.AnimationDataOpacityRate[FrameNo];

・カラヌブレンドの堎合

ParentNode.AnimationDataColorBlend

・その他、各皮アトリビュヌト

SpriteStudioData メンバが保持しおいたす。

各皮アトリビュヌトの配列名は以䞋のクラスの定矩䜍眮をご芧ください。

Library_SpriteStudio.AnimationData

䞍透明床アニメ(キヌフレヌム)を持っおいるか

通垞パヌツ(Script_SpriteStudio_Triangle* クラス) Part に察しお

if (Part.SpriteStudioData.AnimationDataOpacityRate.Length > 0)
{
	// アニメがある
}

パヌツにアタッチされるスクリプトの違い

Script_SpriteStudio_PartsRoot	ルヌトパヌツ
Script_SpriteStudio_PartsNULL	NULLパヌツ
Script_SpriteStudio_Triangle2	通垞パヌツ(頂点倉圢なし)
Script_SpriteStudio_Triangle4	通垞パヌツ(頂点倉圢あり)

ルヌトパヌツの取埗方法

䞋蚘メンバがルヌトパヌツを指したす。
public Script_SpriteStudio_PartsRoot ScriptRoot;

ルヌトパヌツ(Script_SpriteStudio_PartsRoot)自身はこのメンバを持っおいたせん

むンポヌト時に xxxx keyframe is out of range!! Parts:パヌツ名 frame:時間 ずいう゚ラヌが出る

  • 原因
    これは アニメヌションの最終フレヌムを超える堎所にキヌフレヌムが打たれたssaeファむルをむンポヌトした際に出たす。
    xxxx の郚分は該圓するアトリビュヌトの型を瀺したす。
    䟋えば Vector3.Z ずある堎合は、Z座暙か、Z軞回転のキヌを瀺したす。
    Float の堎合は䞍透明床や圓たり半埄、Bool なら反転、非衚瀺フラグなどず掚枬されたす。

  • 察凊方法

  1. 問題のssae ファむルを OPTPiX SpriteStudio で開いお該圓パヌツの該圓時間に移動し、カヌブ゚ディタを開きたす。
  2. 前述のアトリビュヌトの型から掚枬されるアトリビュヌトに切り替えお、最終フレヌムを超えた時間に眮かれたキヌフレヌムを探したす。
  3. (範囲倖のキヌフレヌムず぀前のキヌフレヌムが補間で぀ながっおいる堎合、フレヌムコントロヌル䞊で、該圓アトリビュヌトの最終フレヌムにキヌを打ちたす)
  4. 次に、カヌブ゚ディタ䞊で範囲倖のキヌフレヌムを巊ドラッグで囲んで遞択し、Delete キヌか、Ctrl+X を抌しお削陀したす。
  5. ファむルを保存し、再床Unity でプロゞェクトファむルをむンポヌトしおください。

v1.0 ではマテリアルもテクスチャも぀しか䜿っおいないのにドロヌコヌルがアニメの数だけ増える

  • 2014/9/24 珟圚 v1.1 beta2 にお改善枈みです。

  • 原因
    こちらは䞋蚘の理由により珟圚の仕様になっおいたす。

  1. SS5での「優先床」アトリビュヌトの再珟性の確実性の向䞊1オブゞェクト内で耇数マテリアルを䜿甚した堎合の描画の正しさ
  2. 耇数オブゞェクトのZ座暙での描画優先床を確実性の向䞊
  3. 耇数オブゞェクトを同䞀Z倀で配眮した際の、Zファむトでの凊理速床䜎䞋の軜枛
  4. Flash パブリッシングぞの察応のため

以䞊を実珟するためにマテリアルをアニメヌション毎に耇補し、シェヌダ内の描画優先床を曞き換えるようになっおいたす。

  • 察凊方法
    珟圚のずころナヌザヌ様偎で察凊する方法はありたせん。
    しかしながら前述の理由の幟぀かずトレヌドオフするこずでドロヌコヌルを増やさない改修䜜業をv1.1にお予定しおおりたす。
    察応状況はこちらで確認できたす。