投稿日:-------- --
カテゴリー:スポンサー広告 |
投稿日:2011-12-30 Fri
Pです。iOSやAndroid端末は、アプリ自体の容量を減らすためにローカルキャッシュを行うことがよくあります。
これをUnity3Dで実現するにはどうするかの備忘録です。
[1]画像や3Dなどのリソースを一旦AssetBundle形式に変換する
http://unity3d.com/support/documentation/ScriptReference/BuildPipeline.BuildAssetBundle.html?from=AssetBundle
ここにあるScriptを適当なUnityプロジェクトのEditorフォルダに配置する
ちょっと不便なのがiOS、Android、PCブラウザなどそれぞれについてAssetBundleを作らなければならない。
先に[Switch Platform]で目的のPlatformに切り替えておく。
Projectパネル内の画像を右クリックして[Build AssetBundle From Selection - Track dependencies]をクリック。
適当な名前を付けて保存。(拡張子はそのまま.unity3d)
今作った.unity3d形式のファイルをサーバーにアップロードする。
これでリソースの準備は完了。
[2]WWW.LoadFromCacheOrDownload()を使用
名前の通り、ロードとキャッシュを自動で行ってくれる便利なメソッドです。
Loadが完了したら、用途に応じてキャストしてあげます。
IEnumerator LoadCorutin(string url) {
WWW www = WWW.LoadFromCacheOrDownload(url, 0);
yield return www;
if (www.error != null) {
print(www.error);
} else {
if (url.IndexOf("texture") > -1) {
//画像
Texture2D texture = www.assetBundle.mainAsset as Texture2D;
} else if (url.IndexOf("3d") > -1) {
//3Dデータ
GameObject go = Instantiate(www.assetBundle.mainAsset) as GameObject;
} else if (url.IndexOf("audio") > -1) {
//サウンド
AudioClip clip = www.assetBundle.mainAsset as AudioClip;
}
}
}
一点、気をつけなければいけないことがあります。
キャッシュされたAssetBundleの識別は、ドメインやディレクトリ構造を無視したファイル名だけで行われます。
どういうことかというと、
http://○○○○/img/org/img0.unity3d
http://○○○○/img/thumb/img0.unity3d
上記2つの異なるパスに配置されたAssetBundleは、「img0.unity3d」というファイル名が同じため、同一ファイルとして扱われます。
よってファイル名だけでユニークとなるようにする必要があります。
ちなみにPHPであっても問題なく動作します。
MIME Typeは「application/vnd.unity unity3d」です。
さらにサーバー上で「.unity3d」を使用できるように以下の記述をします。
AddType application/vnd.unity unity3d
ただし、POST送信が出来ない(??)ことと、識別がファイル名だけで行われるので若干使い勝手が悪いかもしれません。
/img/get_img.php?type=org&id=0
/img/get_img.php?type=thumb&id=0
などとしても「get_img.php」が同じため同一ファイルとして認識されてしまいます。
なのでもう一工夫してファイル名が被らないようにする必要があります。
投稿日:2011-09-30 Fri
Pです。FlashDevelpoを使っていて見つけた小ネタを書いてみたいと思います。
接頭辞として「mc」「txt」「btn」
接尾辞として「_mc」「_txt」「_btn」
を付与すると、型宣言することなく「MovieClip」「TextField」「SimpleButton」型として認識され
コードヒントを出すことが出来ます。
例:
mcCanvas, result_mc
txtInput, username_txt
btnStart, next_btn

mcGameの上にマウスカーソルを持って行ったところ
主にFlashIDEプロジェクトで役立つと思います。
Flash上に配置されたムービークリップやテキストフィールドのインスタンス名を
「mcGame」「txtPassword」のようにしておくとFlashDevelop上で
「mcGame.」までタイプするとMovieClip型のプロパティとメソッドがコードヒントで出るようになります。
インスタンス名を付ける時は、上記の法則に従うと効率化を図れそうです。

