Unity5の新しいAssetBundle機能を使ってサーバーからAssetBundleをダウンロードする
※こちらの記事の内容についてOSごとのビルド分けを行っていないためPC上では動作しますが、実機に移したときに動作しません。 実機に移して使えるものについてはこちらを参照ください。
AssetBundleをビルド
- まずAssetBundleビルドに含めたいアセットを選択して、含めたい階層を選択します (このときスラッシュで区切ることでフォルダ配下にフォルダの作成が可能)
2.Editorフォルダ配下にCreateAssetBundlesスクリプトを作成
- エクスポートされる各々のAssetBundleはAssetBundleメニューで作成した名前を持つ
- 各々のAssetBundleは.manifest拡張子に関連付けられているファイルを持つ(Assetの依存関係の情報を持っている)
- さらにAssetBundleとAssetBundles.manifestファイルが作成される
3.プロジェクトフォルダ内に出力フォルダと同名のフォルダを作成(この場合はAssetBundles)
4.Buildを押すとAssetBundleが生成される。
AssetBundleを任意のサーバーにアップロード
(こちらはUnityと直接関係ないので割愛します)
AssetBundleをダウンロード
ダウンロードするスクリプトを作成 gist.github.com スクリプトを作成したら適当なオブジェクトにアタッチしてBundleURLとAssetNameを設定
再生ボタンを押すとオブジェクトがシーン上にオブジェクトが生成されます。 Assetsフォルダ配下にデータが入っていなくても作成されること(WebServerからデータをとれてきている)ことを確認してみてください。
Method OverLoading(多重定義)
同じ名前のメソッドを別の型で用いたいときなんかに使える コードを見れば何をしているかは大体わかる。あまり使いどころはなさそう
動画
https://unity3d.com/jp/learn/tutorials/modules/intermediate/scripting/method-overloading
Ternary Operator(3項演算子)
真偽判定を便利にできる3項演算子 gist.github.com
参考動画 unity3d.com
Properties
プロパティとはメンバ変数をカプセル化して、外部から変数へのアクセスをより柔軟に変更できる仕組みです。 まずは基本的な使い方から。 このように変数はprivateにしてプロパティを変数名の大文字にして書くのが一般的な書き方です。get, setの部分をアクセサと呼び、それぞれ変数の読み取り、書き込みを定義します。これにより外部からはプロパティ経由でしか変数にアクセスできなくなります。 gist.github.com アクセスするサンプルのスクリプトはこちら。 動画ではPlayerクラスをnewしていますが、あまりやらない方法(というか上記スクリプトではmonobehaviourを継承させているのでNew出来ないの)なのでgetComponentしています。 gist.github.com
さて上記だと結局public変数と同じじゃないかと思うかもしれませんが、プロパティを定義することで便利になることが2つあります。 * 読み取り専用、書き込み専用の変数が作れる このようにgetやset部分を消去することで読み取り専用、書き込み専用の関数を簡単に作ることが出来ます。 gist.github.com
- アクセサは関数と同じように扱うことが出来る。 get,setの中で関数を呼ぶことが可能です。例えば下記のように書くことで、値を代入するだけでsetアクセサ内で関数が呼ばれて、3乗した値がセットされるといった具合です。set関数内でCoroutineを呼んで値が変わる度にメソッドを走らせるといったことに用いると便利です。 gist.github.com
とはいったもののいちいちpropertyを書くのは面倒だといった人も多いかと思いますが そんなときは省略形が便利です。 このように書くことで省略して記述が可能です。 gist.github.com
簡易ダメージスライダーの作成
今回はゲーム制作によく使われるダメージスライダーを作成してみます。
完成図
準備(iTweenをインポート)
今回はiTweenというUnityAssetを使用しますので、予めimportしておきます。
itween - A simple, powerful and easy to use animation system for Unity. - Google Project Hosting
シーンを作成
まず下のようなシーンを作成します。 1.Canvas配下にSliderComponentを作成(GameObject→UI→Slider)。
2.Handlerは今回不要なので削除。
3.SliderのTargetGraphicにFillを設定します。FillのImageのColorもなんか好きな色に変更します。
4.あとは写真のようにボタンやテキスト、背景の白いイメージなどを配置して完了です。
5.最後にSliderCoponentのValueを変更してScene上のSliderに反映されることを確認してください。
スクリプトを作成
DamageSlider.csという名前でSliderに以下のスクリプトをアタッチします。 ポイントはiTweenのValueToメソッドを使ってTween発生中に繰り返しコールバックを呼んでいるところです。 これによって、ライフがだんだん減っていくように見えたり、数字が動きをもって減っていったりするのを実現しています。 細かい処理の説明はコメントを御覧ください。 gist.github.com
確認
では最後にうまく動くか確認してみましょう。ダメージのボタンにOnClickメソッドでdamageLife(引数は100にデモしてみてください)を設定して、クリックしてみましょう。
ダメージスライダーは結構既成のものもたくさんありますが、一度自分で実装しておくと、理解がすすんでいいのではないでしょうか!