GetComponentInChildrenがnullになる
なんでGetComponentInChildren
なので、AwakeやStartで取ろうとしてもnullになることがある。
参考 : unityAnswers > Possible to make GameObject.GetComponentInChildren() check inactive objects?
ただ、GetComponentsInChildren
使うタイミングで分けるのがよさそう。
なんでGetComponentInChildren
なので、AwakeやStartで取ろうとしてもnullになることがある。
参考 : unityAnswers > Possible to make GameObject.GetComponentInChildren() check inactive objects?
ただ、GetComponentsInChildren
使うタイミングで分けるのがよさそう。
Unityでローディングをする際のテスト。基本的にはWWWクラスで簡単に処理ができる。FlashでいうURLLoaderのような感じだけどもう少し簡易的に扱える。
今回は画像ならGUI.Boxで画像を表示し、音ならAudioSourceで音を鳴らし、それ以外であればGUI.TextFieldにてテキストを表示させるようにしてみた。
音についてはUnityはmp3を外から取ってきて鳴らすというのはサポートされていないそうで非圧縮音源かoggフォーマットのみ。
基本的な部分はすごく簡単で
/** * データのロード。 */ private IEnumerator LoadData(string url) { this.www = new WWW(url); yield return this.www; // ダウンロード後の処理 }
こんなメソッドを用意してあげて、あとは呼び出すだけ。
ローディング状況はWWW.progressで取れる。
エラーについてはWWW.errorがnullでなければエラーが発生している。
Flashと同様に別のドメインのファイルを見にいくときにはcrossdomain.xmlの設置が必要になってくる。
Continue…
UnityでJsonを扱うにはいくつかライブラリがあるようです。
生存日記 | UnityのJSONパーサ
この中でJSON ObjectとLitJSONを扱ってみました。
(2014.06.28 追記 : NGUIにもJsonを扱うNGUIJsonがあった)
JSONObjectのライセンスはLGPL2.1と書いてあるんですが、DLしたものには特に明記はなく、Asset Storeに並んでいるものも特に明記はしていないのでこちらが適応されると思っていいんでしょうか…
LitJSONの方はパブリックドメインなので問題なく自由に使えるようです。
Continue…
組み込みのクラスやライブラリのクラスを拡張したいときに使える拡張メソッドというのがある。
staticなクラスを作りそこにあるメソッドがまるで自身のクラスのメソッドのように扱える。
staticクラスのメソッドになるので、自身のプライベートなメソッドやプロパティにはアクセスができない。
例えば
A だと
###
#A#
###
のように自身の文字列を囲みの文字に変えるよう機能を拡張する場合は
static class StaticStringExtensions { /** * 「#」で文字を囲む。 */ public static string BorderSharp(this string s) { string border = ""; for (int i = 0; i < s.Length + 2; ++i) { border += "#"; } string blockStr = ""; blockStr = border + "\n"; blockStr += "#" + s + "#" + "\n"; blockStr += border + "\n"; return blockStr; } }
使い方は
static class StaticStringExtensions { using UnityEngine; // テストクラス public class StringTest : MonoBehaviour { public void Start() { Debug.Log("ABCDEFG".BorderSharp()); Debug.Log(StaticStringExtensions.BorderSharp("HIJKLMN")); Debug.Log("OPQRSTU".BorderLine()); } }
自身の作ったクラスなんかであればpartialというキーワードを付けたクラスを作るとそのクラスを拡張できる。Objective-Cでいうところのカテゴリの様な感じでしょか?
NGUIについてまだ使ったことのないコンポーネントがたくさんあるので今回はUIScrollViewあたりを触ってみました。
この辺は非常に良くできていてスクリプトを書かずに実装までできてしまう。
分かりやすいムービはこちら。
keijiroさんのやられているPerlinノイズを使ったカメラの揺れのテストをしてみました。
keijiroさんの書かれているものもあったのですがサンプルがNot Foundになっていますね。
Continue…
インスペクタに独自のプロパティ属性を作れる機能を試してみた。
スクリプト単位で拡張するCustomEditorと、プロパティ単位で拡張するPropertyDrawerがあるらしい。
今回は下記のサイトのPropertyDrawerでやるやり方をやってみた。とくにアレンジはなくそのままです。。
Qiita | 自分だけのPropertyDrawerを作ろう!
もう少し詳しい内容はこちらのスライドにあります。