テキトーに全力疾走

No music, no lifeで

走ったり、こけたり・・・・


テーマ:
Macを移行してからプロジェクトをgitからクローンして
さぁUnityで…と思ったら…

サンプルのAngryBotはすんなり立ち上がるのに
肝心のプロジェクトが立ち上がらない…!
ぉわた…ぉわたょ…かえっていい?

とおもったけどいろいろ調べてたらUnity関連でいつも参考にさせていただいてる
こちらのブログに到着

現象としてはUnity起動→ImportAssetsのダイアログ→クラッシュレポート起動
この繰り返しなので同じ現象かな?!と期待してやってみたものの…

…やってみたんだけどね

やっぱりダメでした



がしかし!
IME日本語を切った状態で
プロジェクトフォルダの下にあるLibraryフォルダをリネームして
再度立ち上げてみたところ…なんと無事に起動!!!!


わーい!
なんかわかんないけどやった!


とりあえず同じ状態の人がいるかもしれないから記録!
いいね!した人  |  コメント(0)  |  リブログ(0)

テーマ:
ついに世の中にでました~♪パチパチ

ブラッシュアップしながら気づいた点を何個か
Unity本体に明るくないのでuniSWFに関係なかったらごめんなさい

【Texture】
Flash上で別のビットマップでも同一MCの中に置かれているとコンバート時に1枚の画像に変換される
なので離れて配置してると透明な無駄画像が出力されてしまう
これはビットマップを並列するときはMC化することで解決

ビットマップやシェイプを拡大すると拡大した大きさでテクスチャ化される
小さいものを拡大して使う場合はMC化して拡大する

↑みたいに拡大することで出力テクスチャは小さくなるけど拡大比率がでかすぎると
エッジの内側にボケがでるので極端な拡大は

まだクリッピング(マスク的なの)がα版なので使えません
なので画像自体をくり抜くカバーかけてごまかすしかないので
ここはデザイナーさんと相談しないと厳しい・・・・

これはFlashでの作業だけど読み込んだ画像プロパティは劣化なしに設定しておく
swfで出力したあとさらにuniSWFでコンバートされるのでこれしないと画像が酷いことになる

【ActionScript】
基本的に対応してません
(将来的に対応予定とは言っている)
なのでGameObjectに
・MovieClipBehaviourのコンポーネントを追加
・SWF内のリンケージを指定
・C#'(またはJS)のクラスをひもづける
このGemeObjectをprefab化することで
ASクラスを持ったMovieClipとほぼ同様の扱い方ができます

【テキスト】
日本語対応してますがuniSWFそのものの機能では使わない文字もぜーんぶ出力されちゃうのでまだまだ厳しいです
ダイナミックテキスト使うにはUnity-sysfont一択だと思ってます!
※使い方についてはこちら

【MovieClip】
swfだとタイムラインの必要のないものはグラフィックにしていたけど
uniSWFの構造上グラフィックにするとかえってバイナリファイルが大きくなる
よって何もかんがえずにすべてMC化

タイムライン上にASがあるとコンバートエラーになります
よってstop()やgotoAndPlay()などのタイムライン関数をFlash内に書けません

ループ再生や指定ラベルだけを再生したい場合はラベルの終わりに
トリガーになるラベルを追加してプログラムで制御する必要がある
連続する必要がないのであればタイムラインを長くするよりは細かくMCで分けた方が
使い勝手はいいかもしれません

【uniSWFのExportOption】
基本的にデフォルト設定で問題ないと思いますが
画像数が多い場合はTextureSizeを適宜変更して枚数減らした方がいいかも
またDynamicTextを仕様している場合は数字・アルファベット・記号がtextureに書きだされます
↑で紹介したsysfontなどを使うのであれば必要ないのでembeded charactersに1とか@とか1文字入れとくと幸せ

いいね!した人  |  コメント(6)  |  リブログ(0)

テーマ:
便利なところと難しい所…まだまだありますね

・吐き出されるbyteファイルの容量が小さくなった
 アニメーション多いと結構なサイズになってたのが半減

・タイルマッピングでの書き出し可能に
 微妙なサイズの画像があっても最小サイズに抑えられるのでありがたい

・極端に縮小したMovieClipの中の画像が切れてしまうバグは解消

