Hatena::ブログ(Diary)

Over&Out その後 このページをアンテナに追加 RSSフィード Twitter

2011-07-11

UnityプロジェクトのLibraryは削除してもよい?

Library配下には何やら意味不明ファイルが沢山生成されて、バージョン管理システムにコミットする必要はないのかな?と調べてみたら、どうやら必要そうでした。


http://www.cis.sojo-u.ac.jp/~izumi/Unity_Documentation_jp/Documentation/Manual/Behind%20the%20Scenes.html

Unityは自動的にアセットをインポートしすべての種類のメタデータを管理します。どのように動作しているのでしょう?


テクスチャのようなアセットをAssetフォルダに配置すると、Unityは新しいファイルで何か解らないものが追加されたことを検出します。新しい一意なIDがアセットに与えられ、Unityはインポートを開始します。Unityは全てのインポートされたアセットを処理します。テクスチャをProject Viewで見たときには、既に処理が完了したアセットを見ているわけです。


この方法で多くのメタデータをインポートされたアセットにアタッチすることが出来ます。例えば、テクスチャインポー ト設定でテクスチャがミップマップを使うことを指定できます。Photoshopはもちろんミップマップをサポートしませんのでメタデータが必要です。そ れぞれのアセットに関する全てのメタデータはLibraryフォルダに格納されます。ユーザはLibraryフォルダを主導で変更してはいけません。


Unity内のプロジェクトビューでアセットを移動したり管理したりすることが出来ます。Unityは自動的に全てのファイルの移動を追跡し他のアセットを参照します。ファイルは必ずUnity 内で移動しなければなりません。プロジェクトビューでドラッグアンドドロップを用いれば簡単に行なえます。しかし、オブジェクトをエクスプローラ (Windows)やファインダ(OS X)で移動すると、Unityは移動を検知しません。その場合、新しいアセットが作成されたように処理され、元のアセットは削除されたものとして扱われま す。そのため、アセットをOSのファイルマネージャで動かすとアセットへの参照は失われてしまいます。


Libraryフォルダはプロジェクトにとって非常に重要です。UnityはLibraryフォルダを自動的に管理します。そのため、絶対にLibraryフォルダのファイルを移動したり編集してはいけません。あなたのプロジェクトにとって生命線です。削除してしまったら、全てのアセットへの接続は失われてしまいます。


プロジェクトをバックアップする場合は、常にプロジェクトフォルダのレベルでバックアップしてください。AssetフォルダとLibraryフォルダが必ず含まれていなければなりません!



2011-07-10

位置情報サービス利用の際のバッテリー電力節約のためのヒント

位置情報対応プログラミングガイドみてたら、わかりやすくまとまってたので。

iPhone OSベースデバイスの無線によるデータの送受信は、デバイス上のその他の操作に比べ、より 多くの電力を必要とします。Core Locationはこれらの無線を利用してユーザの位置を特定するため、 アプリケーションでの位置情報サービスの利用については慎重を期す必要があります。ほとんどの アプリケーションでは、位置情報サービスを実行させたままにしておく必要はないため、サービス をオフにするだけで電力の節約になります。


使用しない間は位置情報サービスをオフにする

曲がり角ごとに指示を出す道案内アプリケーションを除き、ほとんどのアプリケーションでは、位置情報サービスを実行したままにしておく必要はありません。位置情報サービスは、位置情報を取得するのに必要な間だけオンにして、その後はオフにしてください。ユー ザが乗物で移動中でない限り、現在位置は問題になるほど頻繁には変化しません。また、必要であれば後からいつでも、位置情報サービスを再開できます。


可能な場合は、標準位置情報サービスではなく、大幅変更位置情報サービスを使用する

大幅変更位置情報サービスでは、電力を大幅に節約しながらサービスを動かしたままにしておけま す。これは、ユーザの位置変更を追跡する必要があるけれども、標準位置情報サービスで提供されるような高度な測地精度は必要としないアプリケーションに強く推奨されます。

なんとなく、大幅変更位置情報サービスってバックグラウンド用に思ってました。言われてみればフォアグラウンドでもこれでいいのか・・・


アプリケーションに支障をきたさない限り、測地精度にはより低い精度を使用する

必要以上に高い測地精度を要求すると、Core Locationは追加のハードウェアに電力を投入し、不要な精度に対して電力を浪費することになります。アプリケーションにおいてユーザの位置を数メートルの範囲で本当に認識する必要がある場合を除き、desiredAccuracyプロパティにkCLLocationAccuracyBestやkCLLocationAccuracyNearestTenMetersの値を設定しないでく ださい。また、kCLLocationAccuracyThreeKilometersの値を指定しても、位置情報サービスからより精度の高いデータが返されるのを避けることができません。Core Locationは、ほとんどの場合、Wi-FIまたは携帯電話の信号に基づいて100メートル程度以内の測地精度で位置データを返すことができます。

