テラシュールブログ

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

最適化・デバッグ

【Unity】タップした位置にエフェクトを表示する

スマホでよくあるような、タップした位置にエフェクトを表示させる表現の作り方について、少しメモします。 タップした位置(カメラから見た3D座標)を取得 タップエフェクトを表示 エフェクトだけを表示するカメラの設定 おまけ:最前面にパーティクルを表…

【Unity】ノベルゲームの立ち絵表現で、キャラクターの表情だけ切り替えて、メモリとロード時間を節約する

ついにユニティちゃんの立ち絵素材が公開されましたよ。超可愛いユニティちゃんとユーコちゃん*1、あとミサキちゃんの立ち絵が使えるようになった!ヤッタネ☆ さらに嬉しい事に解像度は1620×2048と非常に高解像度で、キャラクター全体像をのイメージが使用さ…

【Unity】ログが表示するスタックトレースの表示範囲を制限する

ログを表示する上で、スタックトレースはバグを追跡する重要な情報です。ですが、場合によっては別に表示しなくても良いケースもあります。 Unity 5.4からその辺りが調整出来るようになったみたいです。 スタックトレースの表示範囲を調整する Noneの場合 Sc…

【Unity】ファイルサイズとメモリ消費を無意味に増やさない為の、AssetBundleと依存関係についてのメモ

今回はAssetBundleとAssetBundleの依存関係についてです。これについては、AssetBundleを使うなら最低限知っといた方が良いかもしれません。 AssetBundleとアセットの依存関係 複数のAssetBundleから特定のアセットを参照する場合 リソースは別のAssetBundle…

【Unity】ゲーム内で何がどの程度メモリを消費しているのか確認する MemoryProfiler

ゲーム内で使用してるメモリを把握するのに少しだけ便利なMemory Profilerについてです。 ゲーム内で使用しているメモリ 導入方法 使い方 ゲーム上のメモリを取得する アセットの追跡 追記(テクスチャの中身を知りたい場合) 関連 ゲーム内で使用しているメ…

【Unity】5.3以降AssetBundleの各種圧縮形式のパフォーマンス比較

Unity5.3になりAssetBundleが変わりました。で、AssetBundleのパフォーマンスについても大分変化したので、そこについて検証してみようと思います。 AssetBundleの新しい設定LZ4 検証方法について 結果。無圧縮でかい、LZMA遅い、LZ4はその間 キャッシュとLZ…

【Unity】1GB近かったPC向けゲームのアプリサイズを18MBぐらいまで縮めた話

グローバルゲームジャム2016で、NPCに紛れたプレイヤーを見つけ出すゲーム「Creep IN Heresy(邪教に忍び込め!)」を作った話 -で少し書いた、アプリサイズを少し小さくした話です。 これはTipsと言うよりは、単純に作り方が間違ってたので凄いサイズになり…

【Unity】CullingGroupについて

CullingGroupとは オブジェクトが実際に見えている場合のみ処理を行う Renderer.isVisible オブジェクトとの相対距離で処理を切り替える サンプル CullingGroupとは CullingGroupは、見えないオブジェクトや遠いキャラクターのギミックに対して制御を行うた…

【Unity】リアルタイムGIの影響範囲を表現するClusteringとLit Clusteringについて