・だがしかし
 ExportOptionでpaddingを指定すると右下45度に指定したpx分だけずれたゴーストができる
 これはすぐに対応してくれているので1.0,4では直ってると思うが
 とりあえず今のところはpadding指定は行わないほうが◎
 (デフォルト値が10pxあるので大丈夫)

・実は↑の実装はこのバグのために作ってくれたみたいなんですが
 シュミレーター上で表示してみると画像の繋ぎ目に影ができることがある
 これが出来た場合は一旦Tilemapにチェックを入れてExportし
 もう一回チェックを外してExportすると解消されます
 なんか裏ワザっぽいけどこれでとりあえず回避できた

・アルファアニメーションが1フレーム前で止まってしまうバグは直ってた

・着色系のアニメーションはまだっぽ

・表示オプションの非表示をチェックしたらvisible=falseとして認識してくれる
 途中のタイムラインから表示したいときとかはちらっと1フレーム目が
 写ってしまうのはこれつかってプログラム側でフラグオンで解決?

・clipRectはやぱりまだ使えないっぽいのでマスクはまだ使えない
 (使うと回転系のアニメーションに影響がでる)

・公式ドキュメント更新する気ないw
 補完機能使ってると結構色々あるんだけど変数とかdoc入ってないから
 わからないのも多数


最後にFLASHファイル作る人に注意しとくことは…

・ムービークリップ名代わりにリンケージ名を使うと初期表示が糞重くなる
 1フレーム目に全部吐き出されるので当たり前ではあるのだが…
 ネストしたMoveiClipはきちんと読みこんでくれるので
 必要なければ呼び出したいrootやattachしたいMC以外は
 極力ムービークリップ名で対応するべし
 つかむしろリンケージファイルもステージにおかなくていいくらい
 (FLASHerの人だとあんまやらないと思うけどね…)
 プログラムで使用しているのかまで確認しないと
 使ってないファイルの整理できなくなるから他の人がさわれなくなるしね

・Flashの概念と同じでいわゆるSprite/MovieClipの類になってないものは
 同じ画像でもTextureに複数書き出されるのできちんとMC化しとくこと
 (グラフィックでもいいけど)

・FlashLiteに比べたら格段に使える容量はでかいけど
 やっぱりタイムラインは無駄に使わないこと
 繰り返すアニメーションなら使いまわすとかね
 byteファイルのサイズ節約

使い切れてない機能も結構あるから色々調べたいなー
いいね!した人  |  コメント(5)  |  リブログ(0)

テーマ:
オフィシャルのドキュメントが空なのでとりあえず使い方を…

1)UniSWFSharedAssetManagerBehaviourをGameObjectとかカメラにComponent->uniSWF->SharedAssetManagerでくっつける
※プルダウンで出てくる名前は短縮されてます

2) Inspectorで「AddSharedFont」または「AddSharedMovieClip」ボタンを押してPreloadしておきたいswfを選びます

おわり
ちょー簡単
非同期処理なのでメインの描画が止まったりすることもないです

ちなみにスクリプトから操作する場合は
シングルトンのクラスなのでインスタンスを下記のように参照します
UniSWFSharedAssetManagerBehaviour.instance
preloadSWFとpreloadFontというプロパティがあるので
ここにpreloadしたいswfのAsset以下のファイルパスを渡します

string配列なので
string[] files = new string[1];
files[0] = "swf/MovieClip.swf";
UniSWFSharedAssetManagerBehaviour.instance. preloadSWF = files;
みたいな感じ?

プリロードの状態は

UniSWFSharedAssetManagerBehaviour.preloadComplete
で調べられます
preloadが完了してたらtrue返ってきます
ただGUI上でswfの指定がない場合は最初からtrueが返ってくるので
スクリプト上で指定した場合は指定してから状態チェックをした方がよいです

あー
あとInspectorのProfileOptionsってやつはデフォルトが「SwfNone」なんですが
これをSwfLoadに変えるとLoadしたSWFの名前、TextureLoadにするとロードしたTextureの名前がコンソールに出ます
スクリプトからも

UniSWFSharedAssetManagerBehaviour.instance.swfProfile

でアクセスできます
(あんまり使わないと思うけど…)