これは朗報!


一定期間を過ぎても測地精度が上がらない場合は位置情報イベントをオフにする

アプリケーションの受信しているイベントの測地精度が望んでいるレベルでない場合、受信しているイベントの測地精度を調べて、時間の経過とともに向上しているか、だいたい同じレベルを維持しているのかを確認します。精度が向上していなければ、望んでいる測地精度が単純にその時点では得られていないということが考えられます。位置情報サービスをいったんオフにしておき、 後で再度試すようにすれば、アプリケーションによる電力浪費を防ぐことができます。

なるほど。



2011-07-09

Unity の iOS サンプルプロジェクトを一通り試してみました

Unity の公式サイトにある


http://unity3d.com/support/resources/example-projects/iphone-examples.html:Unity iPhone Examples]


というページに、iPhoneのサンプルプロジェクトがあがっています。


これらを一通りダウンロード&ビルドしてみました。


加速度センサ、タップなどのセンサによる操作、スコア計算やタイムのカウントダウン、爆発エフェクトやカードがめくれる演出など一通りの要素がつまっているので、これらを参考にすれば、ちょっとしたゲームなら問題なく作れそうです。


Batching

f:id:shu223:20110711012911p:image:w240

FPS型の射的ゲーム


TunnelRunner

f:id:shu223:20110711013051p:image:w240

加速度センサで前から向かってくる長方形の位置をあわせるゲーム


iPhone-Match

f:id:shu223:20110711012954p:image:w240

神経衰弱


OcclusionCulling

f:id:shu223:20110711013150p:image:w240

タッチでグリグリ3D世界を見回せる(だけ?ビルドでミスった?)


Roll-a-Ball

f:id:shu223:20110711013223p:image:w240

玉転がしゲーム


StarTrooper

f:id:shu223:20110711013255p:image:w240

フライトシミュレータ的なもの。加速度センサで向きを操作、タップでミサイル発射。

(ゲームとしてのルールはよくわからなかった。。)



2011-07-05

MonoDevelopの文字化け対策最終手段

Unityに標準でついてくるMonoDevelop、使ってみた方はご存知の通り文字化けします。

で、こちらの対処法が一般的なようなのですが、

http://d.hatena.ne.jp/eco31/20101026/1288094681

gtkrc の修正


"/Library/Frameworks/Mono.framework/Versions/Current/etc/gtk-2.0/gtkrc" ファイルの最下行は元々、以下のようになっていました。


gtk-font-name = "Lucida Grande 12"

これを下記のように変更します。


gtk-font-name = "Hiragino Kaku Gothic Pro"

pango.aliases の新規作成

続いて "/Library/Frameworks/Mono.Framework/Version/Curent/etc/pango" ディレクトリに "pango.aliases" というテキストファイルを新規作成し、以下の内容を保存します。


"Lucida Grande" = "Hiragino Kaku Gothic Pro"

これをやってみるも文字化けは直らず。


最新版の2.4.2Betaをダウンロードしてきて入れてみましたが、それでも直らず。


結局、最終的に言語設定をEnglishにすることで解決しました。


手順

Preferences -> UserInterface Language -> Englishを選択


f:id:shu223:20110712015855p:image:w550


MonoDevelopを再起動すると設定が反映されます。



2011-07-02

Unity での Bundle Identifier の設定方法

とあるUnityサンプルプロジェクトをiOSビルドしてみたら、下記エラーが出ました。

Exception: Error building Player: Exception: iPhoneBundleIdentifier has not been set up.


で、そのBundle IdentifierのUnityでの指定方法です。


File -> Build Settingsでビルド設定画面を開きます。

iOSを選択すると、左下に"Player Settings"というボタンがあります。


f:id:shu223:20110711011441p:image:w550


押すと、InspectorタブにPlayer Settingsが表示されます。


f:id:shu223:20110711011522p:image:w331


この"Other Sttings"という欄を開くと、


f:id:shu223:20110711011555p:image:w327


Bundle Identifierという項目がるので、こちらを

com.Company.ProductName

から、

com.unity3d.{プロジェクト名}

に修正すると、無事ビルドできるようになりました。

(com.Company.ProductNameから変更しさえすれば、どんな名前でもいいのかも。)



2011-07-01

Facebook iOS SDK で "xmlParseEntityRef" エラーが出る場合の対処

ログインしようとすると、遷移先でこういう画面になった場合の対処。


f:id:shu223:20110828164205p:image:w320

https://github.com/facebook/facebook-ios-sdk/issues/297

Please check the following: In the previous version, you were using the "app key". In the update you have to use the "app id".

間違ってapp keyを使ってるんじゃないの、app idを使わないといけないよ、とのことで、確認してみたら、app idが間違ってました・・・



2009 | 08 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2012 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2013 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2014 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2015 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2016 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 11 | 12 |
2017 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2018 | 02 |