MovieClip型のメソッドgoto系が確認できます。
上記3つ以外に無いものかと探してみたのですが見つけられませんでした。
投稿日:2011-09-21 Wed
Pです。数ヶ月前登場したFlashDevelop4。
超便利プラグイン「trace」と「duplicate」がFlashDevelop4では未対応とのことで
なかなか導入に踏み切れなかったのですが、ダメもとで検索したらありました。
[FD3] [FD4] Trace plugin - trace() generator
http://www.flashdevelop.org/community/viewtopic.php?f=4&t=1128
[FD3] [FD4] Duplicate plugin
http://www.flashdevelop.org/community/viewtopic.php?f=4&t=2993
Pluginの仕様が変わったから未対応という記事をどこかで見て無いと思い込んでました。
投稿日:2011-09-19 Mon
おつかれさまです。フッチーです。
クリエイトウェーブは、仕事の全体の8割くらいFlashコンテンツ(ActionScript3)が占めていたんですが、最近unityが多くなってきました。
もちろんFlashの相談も結構きてはいるのですが・・・
今期でいうと10月以降は、unityが8割近くになりそうな勢いです。
unityをやってみたいって方、クリエイトウェーブで働きたいって方がおりましたら
dev@createwave.jp まで
やる気さえあれば、初心者でも歓迎します!
まだunityやってる人、そんなに多くないですしね。 一緒にああだこうだと言いながら伸びていければと思います!
長らく英語の書籍しかなくて、それも悩みですが、日本語の書籍が9月、10月と立て続けに発売されます!
いままで海外サイトやチュートリアルムービー、日本で研究してる有志の方達のサイトをみて作ってた訳ですが、これで楽になるかも。。。 日本でも増えてくるでしょうからね。
![]() | Unityによる3Dゲーム開発入門 ―iPhone/Android/Webで実践ゲームプログラミング (2011/09/10) 宮川 義之、武藤 太輔 他 商品詳細を見る |
早速かってきました。
残り2冊も楽しみです!
![]() | Unity入門 〜高機能ゲームエンジンによるマルチプラットフォーム開発〜 (2011/10/01) 高橋 啓治郎 商品詳細を見る |
![]() | Unityゲーム開発 (2011/10/15) ミッシェル・メナード 商品詳細を見る |
投稿日:2011-08-29 Mon
おつかれさまです。フッチーです。
前から、ActionScript3で明度とかいじる命令が良く判らないなあ〜ときになってました。
CSのオーサリングツールでは、カラー効果とかで直ぐいじれるのに、どうするのかなあ・・・・と
Tweenerとかに命令があるのか、Tweenerで明度とかいじってるサイトとかもあったんですが、Tweenerは使ったことない自分。
ColorMatrixFilterを使うのは前々から、思っていたけど、意味が判りにくいので後回しにしてました。
でも純正でColorMatrixFilterの明度とかいじる命令があった・・・ 忘れないうちにメモです。
まず
import fl.motion.ColorMatrix;
import flash.filters.ColorMatrixFilter;
で、ColorMatrix と ColorMatrixFilter の2つのインポートが必要です。
次に
var colorMatrix:ColorMatrix = new ColorMatrix();
で、新しいColorMatrixオブジェクトを作ります。
colorMatrix.GetFlatArray();
でColorMatrixFilterで使うための配列が取れるのですが、traceをかけるとデフォの標準な配列が入ってます。
colorMatrix.SetBrightnessMatrix(明度値);
で明度をセットして
colorMatrix.GetFlatArray();
で配列を取り出し
ColorMatrixFilter
に、その配列をセットして明度を調整できるようです。
仮にムービークリップ 「_mc」に明度値「50」をセットする場合は
var colorMatrix:ColorMatrix = new ColorMatrix();
colorMatrix.SetBrightnessMatrix(50);
var filter:ColorMatrixFilter = new ColorMatrixFilter();
var filterMatrix:Array = colorMatrix.GetFlatArray();
filter.matrix = filterMatrix;
_mc.filters = [filter];
で明度を調整することが出来ます。
明度値は、Number型で 0〜255 となってて0がデフォルトで通常値ですが それだと明るくなるだけなので -30とかマイナス値を入れてみるとちゃんと暗くなりました。動くのだから使っていいのかな・・・
コントラストをいじる時は
colorMatrix.SetContrastMatrix(コントラスト値);
コントラスト値、はNumber型で 0〜255
色相をいじる時は
colorMatrix.SetHueMatrix(色相値);
色相値値、はNumber型で 0〜255
彩度をいじる時は
colorMatrix.SetSaturationMatrix (彩度値);
彩度値、はNumber型で 0〜255
となるようです。
これで、少しスッキリしました(笑
テーマ:FLASH DEVELOP - ジャンル:コンピュータ
△ PAGE UP












