テラシュールブログ

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

最適化・デバッグ

Unity 2DのPolygonColliderの超点数を減らす

Unity 2DのPolygon Colliderを使うことでSpriteが使用するテクスチャの形状にそって当たり判定を設定する事ができます。 このPolygonCillderはソコソコ綺麗に当たり判定を設定してくれるのですが、少しやり過ぎる感があります。例えば上のGIFアニメで使って…

Unityのシーンカメラの距離に応じてGizmoをOFFにする

Gizmoはカメラの位置に関係なく描画されます。そのため、Gizmoの量や場合によっては非常に凄まじいことになります。 例えばHandleでラベルを表現している場合、フォントのサイズ一定で常に表示されるため、少しカメラを離すとゴチャゴチャとなります。 これ…

Unityのシーン内で特定のコードを持つコンポーネントを見つける機能を作った

最近ブログの更新に使っていた2〜4時間を全部、Unityのシーン内の構造を解析するアセットの作成に使用してるtsubakiさんです。 シーン内部の構造を解析するアセットですが、機能自体はだいたい完成しましたが、コードの整理にもう少し時間がかかりそうなので…

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

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

Unite 2014 シアトルのセッション動画が公開

Unite シアトルでのセッション動画が公開されました。 再生リスト 基本的に英語ですが、多くの情報が詰まっている素晴らしいセッションが多いです。

Resourcesから非同期でインスタンス化する

Unity 2018系はこちら tsubakit1.hateblo.jp --- Unity 4.5.3よりResources.LoadAsyncが追加されました。これは今までResources.Load時に停止させていた時間を停止させず、非同期でロードする命令です。 しかし、実際にコレを扱ってみて失望するかもしれませ…

Unity iOSでローディング中にアニメーションを再生する

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

iOSでパフォーマンスに悪影響を与えるボトルネックを確認

パフォーマンスの確認と言えばInstrumentsが上がりますが、最近のXcodeはもっとシンプルにパフォーマンスをプロファイル出来るみたいです。 Xcodeでゲームを実行した状態で、真ん中付近のタブを押すと、CPUの使用率やメモリ消費量、それにフレーム単位のGPU…

ScriptableObjectについて

ScriptableObjectとは何かと色々と悩んできましたが、答えは簡単でした。データを格納するオブジェクトです。もう少し言えば、Unityがデータをシリアライズ・デシリアライズしパラメータを格納するための仕組みです。色々な事が出来る割に用途が分かりにくい…

Unityで少しだけ高速なシングルトン(Singleton)

GameObject.Find 系関数の処理速度の検証結果を受けて、シングルトンを見なおした。この記事は、以下の記事の続き。 [Unity3D]もっと楽なシングルトンの実装 [Unity3D]シングルトンなオブジェクトを作る試したのはオブジェクトをtagから検索する事で高速化を…

Unityで複数人で開発する際に注意すべき事(簡易版)

先日、Unity開発者が複数人で開発を進める上で覚えておくと幸せになる9つの事を書いたが、ややこしいと呟いていた人居たので、超簡易版を用意する。こういった物は手順だけ教えるより概念を理解してもらったほうが良いと思うので記載した。反省はしない。と…

「宴」実装時に得られたUnityプログラムノウハウ

「宴」実装時に得られたUnityプログラムノウハウ from Ryohei Tokimura 概要 • Unityにおけるプログラム一般( C# ) • これが重要!どうやって探して、どこに渡す? • シリアライズ •コルーチン • エディタ拡張 •より具体的なプログラムについて • 2D • 画…

一時的にLoadLevelする際にGameObjectが破棄されないようにする

フラグの管理についてアレコレ考えていたら、ゲームオブジェクトを次のシーンへ受け渡す面白いアイディアが浮かんだ。 Unityでゲームを作っている場合、LoadLevelによるシーン遷移をよく利用する。LoadLevelはメモリをスッキリして参照関連や変数を上手い感…

【Unity】事前にシーンのルートにあるGameObjectを取得しておく

[Unity]シーンのルートにあるGameObjectを取得するの事前準備型。 tsubakit1.hateblo.jpシーンのルートにあるオブジェクトを取得する方法。 新しい方法の変更点は2つ。ルートにあるオブジェクト一覧を事前に取得する。非activeのオブジェクトも取得する。使…

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

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

Unityでunsafeを使って直接メモリ制御を行う

unsafeとは、メモリを直接扱う事を可能にする機能だ。メモリ管理とは具体的にはポインタを指す。Unityの使用しているmonoはマネージドコード(メモリ管理を自動で行う)のなので、ポインタを操作する事は本来出来ないが(せいぜいref等の直接参照がある程度…

新・オブジェクトプール

オブジェクトプールを新しく自作した。前に作ったオブジェクトプール tsubakit1.hateblo.jp オブジェクトプールについて オブジェクトプールとはオブジェクトの生成・破棄を回避するギミック。基本的にオブジェクトやインスタンスの生成・破棄はパフォーマン…

Unite2014

今年もUnite2014を4月7〜8でやるとの事。Unite2014セッションも一部公開となり、中々面白そうなセッションが揃ってきています。 個人的に気になるセッションはコレ。Unityで コンソールタイトルを移植する 〜ドラゴンクエストVIII移植から学ぶ、大規模開発テ…

自動化されたパフォーマンスの回帰テストについて

これも英語だけど良い資料。 特にテスト系は最近必須の割に資料が少ないので助かる感

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

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

プラットフォーム切替を15倍くらい高速化する Fast Platform Switch

Unityのプラットフォーム切替は時間がかかる。 特にテクスチャの変換が時間がかかるので、変換に時間が掛かるテクスチャ形式のiOSやAndroidでは非常に高いコストとなってしまう(自分の今作っているアプリでは、Android->iOSに約7分前後かかる)。そういった…

Simplygonでポリゴン数とかマテリアル削減

最近Simplygonなるメッシュ削減サービスがUnityに対応したらしい。SimplygonはLOD(※1)と呼ばれるモデルを作成、ゲームを再生する上で重要なポリゴン数やボーン数を削減し、パフォーマンスを上手い感じに維持するサービスだ。 一見同じに見えるがポリゴン数…

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

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

スクリプトデバッガをもう少し使いこなす

今回はUnityのデバッガについてです。この記事は以下の記事の続き的な物です[Unity3D]Unityでデバッグする [Unity]iOSの実機でスクリプトでバッグする方法 [Unity]Android実機でスクリプトデバッグする方法Unityの…というかMonodevelopのデバッガは常識の範…

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

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

UnityでのAndroidのセキュリティとかメモリ管理とかレンダリングパイプラインとかの動画

これはUniteでのセッション動画。Unityでのメモリ管理方法とか、レンダリングパイプラインとか、セキュリティとかを紹介している。ちなみに、この多くのセッションはUniteと違い同時翻訳は付かないが、英語字幕で確認することが出来る。設定するには、右下の…

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

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

ユニティにおけるメモリプロファイリング

英語だけど超有用な資料 [UniteKorea2013] Memory profiling in Unity from Unity Technologies Korea

Unityでテクスチャを読む7つの方法 4・5・6について

[Unity]Unityでテクスチャを読む7つの方法 の4,5,6について。1. モデルのマテリアルにTextureを貼っつけてシーンに配置 2. Resourcesにファイルを配置し、Resources.Load 3. AssetBundleにテクスチャを格納し、bundle.Load 4. WWWからテクスチャをダウンロー…

AssetBundle と TextureCompression のおはなし

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