読者です 読者をやめる 読者になる 読者になる

テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

【Unity】uGUIのImageとSprite Rendererの使い分け

今回はuGUIのImageとSprite Rendererの使い分けについてメモします。 ImageとSprite Renderer Sprite Rendererの振る舞い uGUI Imageの振る舞い 最適化に関するアプローチの違い SetPassの削減に関する振る舞いの比較 フィルレート・オーバードロー削減に関…

【Unity】UnityでARToolKitを使ってみたら、意外と簡単だった

今回はARToolKitを試してみたので、そのあたりメモします。 AR界のARToolKit 実際に使ってみる パッケージの入手 インポート マーカーを作る Unity上でARマーカー表示を行う Tips 感想 AR界のARToolKit ARToolKitは、マーカーを追跡するAR(Augmented Realit…

【Unity】Android SDKやJDKを設定する項目が見つからない時の対処法

Android SDKやJDK設定項目が見つからない 原因はAndroid Supportが含まれていない事 Download AssistantでAndroid Supportを追加する 関連 Android SDKやJDK設定項目が見つからない Unity 5.3より、Android SDKやJDK(およびNDK)といったAndroidのビルドに…

【Unity】Unity 5.3以降でAndroidのStatus Barを表示する方法

「Unity 5.3で個人的に気になった機能まとめ 」に書いた通り、Unity 5.3にて何故かAndroidでStatus Barを表示するオプション…例えばstatus bar hiddenが一切使用出来なくなり、ステータスバーを表示する事が出来なくなりました。 ステータスバーを表示するの…

【Unity】Wifi経由でAndroidアプリをインストール&実行する【Gear VR】

Unityのアプリケーションを転送するには「USB接続」が必要な訳ですが、Unityのアプリ転送は内部的にはADBを使用しているらしく、この接続をwifi経由で行えばUSB接続せずアプリをデバイスへ転送出来たりします。 このアプローチを使用することで、GearVR開発…

【Unity】モバイル向けのライトマップTipsと、ライトマップを動的に更新するHack

Unity 5はリアルタイムな光源を基本としている節がありますが、モバイル上では依然としてパフォーマンスを稼ぐためライトマップをベイクする方が良いです。 今回はそのライトマップの色々なアプローチについて紹介します。 ライトを焼く ライトマップを焼く…

UnityのTessellationを使って色々してみる

テッセレーションは、ポリゴンをより細かく分割する方法…だそうです。この機能を利用することで、4頂点の板ポリに凹凸を追加したり、ローポリで作成したメッシュを少しスムーズに設定することができます。 Tessellationを使用して板ポリに凹凸を表現してみま…

Unity 5✕Androidで低レイテンシ(発音遅延しない)な音を再生するアセットを作ってみた

Unity5向けオーディオの機能を確認しているときに、Androidデバイスの音のなり始めが遅いのが気になったので、実装を模索してみました。 Androidでのレイテンシ問題は結構根深く、デバイスの統一されたiOSと違いかなり難しいところがあります。幾つかのAndro…

Unity 4.6で出力したAndroidアプリのサイズが以前のバージョンより大きい場合の対処法

Unity 4.6でAndroidアプリを出力するとファイルサイズが大きい事があります。 具体的には空のUnityプロジェクトをAndrod向けに出力するとapkのサイズが大体7.6MBになるのですが、Unity 4.6で出力すると13.8MBと倍近いサイズを要求します。 これはUnity 4.6よ…

続・Androidのビルドに失敗する(Unable to find suitable jdk installation)

UnityでAndroidをビルドする際、またビルドに失敗する事案が発生しました。 この問題ですが、javaのバージョンを上げる必要があるみたいです。前回はappleの提供するjava for oxsを利用しましたが、どうもコレでは駄目になったらしく、olacleからjdkを入手し…

フォントに含まれない文字を使うときの動作

UnityはテキストのフォントとしてArialやその他ttfフォーマットのフォントを使用して文字を表現します。しかし、この手のフォントには全てのフォントは含まれていません。 そんなときの挙動として、Unityはフォールバックしてデバイスに含まれるフォント(所…

Unityのシェーダーを実行時モバイル向けに変更して描画パフォーマンスを稼ぐ

今回もSample Assetsについて。 新 Standard Assets候補、Sample Assets (beta) - テラシュールブログ 新 Standard Assets候補、Sample Assets (beta) - テラシュールブログ シェーダーを差し替えるAutoMobileShaderSwitch Sample Assetsにシェーダーを一括…

Unityのゲームにスマホ向けなバーチャルパッドを追加する

Unityで取り敢えずゲームを作る過程で「Input.GetButton」系を使用している場合でも、タッチパネルに対応する方法を紹介します。 今回もSample Assetsシリーズです。 新 Standard Assets候補、Sample Assets (beta) - テラシュールブログ 新 Standard Assets…

uGUI の 使い方(β) 〜Canvas周り〜

※この記事の内容は古い(ベータ版のみ有効)です。 新しい方法 uGUIのアスペクト比を固定する(修正版) - テラシュールブログ uGUIのアスペクト比を固定する(修正版) - テラシュールブログ uGUIの使い方について紹介します。*1 今回はキャンバス周りにつ…

Unityの複数解像度の表示結果を一覧で確認する…の使えない方

今日は全く何の役にも立たないTipsを紹介します。 ゲームを開発していると、複数の解像度を使用したくなるケースがあります。例えば、縦画面と横画面を同時に開発している際、どのように動くか等です。 実はこんな事ができたのです。 やっている事は単純で、…

UnityのAndroidビルド時にkeystoreのパスワードを毎回要求しないようにする

訂正!Android用の証明書を作る その1の通り、AndroidのアプリケーションをGooglePlayへパブリッシュするためにはKeystoreで証明書を作る必要があります。 Unityでも例外ではなく、Unityでアプリを出力し提出する際には必ず証明書を作る工程が発生します。 …

高画質なスクリーンショットを撮影する

端末のスクリーンショットを撮影する際、高画質なスクリーンショットを撮影したい場合もある。そんな時はApplication.CaptureScreenshotの第二引数(superSize)に倍率を指定する。下のコードはスクリーンショットを倍にしたケース。Application.CaptureScre…

端末を回転させた際の画面の向きを固定する

Unity は ProjectSettings の Resolution and presentationw の Default Orientation を Auto Rotation に設定することで、端末を傾けた際に傾けた方向へ向くように設定出来る。この際、横(Landscape)にチェックを外すと、上下に回転するようになる(Unity …

Unity 4.3 androidでWebViewを使用した際のキーボード不具合対策

Unity 4.3より以降greeのWebViewアセットをAndroidで使用した場合、キーボードが正常に動作しない不具合等が確認されている。この不具合はAndroid 4.4で修正されているのだが、4.3以前のAndroidデバイスを使用したい場合、幾つか対策が必要となる。対応方法…

解像度を下げてパフォーマンスを得る

最近モバイルの解像度がおかしい。大して画面は大きくなっていないのに、画面解像度が1920×1080とか2048×1536とか意味がわからない。せっかくGPUの性能は上がっているのに、このクソ高い解像度のせいでイメージエフェクトのような画面全体にエフェクトをかけ…

世界のデバイス使用状況を知る

少なくともUnityでプレイするゲーム内での範囲だが、ゲームをプレイするプレイヤーのデバイス傾向は、こちらのリンクから確認出来る。Mobile (Android) Hardware Statisticsまた、その中身を確認していくと実際に使われているデバイスの傾向が推測出来る。例…

Everyplayを試したら数分でプレイ動画撮影機能が追加できてビックリ

せっかくなのでeveryplayを使ってみた。everyplayは動画プレイを撮影・共有するサービスだ。撮影した動画は、こんな感じでTwitterやFacebookに埋め込んで共有できる。flappy chicken gameplay! https://t.co/EfsyLEprzC everyplay凄いな。こんな簡単に動画共…

フレームレートを落として電池消費を抑える

FPSを下げるとUpdateが呼ばれる頻度や描画回数が減り、結果的にパフォーマンスが安定したり電池消費を超抑えたりすることが出来ます。電池消費を抑える事は、AndroidやiOSといったモバイル端末には重要です。 Unityのフレームレートを落とすには、Startとか…

Androidの実機ログを調査しやすくするTips

UnityのAndroidアプリを開発している際、唐突にアプリが落ちる事があります。 この場合、実機ログを確認するのが最も有効です。実機のログを確認するには、LogCatを使用します。 LogcatにはDebug.LogやLog.iで出力したログが出力されるので、 これを使用して…

Android実機でスクリプトデバッグする方法

今回はAndroidのスクリプトデバッガの使い方について。デバッガ / Debuggerデバッガを使うと、「どのような順番で処理が進んでいるか」とか、「この処理中の他のパラメータ(変数)は何なのか」等を確認することが出来る。特に細かい部分の処理を確認するの…

ネイティブで作成したテクスチャを使用する

遅くなったが、[Unity]Unityでテクスチャを読む7つの方法の続き。4.5.6(PNGやJPEGを読む方法)についてはこちら。で、今回はネイティブ(OpenGL ESやDirectX11)で作成したテクスチャを取得する方法。結論を言ってしまうと、Texture2D.CreateExternalTextur…

Android Studioにはjar生成機能が無いだって!?こんなの普通じゃ考えられない

いや、Android Studioは良いIDEだと思うのです。事の始まりは、EclipseをAndroidのv22に対応してなかったせいでUnityのエクスポートしたAndroid Projectが読めなかった事。(インポートしようとしてもFinish押しても反応せず、プロジェクト作成も出来ない。v…

4.3.xでUnityPlayerActivityを使用する

Unity 4.3でサポートをUnityPlayerNativeActivity一本に絞ったが、何らかの不具合がある場合にActivityを使用したくなる事がある。例えば、WebView使用した際に入力にバックスペース(文字の削除)が効かなくなる等。さてこうなるとUnityPlayerActivityが使…

Unity4.3上で作ったWebViewの操作ができなくなる問題

Unity 4.3になってWebViewが動かなくなる問題が発生している。これは単純にUnity4.3からUnityPlayerActivityの生成を廃止し、UnityNativePlayerActivityに絞った事による弊害だと思う。で、対策はと言えば単純。マニフェストに以下の文を足す。 <meta-data android:name="unityplayer.ForwardNativeEventsToDalvik" android:value="true" />入れ方はこん</meta-data>…

ビルド後のiPhone/Androidゲームにステージを追加する簡単な方法

意外と知られていないTips。実はBuildStreamedSceneAssetBundleを使えば、AssetBundleをシーン単位で構築することが出来る。これで構築したAssetBundleを読み込んだ後は、LoadLevelやLoadLevelAditiveでダウンロードしてきたシーンを読み込める。BuildPipeli…

AssetBundle と TextureCompression のおはなし

基本的な、でも大事な話。 AssetBundle と TextureCompression のおはなし from Tetsuya Mori そういえばNGUIのAtlasって参照があるから、Assetbundleから差し替えようと思えば差替えられるのか。(テクスチャを直接差替えてた) 関係資料 [Unity]iOS/Androi…

プラットフォーム切替時にbundleIdentifierを変更する

プラットフォームが切り替わった際にbundleIdentifierを差し替えるサンプル。やってる事は簡単で、[InitializeOnLoad]で自動的にインスタンス化する現在のプラットフォームを確認してbundleIdentifierを変える処理を定義EditorUserBuildSettings.activeBuild…

圧縮画像でメモリを節約&ローディング高速化しつつも画像を綺麗に表示する

powerVRで動いているiOSでは、rawな画像の他にもpvrtcを使用することが出来る。圧縮画像を使用することで、「消費電力の削減」「ローディングの高速化」「メモリ帯域(GPUへの転送)の大幅な節約」「メモリの大幅な節約」が見込める(具体的にはPVRTCはRGBA3…

ゲームをビルドした後でもスクリプト(機能)を追加する

既にビルドし出力したゲームに追加でスクリプトを与えて実行する。上手く使えば、基本システムを出力した後、外部システムを丸ごと追加する事も可能かもしれない。ただし、当然のように最適化はかからないし、さらにJIT実行出来ない環境(具体的にはiOS)で…

iPhone/Androidでネイティブプラグインを作るコツ…みたいなもの

ネイティブプラグインを作るのに四苦八苦したので、ポイントをまとめてメモしておこうと思う。ネイティブプラグインの作成について http://www.slideshare.net/tatsuhikoyamamura/unity-15594873 #A131: モバイル向けNative Pluginの開発作法 http://vimeopr…

Unity 4.1.3でデバッガを使うとクラッシュする問題

iOS/Androidの無料化に次いで出てきたUnity 4.1.3だが、少々問題が発生している。というのも、MonodevelopのデバッガでUnityを停止させ、変数の中身を確認するとUnityエディタがクラッシュするらしい。4.1.3 crash when hitting monodevelop breakpoint on O…