West Hill 開発メモ

カテゴリ: Asset

GIFファイルをランタイムでデコードして
連続したテクスチャを出力するスクリプトアセットを作りました。

UniGif - https://github.com/WestHillApps/UniGif
a10
アニメーション、透過、インターレース等のGIF87a、GIF89aフォーマットに対応しています。

WWWやStreamingAssetsから取ってきたGIFファイルを、  
以下のようにテクスチャリストとして取得できます。
 
int loopCount, width, height;
List<UniGif.GifTexture> gifTexList = UniGif.GetTextureList (www.bytes, out loopCount, out width, out height);
UniGif.GifTextureは1コマ分のTexture2dと次のテクスチャまでのディレイ時間を持っています。

詳しくはサンプルシーン(Assets/UniGif/Example/UniGifExample.unity)と  
サンプルコンポーネント(Assets/UniGif/Example/Script/UniGifTexture.cs)を参照。  

Unity4.3.4でPC(Mac, Win)、Android、iOSで確認していますが
多分他のバージョンやプラットフォームでも動きます。

Texture2D.SetPixelsでテクスチャを作成しているため、サイズの大きい画像だと展開にはそれなりの時間がかかります。


参考 
Unity Forum - animated gif is not working
http://forum.unity3d.com/threads/animated-gif-is-not-working.27873/

とほほのWWW入門 GIFフォーマットの詳細
http://www.tohoho-web.com/wwwgif.htm

時雨エノキオプト GIFデコーダサンプルプログラム解説 ver1.11
http://www.geocities.jp/warotarock/asen2ndgif001.html

このエントリーをはてなブックマークに追加 Clip to Evernote

Unity Asset Storeにて、2D弾幕が簡単に作れるアセット「Uni Bullet Hell」をリリースしました。



コンポーネントを追加してインスペクタ上でパラメタをいじるだけで好きな弾幕が撃てます。
シューティングゲームやシューティング以外のゲームでも、
弾幕出したいなって時に使えると思いますので、よろしくお願いします。

弾幕パターン例 >> WebPlayerサンプル
チュートリアル&リファレンス >> Uni Bullet Hellサポート
ss_01
※当アセットに使用している画像やサウンドは、
Unity Japanチュートリアルのものを使用させてもらっています。 
>> 2D Shooting Game Tutorial (Unity Japan)

このエントリーをはてなブックマークに追加 Clip to Evernote

UnityでiPhone、iPadとAndroid用のTwitterクライアントアプリ「ドラゴンツイート」を作りました。
Twitterやってる方は良かったら気分転換に使ってみてください。

DragonTweet - Retro RPG-style Twitter app for iPhone & Android. http://westhillapps.com/app/dragontweet.html
ss_01_ja
このアプリの制作に使用した主なAssetと用途はこんな感じです↓

・NGUI
https://www.assetstore.unity3d.com/#/content/2413
GUI全般。

・Prime31 Social Networking Combo
http://prime31.com/plugins#combos-social
iOS、Android両用のTwitter連携。
TwitterへログインしたりREST API叩いたりといった処理がラップされていて、
Unityスクリプトからの呼出を共通化できるので便利です。

このエントリーをはてなブックマークに追加 Clip to Evernote

Unityでのパフォーマンス低下の原因の一つであるDrawCallを減らすためのAsset、
Draw Call Minimizerを使用した際の問題点とその対策方法のまとめです。

Draw Call Minimizer (free)

実装時のバージョンはUnity4.0.0、Draw Call Minimizerのバージョンは1.3.6.2です。

基本的な使い方についてはテラシュールウェアさんの記事が参考になります。

[Unity3D]Draw Call Minimizerの使い方と問題について
http://terasur.blog.fc2.com/blog-entry-215.html


以下が自分の環境で使用した際に起きた問題点とその対策方法です。

●まとめたオブジェクトが実行時に真っ黒になってしまう
 オブジェクトのマテリアルで使用しているテクスチャが大きすぎると、
 1枚に結合できずに黒くなってしまうので、
 テクスチャのインポート設定でMax Sizeを小さいサイズに変更する。 

●エラーメッセージUnsupported texture format needs to be ARGB32, RGBA32, BGRA32, RGB24, Alpha8 or DXTが出る
 メッセージの通り、テクスチャのインポート設定でAdvancedにして、
 FormatをARGB32、RGBA32、RGB24、Alpha8、DXTのいずれかに変更する。

●エラーメッセージCannot combine textures when using Unity's default material textureが出る
 これもメッセージの通り、デフォルトテクスチャは使用できないので、
 何でもいいのでテクスチャを張り付ける。

●一部のモデルでout of boundsエラーが出る
 エラーが発生しているスクリプトの該当箇所をコメントアウトする。
 対応箇所は「MeshCombineUtillity」の以下部分。

 mesh.colors = colors.ToArray();
 mesh.uv1 = uv1.ToArray();
 mesh.uv2 = uv2.ToArray();

●オブジェクトの当たり判定がなくなり、すり抜けてしまう
 実行時にColliderが外れてしまうので 、「OptimizedCombinedChildren」の
 150行目付近のメッシュを結合しているfor文の中にMeshColliderを付ける処理を追加する。

 go.AddComponent ("MeshCollider");
 go.GetComponent<MeshCollider>().sharedMesh = combinedMeshes[i];


ちなみに、Draw Call MinimizerはOptimizedCombineChildren配下の全オブジェクトを1つにしてくれるのではなく、共通のシェーダを使用しているオブジェクトが1つにまとめられます。
(2種類のシェーダを使っていたら2つのオブジェクトにまとめられます。)

マテリアルを結合しているので当たり前なのですが、複数のシェーダを使用している場合には注意が必要です。

このエントリーをはてなブックマークに追加 Clip to Evernote

このページのトップヘ