スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Unity 3.5.1を使ってみた

いいですねぇ、Unity3.5.1。
ビルドしてiPhone上で動かしてもスプラッシュスクリーンエラーも出ずにアプリがちゃんと起動します。

ただ、Unity3.5.1にアップデートした直後のビルドではXCode側でエラーが発生してiPhoneにアプリ
を送り込めませんでした。エラーの内容からすると、「ビルドしたアプリの場所が見つからない」と
いった感じでした。

私の場合はUnity側で新しい場所にビルド環境を作り直したところ、エラーも出ずにiPhoneに送り込める
ようになりました。
スポンサーサイト

ついにUnity 3.5.1が登場!

待ちに待った Unity 3.5.1がリリースされた模様です。

Unity Basic + XCode 4.3.1でiOS5.1アプリをビルドした際に発生する
スプラッシュスクリーン問題が改善された模様!
ほかにも色々とバグ修正が行われているようです。

早速ダウンロード中!

Unity 3.5 + XCode 3.4.2でのスプラッシュスクリン問題への対応方法

Lion + Unity3.5 + XCode 4.3.0 + XCode 4.3.2でiOS5.1アプリの端末テストが成功!
あっさりと動いたのでちょっと拍子抜け。。


今回の問題を整理すると
1. Snow LeopardではiOS5.1で動作するアプリは作れなかった。
 (ビルド時にエラーになる)

2. iOS5.1SDKを含むXCodeは4.3.1以降だが、Lion版しか提供されていない。

3.XCode4.3.1以降ではスプラッシュ画像(アプリ起動画面用)はRetina対応
 のものでなければならなくなってしまった。
 これに対してUnity Basic版ではスプラッシュ画像の差し替えが不可の制約
 があり、違反すると端末上で実行できなくなってしまう。


解決方法をまとめると
1. iOS 5.1 SDKを含むXCode(4.3.1 / 4.3.2)を起動し、iOS 5.1 SDKをインストールする。
 (XCode起動時にインストールを促される)
 私の場合は4.3.2をインストールしました。

2. XCode 4.3.0のディスクイメージをiOS Dev Centerから入手。

3. アプリケーションフォルダにXCode 4.3.0をインストール。
 この時、先にインストールした4.3.2を上書きしないように、適当なフォルダ(XCode_430とか)
 を作ってそこにインストール。

4. Unityでビルドしたらば、XCode 4.3.0のほうでプロジェクトファイルを開いてビルドし
 端末にインストール。
 その際ですが、XCode4.3.0起動して初めて端末を接続した際には、何やら(たぶん認証情報とか)
 を端末にコピーする処理が走るので、それが完了してからビルドして実行すればOKです。


なんとか実機で動作確認できるようになったので一安心です。
上記の方法でiOS 5.0.1とiOS 5.1の端末用アプリをテストしましたがうまく動いているようでした。
もうしばらくいろいろ動かして検証してみたいと思っています。

ちなみに、今回参考にしたのは以下のUnityフォーラムのスレッドです。

1. スレッド その1
2. スレッド その2

やれやれ。

Unityでのメモリ管理について

Unityのメモリ管理でハマってしまったのでメモしておきます。

Application.LoadLevel()でレベルを切り替えながら動作させていくと、
どんどんとメモリが圧迫され、最後にはゲームが強制終了してしまうケースについてです。

Unityのバージョン3以降からレベルがロードされた際、そのレベルで参照されている
テクスチャなどがすべてロードされるようになったことも少なからず影響しているようですが。。

ただ、別のレベルをロードした際、前のレベルで参照していたテクスチャが使用したメモリ
くらい解放してくれてもいいのに。。。と思ってしまいます。
コンソールには何やら解放したよとメッセージが出てますからね。笑

さて、上記のようなメモリの問題が発生した場合には、LoadLevel()を行う前に
以下のことを行うとメモリが減ってくれるようです。

(1) Resources.Load()で読み込んで変数に保持しているものについてはnull(javascriptだと)を設定する。
(2) インスペクタで変数に割り当てている場合にも、その変数にnull(javascriptだと)を設定する。
(3) Resources.UnloadUnusedAssets()を呼び出す。

Resource.UnloadUnusedAssets()はどこかで参照されているようなものについては
解放してくれないようなので、「おかしいな。。メモリが減らないなぁ」と思ったら、
どこかで参照したままになっている箇所がないか確認すると道が開けるかも。笑

いやはや

Unityで広告付きのアプリを作成する

Over the sky LITE版では、2種類の広告(iAd, AdMob)を表示するようになっています。
最初はiAdのみでいくつもりだったんですけど、iAdって広告を要求しても広告が表示されないケースが
かなりあるようで、急遽AdMobにも対応しました。

UnityでiAdとAdMobに対応するのはとても簡単です。
有料になりますがプラグインがあります。
今回私が利用したのは、Prime31のiAd plugin($20)とAdMob plugin($40)です。
Over the sky LITEでもとがとれるかどうかはまぁ。。置いておきましょうかね。

上記のリンク(Prime31と書かれている部分)を開くと、「Ad Banners andOffer Walls」というカテゴリ
の中にあります。

ドキュメントも ここ にあります。英語ですけどね。。

使いかたはかなりシンプルです。
iAd pluginのほうは、パッケージをインポートして、それに含まれるPrefabをシーンに配置するか、
AdBinding.createAdBanner()やAdBinding.destroyAdBanner()というメソッドをスクリプト中で
任意に呼び出してバナーの表示/非表示を切り替えるだけです。

AdMob pluginのほうも、パッケージをインポートして同様にPrefabを配置するか
AdMobBinding.createBanner()やAdMobBinding. destroyBanner()というメソッドをスクリプト中
で呼び出してバナーの表示/非表示を切り替えます。

今回、私の場合、「iAdの広告が取得できなかったらAdMobの広告を表示」という感じ
にしたかったので、以下のスクリプト(C#)をEmptyオブジェクトのコンポーネントに追加し、
そのEmptyをシーン中に配置しました。

下記のスクリプトでは、Start時にAdManager.adViewDidChangeに下記スクリプト内の
メソッドadViewDidChangeを関連づけています。これにより、iAdの表示更新が発生すると
AdManagerは下記スクリプトのadViewDidChangeを呼び出してくれるようになります。

で、adViewDidChangeでは、引数(iAdが取得できたらtrue, 取得できなかったらfalse)をチェック
して取得できていなかったらAdMobを表示する処理を行っています。




いやはや。
カレンダー
10 | 2017/11 | 12
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 - -
検索フォーム
RSSリンクの表示
リンク
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。