iTweenでの微妙にはまったこと
iTweenはUnityでゲームを作る上で非常に便利なものですが、簡単に動くあまり初歩的なミスをしてハマったのでメモ
今までインスタンスで出したオブジェクトをdestroyで消していたのですが、負担が大きいということでオブジェクトプールという手法を使って見ました。
オブジェクトプールという手法では、負担の大きいオブジェクトを出現させるインスタンスを開始時に使用し、画面外に置いとき。必要になった際には指定の場所に移動させるというものです(不要になったら画面外に)
オブジェクトを出現した際にiTweenで大きさを拡大していました。
今まではdestroyで破棄していた時はよいのですが、オブジェクトを破棄せず再利用するオブジェクトプールでは問題です。
呼び出す度に大きくなるし、いくつもiTweenコンポーネントが追加されているせいか表示されなくなることも
コンポーネントを削除する関数でiTweenを指定したもののでうまくいかず、悩んだのですが・・・
ありましたiTween公式で説明されている機能一覧の中にw
iTween.Stop() で全iTween停止
iTween.Stop(gameObject) で指定したゲームオブジェクト内にあるiTweenを停止
簡単ですしたね、困ったときは公式にいきましょうw
これで問題も解決しました。
Unity(ユニティ)のゲージなどを画面の一部に固定する方法
HPなどのゲージを画面に固定する方法が最初わからなくて結構悩んだりしたんですが、よく考えたら簡単だったのでメモっときます。
まず、ゲージ
http://kdey.cocolog-nifty.com/blog/2011/08/hp-0648.html
このを参考にしました。(丸投げ)
shaderを Unilit/Transparent Cutout でも似たような動きしてくれてます。
固定方法ですが、初心者なんであんまり洗礼されたものではありませんが、動くんでいいんです。
まずGameObjectからCreate Emptyを選択してGameObjectを作ります。(kameraという名にするとします)
ちなみにInspectorに位置情報がでてますがいじらなくていいです。
これが親になります。
kameraの下にカメラもゲージもこのドラックドロップで移動させて
カメラの移動させるときはGameObjectのkameraを移動させることでカメラを動かしてもついてきます。
↓設定するとこんな感じになります(右下のAlpha cutoff のつまみを移動させるとゲージが減ったり増えたりするのがわかります)
この方法の問題点はディスプレイの大きさに寄よって見切れてしまったりすることです。
これは画面サイズを取得してlocalpositonなどで調整するのが良いんじゃないでしょうか?
画面サイズの変更のやり方参考元
http://hideapp.cocolog-nifty.com/blog/2012/06/unity-1a83.html
Unityメモ 孫要素の指定の仕方と親子プレハブを生成した場合の要素名指定の仕方
Unityでゲーム作ってまして詰まった・悩んだ部分を書いとこうかと思います。(自分が初心者なので初心者向け)
今のところアクションですが、いずれTCG的なものも作りたいです。
さて本題
Unityでオブジェクトの子要素を取得するやり方はわりと書いていますが、孫要素には
かいてなかったのでメモしときます。
GameObject ob = gameObject.transform.FindChild("obj_child/obj_descendent").gameObject
簡単ですね。スラッシュで区切ればいいだけです。(この例の場合自身を参照しています)
で、なぜここで詰まったかというと
グループ化したオブジェクトをInstantiateで生成していたので(プレハブ化して)
FindChild("obj_child/obj_descendent") //生成した親子プレハブを指定する場合間違い
が
FindChild("obj_child(Clone)/obj_descendent") //こっちが正解
になっるべきだったのです。
親子要素をプレハブ化した場合は親の部分だけ(Clone)がつくみたいなのです。
途中で「あ生成したら(Clone)付くっけ」と気づいて
FindChild("obj_child(Clone)/obj_descendent(Clone)")
したので詰まったのでした。(つまり上記は間違い)
凡ミスですが、結構悩んだのでメモっときます。