ゲームオブジェクトに紐付いてる関係上
シーンをまたいだら消えます
複数シーンで使いたい場合はDontdDestroyとかうまく使えばいけるのかなぁ?
暇な時にやってみよー

いいね!した人  |  コメント(0)  |  リブログ(0)

テーマ:
コンバーターのバグで今後修正されるそうですが
ネストしたMovieClipである条件の時に書き出されるTextureがおかしくなる現象が起こりました

100%の大きさが128*128とした場合
そのMovieClipがタイムラインに最初に登場する時に
64*64以下の大きさにリサイズした状態だと
Textureの書き出しが64*64のエリアになってしまうようです

解決策は大きさが切れてしまったTextureを持つMovieClipをリンケージすることです
ネストしたMovieClipで変形を多様している場合は
コンバートした後のTextureを一度チェックした方がよさそうです

あと、これは蛇足ですが
pngなどにリンケージをつけるとコンバートできなくなります
(ちょっとはまったw)
いいね!した人  |  コメント(0)  |  リブログ(0)

テーマ:
ゲーム開発者向けの日本最大級カンファレンス「CEDEC 2012」に8/21-8/22の二日間参加してきました
気になった点は3つ

まず1つは目新しい技術はあまりなかったですが
AI+プロシージャルが盛り上がっていたのが印象的だった

プロシージャルとは自動生成のこと
状況に応じて素材を組み合わせて適切なアニメーション(やテクスチャ)を生成する仕組み

キャラを操作するゲームではAIと組み合わせることですごく面白くなりそう
例えば敵に向かって進ませようとしても気弱な正確だとおよび腰になるとか…w

2つ目はUnity
私も今使ってますがUnityを使った開発が増えてる
できることや選択できるものが多いのでどこも手探りって感じだった
逆に今のっておかなかったら出遅れるかも
uniSWFとか早く食いついてよかった

3つめはゲーム会社がんばれw
コンテンツ資産ももってるし技術者もいっぱいいるんだけど
いまいちスマートフォンに対応できてない
というか過去の資産の流用に囚われすぎて進めてない感じ
足元固まったらすんごい勢いついて怖そうだけど
客観的に見てもったいなーいって思った
特にSE◯Aさんがんばれ

あ、明言はされてなかったけどアンドロイド嫌われてたw
しばらくはiPhoneがやはし有利な気がしました

いいね!した人  |  コメント(0)  |  リブログ(0)

テーマ:
ver1.0.1がリリースされました
気になった変更点はこちら
・UniSWFSharedAssetManagerBehaviourクラスが追加
・MovieClip.addFrameScript()が追加
・MovieClip.currentLabelが追加
・MovieClip.playBackwards()が追加
・gotoAndStop()やgotoAndPlay()で指定したラベルの最後のフレームに飛んでしまうバグが修正
・ネストしたMCをリンケージしなくてもMovieClipとして取得できるようになった
・TextFormat.colorで色が白になってしまうバグが修正
・TextFormat.fontClassNameでフォント名が取得できるようになった
・window->uniSWF->ExportOptionウィンドウの中が新しくなった

UniSWFSharedAssetManagerBehaviour
MovieClip.preloadSWFをGUI上で設定できるクラス
ダイナミックテキストを持ったGameObjectを最初から配置する場合に使えます

MovieClip.addFrameScript()とMovieClip.currentLabel
これがでかい!!
gotoAndPlay("label")で指定した場所から再生した場合に
addFrameScript("label", handler);
で指定したラベルを再生したらhandlerが呼び出されます
ラベルの最後に例えば"label_end"のような終了判定用のラベルを置いておけば
handler(Cevent e)の中で
MovieClip mc = e.currenttarget as MovieClip;
string currentLabel = mc.currentLabel;
mc.gotoAndPlay(
currentLabel Substring(0, currentLabel.Length -2));
とか書いてやるとラベルのループ再生が実現できます
gotoAndPlay()のバグが修正されたのも含めてこれはありがたい♪

MovieClip.playBackwards()
逆再生です。ラベル指定ができないので単一のタイムラインをもったものとかに使う感じ
(ドアの開閉とかクローズアップみたいな動きとか…)

