#author("2022-01-02T13:47:50+09:00","default:clobau","clobau")
#author("2022-01-02T13:49:07+09:00","default:clobau","clobau")
----
#contents
----
* 埋め込み用出力 [#abc129cc]
-''ファイル > 埋め込み用出力...'' メニューを実行すると、ゲーム等に組み込んで使用するため必要情報のみで構成された pxls ファイルを出力できます。
-pxls は再度 PixelLiner で読み込むこともできますが、情報量が減っています。
* Unity で pxls バイナリファイルを扱う [#w2895185]
&br;
CENTER:SIZE(6):Download [[PixelLiner Library For Unity>http://pixelliner.sakura.ne.jp/download/pixelliner_for_unity.unitypackage]]
CENTER:SIZE(2):ver 0.7 ( 22/01/02 Updated )
&br;
+PixelLiner で ''埋め込み用出力...'' ダイアログ内の「''Unity 用出力''」にチェックを入れ、 ''**.pxls.bytes'' (** は任意のファイル名) ファイルを出力します。
-- Unity でバイナリファイルを読み込むためには .bytes 拡張子を付与する必要があります。
+ここからは Unity での作業です。アセットフォルダ内に出力した **.pxls.bytes ファイルと、[[PixelLinerForUnity パッケージ>http://pixelliner.sakura.ne.jp/download/pixelliner_for_unity.unitypackage]]から読み込んだ PixelLiner ライブラリが、 Project タブ上に存在することを確認して下さい。
CENTER:http://pixelliner.sakura.ne.jp/img/190621_224021.png
+シングルトンな GameObject ( Camera などでも良いです ) に ''Pxls Loader'' コンポーネントをアタッチし、2. で用意した pxls ファイルと、それに対応するタイトルを Targets 配列に記述します。
CENTER:http://pixelliner.sakura.ne.jp/img/unity00.gif
--''Pixels Per Unit'' - 1ユニットに対するピクセル数を設定します。 Targets で指定した全ての pxls ファイルに適用されます。
--''Auto Flip X'' - true に設定すると、PixelLiner 上で「左方向の絵を描いたが、右方向は用意していない」時に、右方向を表示する場合に自動的に左右反転して表示します。 false に設定すると左向きの絵をそのまま表示します。
--pxls ファイル毎に Pixels Per Unit の数値等を個別に変えたい場合は、 Pxls Loader コンポーネントを持つ GameObject を複数個用意して下さい。
--title はプロジェクト内で他の pxls ファイルとの重複がないように設定して下さい。
-- PxlsLoader では''キャラクターファイルを非同期に読み込み/作成します''ので、ロード待ちを行う場合は ''PixelLiner.PxlsLoader.isLoadCompletedAll()'' を使ってロードの完了を確認して下さい。
+絵を表示したい GameObject に ''Pxl Chara Animator'' コンポーネントをアタッチし、 3. で設定した title と、初期ポーズ名を指定します。~
自動で MeshRenderer クラスがアタッチされるので、 Material に ''PixelLiner/PxlsMaterialNormal'' を設定します。
CENTER:http://pixelliner.sakura.ne.jp/img/unity01.gif
--''Allow Pose Jump'' &aname(allow_pose_jump); - 「ジャンプ先ポーズ(jump to)」の指定がある場合に、アニメーションが終了したら自動的に別のポーズにジャンプします。
--加算合成などブレンドモードの変更などを実装したい場合は、適宜 shader を取り替えた別の Material を用意して下さい。
+ スクリプト内で適宜 ''PixelLiner.PxlCharaAnimator'' コンポーネントにアクセスし、ポーズや向きの調節を行って下さい。
----
* PNGファイルを外部に出力 ( 本体 Air版 ver 0.97.0 以降 ) [#f678ddf1]
- デフォルトでは pxl ファイルと同様、pxlsファイルのバイナリデータにはPNGファイルが埋め込まれます。しかしこれを Resources/ 下に配置するのがメモリ的にNGな場合、''PNGファイルを単体で出力し''た上で、Unity側のインスペクタから画像を指定して読み込むこともできます。
++ PixelLiner で ''埋め込み用出力...'' ダイアログ内の「PNGをファイル外に配置」をチェックしてpxlsを出力します。 「''Character_Name.pxls.bytes.texture_0.png''」などのPNGがpxlsと同じディレクトリに出力されます。
CENTER:http://pixelliner.sakura.ne.jp/img/200216_174055.png
++ 必要なら Unity アセットを PixelLinerForUnity ver 0.6 にアップデートします。
++ Unity の Pxls Loader アタッチメントのインスペクタを開き、 Targets 配列内の External Png 配列に、出力された PNG の枚数分だけリンクします。
--- PixelLiner ver 0.97.0 現在、PNGファイルはパーツを出力した場合は2枚、そうでなければ1枚のみ出力されます。
-なお、PixelLiner ver 0.97.0 現在、PNGファイルを外部に出力したpxlsファイルを再度PixelLinerで開くことはできません。
----
*サンプルプロジェクト(Unity) [#w715654f]
&br;
CENTER:SIZE(6):Download [[Unity Sample Project >http://pixelliner.sakura.ne.jp/download/SamplePxlsViewer.zip]]
CENTER:SIZE(2):ver 0.7 ( 22/01/02 Updated )
&br;
**リリースノート [#releasenote]
>220102 ver0.7
--一部環境でpxlsファイルを読み込めない問題を修正。またメモリリークの問題を修正。
----
* PixelLiner.PxlCharaAnimator Class [#l3c99614]
**Public method [#k204b17d]
|BGCOLOR(#ADD4FA):void setChara(string chara_title)|使用する pxls ファイルの切り替えを行います。|
|BGCOLOR(#ADD4FA):void setPose(string pose_title, int restart_anim = -1)|現在の pxls ファイル内の特定のポーズを再生します。|
|BGCOLOR(#B9E6D2):└ restart_anim |1 = 常にアニメの再生位置を初期化(最初から再生します)&br; 0 = アニメの再生位置を初期化しません &br; -1 = アニメに変更がある場合のみ初期化します|
|BGCOLOR(#ADD4FA):void setAim(int aim, int restart_anim = -1)|現在のポーズ内で特定の方向シークエンスに切り替えます。|
|BGCOLOR(#B9E6D2):└ aim |PxlCharaAnimator.AIM_L&br; PxlCharaAnimator.AIM_R&br; PxlCharaAnimator.AIM_T&br; PxlCharaAnimator.AIM_B&br; などで指定します。|
|BGCOLOR(#B9E6D2):└ restart_anim |1 = 常にアニメの再生位置を初期化(最初から再生します)&br; 0 = アニメの再生位置を初期化しません &br; -1 = アニメに変更がある場合のみ初期化します|
|BGCOLOR(#ADD4FA):void animReset(int set_frame = 0)|現在の方向シークエンスの特定のフレームからアニメーションを開始します。|
|BGCOLOR(#ADD4FA):bool updateAnimator (float time_scale = 1)|アニメーションを time_scale フレーム分進行します。&br;auto_update_animation == true のとき、この関数は Update() 内で呼ばれるので、自前で速度を調整したいなどの事情がないなら手動で呼ぶ必要はありません。&br;ポーズや方向シークエンスを変更した直後であったり、フレームの変更があれば true を返します。|
|BGCOLOR(#ADD4FA):bool isChanged()|最後に実行された updateAnimator() の返り値が true であれば true を返します。|
|BGCOLOR(#ADD4FA):int getCurrentFrame()|現在の方向シークエンスのフレーム番号(0始まり)|
|BGCOLOR(#ADD4FA):int getLoopBackFrame()|現在の方向シークエンスがループした時に戻ってくるフレーム番号。|
|BGCOLOR(#ADD4FA):int countTotalFrame()|現在の方向シークエンスに何枚のフレームが含まれるか。|
|BGCOLOR(#ADD4FA):bool isAnimEnd()|1度でもアニメーションがループしていたら true を返します。setPose や setAim など、方向シークエンスを変更すると false に戻ります。|
** Public Properties [#sfeb3458]
|BGCOLOR(#ADD4FA):bool multiply_global_timescale|updateAnimator() の time_scale 値に自動で Time.timeScale を乗算します。|
|BGCOLOR(#ADD4FA):bool allow_pose_jump|[[Allow Pose Jump>#allow_pose_jump]] 参照。|
|BGCOLOR(#ADD4FA):bool auto_update_animation|毎 Update() 内で updateAnimator(1) を実行します。 |
----
* PixelLiner.PxlsLoader Class [#deac9be2]
**Public static method [#h4b51bfd]
|BGCOLOR(#ADD4FA):bool isLoadCompletedAll ()|全ての pxls ファイルの読み込みが完了している場合 true を返します。|
----
* PixelLiner Library for Unity のライセンス / License of this library [#y6b5cbb7]
Copyright (c) 2018 Cloba.U~
Released under the MIT license~
https://opensource.org/licenses/mit-license.php