テラシュールブログ

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

iOS

【Unity】iOS/Androidでアプリを休止してもダウンロードを続ける BackgroundDownload

今回はタイトルの通り「アプリを終了(もしくはサスペンド)してもダウンロードを継続する」機能を提供するアセットの機能と使い方についてです。 このアプローチを導入すると、アプリ開始時の「追加コンテンツダウンロード待ち」でアプリを起動しっぱなしで…

【Unity】AR Foundation(ARKitとARCoreのマルチプラットフォームAR環境)の超入門

今回はARCoreとAR Kitの両方に対応したマルチプラットフォームAR環境である「AR Foundation」、その最初の一歩として「とりあえず動くもの」の作り方を紹介します。 AR Foundationとは? 使い方 ARのセットアップ 平面の検出をグラフィカルにする オブジェク…

【Unity】iOSでもETC2が使えるようになった。

Unity 2017.3からiOSでもETC2が使えるようになりました。 ETC2 端末的対応表 iOSのETCは多分おまけ 関連 ETC2 ETC2はOpenGLES3で制式採用されている画像圧縮フォーマットです。OpenGLES 3が使用出来る端末…要するに概ねのAndroidで同様に使用できる圧縮フォ…

【Unity】WebGLとWebAssembly

WebAssembly 先日Google ChromeとFirefoxがWebAssemblyに対応しました。 この素晴らしいニュースではFirefoxが対応したのは当然として、世界で圧倒的にユーザー数の多いGoogle Chromeも対応したという事です。 dev.classmethod.jp Android環境でも「多分動か…

【Unity】ゲームに最初から含めるアセット群を圧縮するオプション

Unity 5.6から、ビルドしたゲームに含めるアセット群を圧縮するオプションが追加されました。 この圧縮をONにすることで「アプリ起動時間の短縮」や「インストール後にサイズが膨れ上がるのを防ぐ(iOS/Standalone)」効果が期待出来ます。 ビルドしたゲーム…

【Unity】Video Playerでアルファチャンネル付きムービーを使う

アルファチャンネル付きムービー、アルファムービー、透過ムービー、with alpha、αムービー、Aビデオ、呼び方は色々ありますが、背景が透明なムービーについてです。 アルファチャンネル付きムービー 使用出来るコーデック Webmを再生出来ない端末では アル…

【Unity】iOSでASTCフォーマットのテクスチャ圧縮を使う

今回はPVRTCと比較して割と綺麗で消費メモリも少ないASTCフォーマットのテクスチャ圧縮を使用する方法についてです。 ASTCについて ASTC を使用する ASTCとPVRTCとTrueColorを比較してみる 使えるのはA8以降のCPU 関連 ASTCについて wlog.flatlib.jp ブロッ…

【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】モバイル向けのライトマップTipsと、ライトマップを動的に更新するHack

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

Unity 4.6 iOS 64-bit (beta)が公開

追記 Unity 4.6.2でiOS IL2CPPによる64bit対応が正式に組み込まれました。 Unity 4.6 iOS 64-bit対応版(beta)が公開になったみたいです。 まだβなので色々と不具合がありそうですが、とりあえずil2cppでビルドし64bit対応が出来る感じです。 ちなみに今回の…

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 iOSでローディング中にアニメーションを再生する

今日はローディング中のアニメーションについて。 Unity Pro版であれば非同期なシーンのロードが行えるので話は簡単なのですが、UnityのFree版はシーンの非同期ローディングが出来ないのでどうしても画面が固まります。 しかし、実はこのシーンのロード中全…

UnityのC#からネイティブプラグインを経由せずObjective-Cのコードを呼び出す

先日、ネイティブプラグインを使用せずにObjective-Cのコードを呼び出す方法を教えてもらった。これを使用すると、AndroidObjectのようにObjective-Cのコードが取得できる。 やり方 まず以下のコードを用意する。 UnityのC#からNativePluginsを使わずObjecti…

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

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

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

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

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

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

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

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

アルファ入りPVRTCへのアプローチ

PVRTCを綺麗にするアプローチを紹介してもらったので、試してみた。アルファ入りPVRTCへのアプローチ圧縮画像とTrue Colorを直接比較すると厳しいが、かなり綺麗になる。 DEFAULT(Unity標準そのまま) BLEED PMA PVRTool TRUE COLOR 他のアプローチ tsubaki…

ld: Unable to insert branch island. No insertion point available. for architecture armv7

UnityでiOSビルドを行う際、稀に以下のようなエラーが出ることがある。ld: Unable to insert branch island. No insertion point available. for architecture armv7これはリファレンス(トラブルシューティング / Trouble Shooting)を確認する限り 一つの…

NativePluginsにC#デリゲートを登録する

NativePluginsからUnityへメッセージを送る際、コールバックやSendMessageを使うのだが、実はもう一つだけ方法がある。この方法はC#のデリゲートをコールバックとしてネイティブに登録し、それを直接呼び出してもらう方法だ。 これを実現するには、MonoPInvo…

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

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

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

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

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

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

4.3.4(ios)のWWWでメモリリークが発生する問題と対策

Unityの4.3.4のiOSのWWWクラスでメモリリークが発生しているらしい。(もしかしたら4.3.3も)その為、Unity 4.3.4のiOSビルドではWWWを使う度にメモリが増加する不具合が発生している。 これの対処法としては、Xcodeが出力する WWWConnection.mm のUnityDest…

Unityが出力するXcodeプロジェクトを修正する

UnityはiOS向けに出力する際、xcodeプロジェクトとして出力します。このプロセスは正しくは以下の3つのプロセスに分割することが出来ます。UnityのiOS向けテンプレートプロジェクトを配置ソースコードを解析し幾つかのファイルを更新ユーザーが作成したファ…

iOSの実機でスクリプトでバッグする方法

今回は iOS実機 でスクリプトデバッグを実機で行う方法について書いておきます。Androidのデバッグ方法については、こちらをどうぞ。 tsubakit1.hateblo.jpさて、iOSのデバッグ方法は非常に面倒ですが、このような手順で行います。1.Unityからアプリをビル…

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

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