TextFormat系のバグFixと追加仕様
DynamicTextのフォントカラーがちゃんと取れるようになった!これはバグレポートに送っていたので対応してくれたようです
フォント名の取得はちょっと注意が必要でフォント名の後ろに「_sz:18_i:0_b:0」というような文字列がくっついてきます
これは文字サイズ、斜体(0or1)、ボールド(0or1)のようです
フォント名を使う時はここをトリミングする必要がありそうです

ExportOptionの内容が刷新
特にFont周りが新しくなりました
埋め込みフォント、埋め込みunicodeの範囲、漢字(チェックボックス)、中国語(チェックボックス)が選べるようになりました
DynamicTextで日本語を埋め込んでも反映されないのでここで設定する必要があるのですが
簡単に設定できるようになったのでありがたい機能です!
あと、繰り返し使うものをまとめてFileName_shared.swfという名前にしておくと
簡単に参照できるようになっています

今回のバグ修正と機能追加でまた使いやすくなりました!

いいね!した人  |  コメント(0)  |  リブログ(0)

テーマ:
そのまま表示するだけではお仕事にならないので色々と動的に使ってみる

MovieClipの中にTextureを貼り付けてみる
Resourcesの中にあるTextureファイルをロードして貼り付けます
MovieClip mc = new MovieClip("fileName:linkageName");
Texture tex = Resources.Load("textureName");
mc.graphics.drawRectUV(txt, new Rect(0,0,1,1), new Rect(0,0,100,100));
pumpkin.display.Graphicsクラス…指定したMaterialやTextureをMovieClipの中に描画する
UnityEngine.Rect(top, left, width, height)…第2引数のRectはTextureの範囲指定、第3引数は描画エリアの指定に使います
Graphicsクラスで描画したTextureはmc.graphics.clear()で消去できます
ただしMovieClipが元々持っているTextureは削除できません
アニメーションが同じキャラクターとかは基本のMCだけ作って動的にTexture変えて作った方が管理が楽かも

MovieClipの管理クラスでインスタンス管理
Flashだったらラベルの最後にstop();とかgotoAndPlay("label");とか書いておけば
指定したラベルだけを再生してくれるのですがスクリプトは無視されちゃうので
Update関数などを使って再生ラベルを監視するクラスを作る必要があります
removeChildしないとどんどんMCが追加されてしまうので1度再生するだけのアニメーションなんかは
最後まで再生したら自滅する仕掛けがないと無駄に重くなっちゃう

Cameraに注意!
意外なところで落とし穴
MovieClipOverlayCameraBehaviourをaddComponentしてるのにCameraの参照がNullに…
調べたところCameraを「Main Camera」という名前で取得しているようです
カスタムカメラに変更する場合も名前は変えられないようです
また、ClippingPlanesの[Far]の値は1000で固定しておいた方がよさそうです
1000より小さくすると表示されないMovieClipがあったりします

リンケージの使いどころ
Flash内でMovieClipに着色や明度を指定してもリンケージしたMovieClipでは反映されません
着色と明度を使いたい場合は無名クラスのMovieClip(リンケージしない)にしておく必要があります
ただ、コマアニメのような画像がどばーっと書きだされてしまうのであまりおすすめできません
おとなしくアルファだけで表現したほうがよさそうです
アニメーションするMovieClipは基本的にリンケージしておいたほうがよいです
逆にアニメーションのないMovieClipはリンケージするとtextureが個別になってしまうので無名クラスの方が結果ファイル数が減ったりします

Unityのいいところが使えない…!
プレイ中のインスタンスの状態が目視できるHierarchyウィンドウはUnityの便利な機能なのですが
残念ながらMovieClipをStageにaddChildしてもHierarchyには表示されません
いまどんなMovieCLipが配置されているのかを目視できないのは
Unityに慣れた人にはちょっとめんどくさく感じるかも?

DynamicTextでエラーが出るよー
昨日まで問題なく動いていたのに急にエラーが…
原因まったく不明ですが回避方法だけ見つけました
(FlashかuniSWFのバグだと思います)
1.Flash上でいったんフォントの指定をゴシックとかに変更してパブリッシュ
2.Unityに切り替えてexportさせる
3.再びFlashに戻って指定したいフォントに切り替えてパブリッシュ
4.Unityに戻ってまた読み込む
とりあえずこれでエラーは直りましたがどっちが原因なのかわからないのでモヤモヤ…
いいね!した人  |  コメント(0)  |  リブログ(0)