Unity 5.3よりシーンビューの項目に新しく「Clustering」と「Lit Clustering」が追加されました。 「Clustering」と「Lit Clustering」はPrecumputed Realtime GIの解像度や影響範囲を表現するために使用する項目です。UnityのリアルタイムGI(Global illumi…

【Unity】LOD(Level of Detail-距離に応じたハイポリ/ローポリの切替)をキャラクターで使用する方法

Level of Detailをキャラクター・・・と言うかアニメーションを持つキャラクターに対して使用する方法についてです。 LOD(Level of Detail) キャラクターとLOD 一つのAnimatorでLOD やり方 関連 LOD(Level of Detail) Level of Detailは距離に応じて描画…

【Unity】パフォーマンスが良いらしいUIのマスク、RectMask2Dについて

Maskと異なり四角形でしか切り抜けませんが、Maskよりかなり高速に動作するRectMask2Dが何時ごろか追加されました。 このRectMask2DはRectTransformの範囲で切り抜きを行うためMaskで必要だった「画像」を必要としませんが、その代わり高速で動作するみたい…

【Unity】誤ってUnityエディタで無限ループ起こしても、Unityを強制終了させることなく復帰する「Panic Button」

先日のUnity Tips(火曜日にUnityのTipsを#unitytipsタグと一緒にTwitterで紹介する)を眺めていた所、なんか凄いアセットが目につきました。 #unitytips How to stop a pesky infinite loop in 1s with Panic Button. Learn more: http://t.co/ezdJ9nqn4c #…

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

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

【Unity】コンソールログを検索する方法

Unityで開発を行っていると、膨大なコンソールログから1行を探して確認することが必要なケースが発生することがあります。そんな時は、Editotr.Logを確認します。 例えば自分の場合「ゲームが使用していないファイルをプロジェクト外に退避する」エディタ拡…

【Unity】おなじプロジェクトを複数のエディタで同時に操作する(Windows版)

ゲームを作成するシーンにおいてエディタを複数起動し同一プロジェクトを操作したくなるシーンがあります。 例えば、オンラインマルチプレイなゲームの開発です。複数のクライアントが必要となるこのケースですが、動作の確認に毎回WebPlayerやStandalone向…

【Unity】Animatorのプロパティやステートへのアクセスを容易にするエディタ拡張

ふと思いついて、Animatorのステートやパラメータに定数でアクセスする為のコードを自動生成するエディター拡張を作成しました。 導入方法は ファイルをインポートするだけです。 https://github.com/tsubaki/Unity-AnimatorAccessHelper/blob/master/Animat…

object.ReferenceEquals(someObject, null) の方が someObject == null より早い…が、盲目的に使うのは危険

先日#UnityTipsにて、中々に面白いTipsが紹介されました。 #UnityTips object.ReferenceEquals(someObject, null) is faster than someObject == null. — Mike Geig (@mikegeig) 2015, 5月 26 #UnityTipsとは 火曜日の大体夕方から夜にかけて、#UnityTipsの…

UnityでGear VR用アプリを作るなら知っておきたいデバッグ方法

当初Gear VRでデバッグする方法が分からず地獄を見ました。なので、デバッグする方法について紹介します。 Gear VRに刺さずにアプリを起動する Wifi経由でADBを取得する デバッグ用のUIを表示する スクリプトデバッグする 再生中のゲーム画面をPCで確認する …

Unityに配置したモデルをアニメーション向けに最適化する

Unityでアニメーションを行うモデルを配置した際、パーツ次第で結構深い階層を持つことになります。実はUnityは深い階層を持つのは高いコストになるらしく、これを避けるのが望ましくあります。 下の図はハロゥインユニティちゃんのみのシーンですが、展開す…

UnityのOcclusion Cullingの機能を使って3D空間を効率的に描画する

Occlusion Culling OccluderとOccludee Smallest OccluderとSmallest Hole Occlusion AreaとOcclusion Portal Occlusion Cullingがあんまり効かないケース 参考 Occlusion Culling Occlusion Cullingとはオブジェクトが遮蔽物に隠れていた場合にオブジェクト…

Unityの2DやuGUIのパフォーマンス最適化についての7つのTips

最適化というか、改善する話です。 モバイル向けに作った時に妙に遅かった場合、この辺りの要因が絡んでいるケースが多い印象です。この辺りは作る際に確認しながら作ると、後々痛みが少なくて良いかなと思います。 目次 目次 プロファイラで確認する エディ…

UnityのuGUIとImageとSpriteとスライスについて

uGUIのスライスは覚えておくと便利な機能です。 今回はコレを作ろうと思いましたが、スライス部分が予想以上に色々と出来たので分割します。コレの作り方は次回。 目次 目次 スライスする方法 大きさを調整する 真ん中を塗りつぶさないでフィルレートを節約…

UnityのuGUIで無限にスクロール出来るスクロールビューを作る

使い方 アイテムの内容調整 制限付きスクロールビューのやり方 以前UnityのuGUIでスクロールビューを作る方法を紹介しました。 UnityのuGUIでスクロールビューを作る - テラシュールブログ UnityのuGUIでスクロールビューを作る - テラシュールブログ 今度は…

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版はシーンの非同期ローディングが出来ないのでどうしても画面が固まります。 しかし、実はこのシーンのロード中全…