iOSで60FPS出す方法
Is it possible to get above 30 FPS on an iOS device? – Unity Answers
Androidだとデフォルトで60FPSが出ているんですが、iOSで試すとFPSが30しかでません。
これだと、アニメーションの速度などに差異が出てしまうので、同じにしたいもんです。
Application.targetFrameRate = 60;
これだけでOK!
UnityアプリをiOSで書きだしてビルドするとdSYMのところですんごい時間かかる
XCodeのプロジェクト設定ページからBuild Settingsタブを選択 dSYMでBuild Options項目を検索 DWARF with dSYM fileからDWARFに変更
これで解決!
1分以上かかっていたビルドが数秒になります。
ただ、XCode上から設定するので、これ以降はUnityはappendでビルドしないといけないかもです。
prime31のEtceteraTwoの在処が分からない
LocalNotificationのスケジューリングをしようとすると、EtceteraプラグインだけではダメでTwoのほうが必要になります。
AndroidのほうはなぜかEtceteraだけでいけるんですが、iOSは2個必要みたい。
このtwoプラグインはAssetStoreにありません。
なので、以下のURLから購入することができます。
prime[31] – the best Unity native code plugins
ただ、LocalNotificationをただ通知したいだけなら、iOS・Android含めたコードは、
#if UNITY_IPHONE LocalNotification l = new LocalNotification(); l.applicationIconBadgeNumber = 1; l.fireDate = System.DateTime.Now.AddSeconds(10); l.alertBody = "hello world"; NotificationServices.ScheduleLocalNotification(l); #elif UNITY_ANDROID EtceteraAndroid.scheduleNotification( 10, "Notiifcation Title", "The subtitle of the notification", "Ticker text gets ticked", "my-other-special-data" ); #endif
こんな感じでもいいかなーと思います。
LocalNotificationのためだけにtwoで$65払うのもちょっとね。
PlayerPrefs
ちょいと値を保存したいとき用に使える。
Unity – Scripting API: PlayerPrefs
複数のシーンをマージしてロードする
テラシュールウェア [Unity3D]ロードの待ち時間を短くする(その4/Application.LoadLevelAdditive)
このあたりを読むとApplication.LoadLevelAdditiveはかなりオーバーヘッドがあるようで、あまりシーンの分割をしすぎるのは危険のよう。
開発する人数が多いとシーンの分割はしたくなるが、ある程度最小限のほうがよさそう。
今回はUnity3D – Unity3Dで、体感ロード時間を減らす – Qiitaを参考にApplication.LoadLevelAdditiveAsyncを採用してみた。
ただし、非同期で読み込むので、読み込みが完了したかが分からなかったので、以下のようにあるオブジェクトがFindできたらLoadしたとみなす処理を書いた。
Application.LoadLevelAdditiveAsync ("Game");
StartCoroutine (ObjectChecker (0.1f, () => { Debug.Log ("OnLoad---------------------------------"); })); IEnumerator ObjectChecker (float secs, Action callback) { while (GameObject.Find(ConstantsUI.GAME_CAMERA) == null) { yield return new WaitForSeconds (secs); } callback (); }
このあたりもっと良い方法がないかなー
NGUIについて
2Dのゲームアプリを作るため、NGUIを使ってみました。
はじめの数日はハマることが多いですが、手に馴染んでくるとこれなしでは2Dアプリは作れないという印象。
NGUIのレンダリングコントロール
少しやっかいだったのが、レンダリングの順番をどうコントロールするか。
UIPanelのRenderQでStartAtにしてここでコントロールした。
NGUIはどうもRenderQueueが3000番から始まるようで、ここを知っていればレンダリングのコントロールは用意です。
NGUIのコントロールとUnityの3Dコントロール、たとえばパーティクルとかを一緒に使う場合は、以下のようなコードをパーティクルにつけて、3001とかになるようにすればパーティクルが手前にレンダリングされます。
■参考リンク
Webデザイナーが覚えるUnity その2 NGUIの基礎知識 | GREE Creators Blog
【Unity】NGUIを使ってボタンを実装する。 | albatrus.com
ゲームは初心者にやさしく: NGUI 描画順について
NGUIではないオブジェクトをNGUIの手前に描画する方法 – 太郎Work
ウダサンコウボウ: [Unity]NGUIのDepth設定
ウダサンコウボウ: [Unity]NGUIのDepth設定その2(複数Atlas)
NGUIのアニメーションをプログラムから指定する
TweenPosition tp = TweenPosition.Begin (gameObject, 0.5f, new Vector3 (0, 0, 0)); tp.tweenGroup = 0; tp.from = new Vector3 (transform.localPosition.x, transform.localPosition.y, transform.localPosition.z); tp.method = UITweener.Method.EaseInOut; tp.style = UITweener.Style.Once; tp.AddOnFinished (new EventDelegate (OnShowOverlayEnd)); tp.Play (true);
■参考リンク
開発メモ 「NGUIのまとめ(スクリプトから動的動作)」 – シヴァのブログ
NGUI TweenPostion.. – Unity Answers
NGUI: Next-Gen UI kit: TweenPosition Class Reference
【Unity】NGUIのTweenを利用してみる | albatrus.com
NGUIのイベントたち
void OnHover (bool isOver) – マウスポインタが重なったときに呼ばれます。タップは×。 void OnPress (bool isDown) – マウスによりクリック(押下時と離脱時の2回)が発生したときによばれます。タップも○。 void OnClick() — 上と同じですが、離脱時の1回だけ呼ばれるパターン。 void OnDoubleClick () — ダブルクリックされたとき。 void OnSelect (bool selected) –選択メニューで便利?OnClickと同じだけど、こっちは他のものが選択されるまでは2度目の選択時には呼ばれません。 void OnDrag (Vector2 delta) – OnPress(true) と OnPress(false)の間に起きた移動を取得。タップ○。 void OnDrop (GameObject drag) – ドロップ時(OnPress(false)のタイミング)にドロップされた(下にある)オブジェクト側で呼ばれる。引数には、ドロップした(上にある)オブジェクトが渡される。 void OnTooltip (bool show) – Sent after the mouse hovers over a collider without moving for longer thantooltipDelay, and when the tooltip should be hidden. Not sent on touch-based devices. void OnScroll (float delta) マウスのホイールが動いた時によばれる void OnKey (KeyCode key) キーボードが押されたときによばれる
こちらのサイトにはほんと助けられました。
どうゆうイベントがいつ呼ばれるのかまったく分かりませんでした。
動画をネイティブのプレイヤーでフルスクリーンで再生する
Handheld.PlayFullScreenMovie ("main_movie.mp4", Color.black, FullScreenMovieControlMode.Full);
たったのこれだけ、ただUnity上で実行するのではなくあくまでもネイティブのプレイヤーを表示するので、
使いどころとしては、何かチュートリアル的な動画などを再生するときかなー
Unity – Scripting API: Handheld.PlayFullScreenMovie
Handheld.PlayFullScreenMovie on Android | Unity Community
ソフトバンククリエイティブ
売り上げランキング: 1,332