テーマ:
FAQには載ってないとこで引っかかったところ

Flash側でリンケージ名に「.」を入れると挙動がおかしくなる
おそらくドット以降はファイルの拡張子として使われているのであろうかと…
getChildByName("インスタンス名")で取得するとなぜかSpriteになってしまうMovieClipがあったので
リンケージ名のドットをアンダーバーに書き換えたら解決した
自分ではリンケージ名にドットは使わないので思いがけず出会った落とし穴

gotoAndStop("label"), gotoAndPlay("label")で指定すると最後のフレームになる
これは問い合わせたところバグだそうで直してくれるそう♪
現状だとちょっと困った動作になってしまうので
mc. gotoAndPlay(mc.getFrameLabel("label"));
という書き方で回避してます
getFrameLabelは新しいAPI Referenceに載ってないので今後消えるかもしれないけど
とりあえずバグが残ってる間はこのやり方でいけそう

タイムラインの1フレーム目でアルファとかかけると挙動がおかしい
これもバグなのかなぁ?
1フレーム目のMCにアルファ0をかけて、それ以外の場所でgotoAndStop()するとアルファ0のまんまで表示されないことがある
出ない場所は、変形をかけているところとアルファかけてるところ
それ以外だと表示されているっぽい


なんか落とし穴もありそうだが
来週大きな更新があるらしいのでそこに期待!
いいね!した人  |  コメント(0)  |  リブログ(0)

テーマ:
引き続きuniSWFのお話です


まずは良かったところ
・対応が早い!
DynamicTextの扱い方がよくわからなかったのでサポートに問い合わせたところ
サクッとチュートリアルページ作ってくれました!
ちなみに2Byte文字を扱うにはスクリプトをUTF-16で書く必要があります

・実は微妙に使えた!
前回の記事でgotoAndPlay()でラベルが使えない、と書いたんですが実は使えましたw
ただ、ラベル指定するとラベルの最後のフレームに飛んでしまう模様
暫定的に指定ラベルの次のフレームにダミーのラベルを入れて使ってみてます
(これもバグなのか仕様なのか問い合わせ中)

・描画早い!
アニメーションを使う際にFlash側で気をつけることは
使いまわすMovieClipは必ずリンケージしておく!
リンケージしなくてもアニメーションは再生できるのですが
リンケージしておくと無駄なDrawCallがなくなるので描画が早くなります
同じAtras使ったものなら100枚位再生してもFPSも落ちなさそう

・swfファイルをアプリに持たなくても大丈夫そう♪
Unity上でコンバートしたバイナリファイル(とものによってはpng)の入ったファイルga
Resourcesにあれば再生できるので
必要に応じてDLして再生、という使い方もできそうです

ちなみに、困ったこと
・使い方の問題なのか、ENTER_FRAMEのイベントハンドリングができません><
・FlashでいうところのDepthがマイナス値を設定できないので何も考えずにaddChildしちゃうと重なり順を変えるのが大変
(デフォルトだと0から順番に振られていきます)
・DynamicTextを使用する際に埋め込み設定しても2Byte文字は吐き出されないのでuniSWFのOptionWindowで直接手入力しなきゃいけない
カナ・かなだけならいいけど漢字も入ったら大変だし、テクステャのサイズが足りない予感!
・MovieClipにMovieClipを入れ子にできない
そんなに困らないけど…いちいちSpriteはさまなきゃいけないのでめんどくさい…かな?
・StageクラスがSingletonでMainCameraにしかAttachできなーい
MovieClip/ GameObject / MovieClipみたいな重なり順はできないので振り切るしかない

まだよく解らないところは多いけど
開発してる会社がすごくアグレッシブなのでまだまだ期待してます♪
いいね!した人  |  コメント(0)  |  リブログ(0)

AD

ブログをはじめる

たくさんの芸能人・有名人が
書いているAmebaブログを
無料で簡単にはじめることができます。

公式トップブロガーへ応募

多くの方にご紹介したいブログを
執筆する方を「公式トップブロガー」
として認定しております。

芸能人・有名人ブログを開設

Amebaブログでは、芸能人・有名人ブログを
ご希望される著名人の方/事務所様を
随時募集しております。