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

テラシュールブログ

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

【Unity】AnimationControllerのAnyStateを使用してる際、現在のStateへ何度も移動しないようにする

今回は小さなTipsです。 例えば上のように「どれか一つのUI状態を持つ」UIをAnimationControllerで管理し、かつAnyStateから呼び出すように作成した際、Triggerを叩くと何度もUI表示アニメーションが再生されてしまうといった事があります。 AnyStateの先へ…

【Unity】スケルタルアニメーション用のアセット、Anima2Dが無償公開

Anima2Dが、パブリッシャーがUnityTechnologiesになりUnity Anima2Dに名前を変えて無償公開されました。 https://www.assetstore.unity3d.com/jp/#!/content/79840 Anima2Dはスケルタルアニメーション(FateGOやSprineのような物)を実現するアセットの一つ…

【Unity】アセットのUnloadとDestroyについて

今回はアセットのUnloadとDestroyの使い分けと、アセットの運用についてです。 基本的にはアセットの開放はResources.Unloadで可能 Resources.Unloadで開放出来ないケース インスタンス化したアセットの開放はDestroy 大抵の場合はUnloadUnusedAssets 基本的…

【Unity】AssetBundle シミュレーターの作り方について

AssetBundleをメインで使用して開発するのは良いのですが、コンテンツを変更するたびにビルドが必要になるので若干面倒くさい所があります。一応、Unity 5からのビルドパイプラインでは、内包するコンテンツに変化がなければ再ビルドしない設計になっていま…

【Unity】SceneをAssetBundleに格納して実行時にロードする方法について

今回はAssetBundleにSceneを含め、実行時に展開する手法についてメモします。面倒くさいとおもったら、AssetBundle Managerを使うのが良いと思います。 tsubakit1.hateblo.jp AssetBundleにSceneを含める SceneをAssetBundleに含める方法 AssetBundleからSce…

【Unity】アプリに含めるアセットを抑えて、アプリサイズを小さくする

今回は、Unityプロジェクトからアプリケーションをビルドした際、Unityプロジェクトに含まれるアセットについてです。 Assets以下のアセットは全て含まれる訳ではない Resourcesフォルダ以下のアセット Resourcesは使わないサブアセットも全て含める Sprite…

【Unity】ソースコード変更後のコンパイル時間を短く抑える

今回はC#のビルド時間を短くする方法についてです。f C#のコンパイル Pluginsフォルダにあるコードは、事前コンパイルされるのを活用 事前にDLLにコンパイルしたコードを使用する コンポーネントをDLL化すると、参照が外れる DLLの作り方 mdbファイルがあれ…

【Unity】AssetBundleのManifestファイルに書かれている内容について

Unity5でAssetBundleを作成する際Manifestファイルが作成されるようになりました。 今回は、このManifestファイルは何というお話。 ManifestファイルはAssetBundleの構成情報が記述されている 生成したパスと同名のManifestにはAssetBundle同士の依存関係を…

【Unity】AssetBundleからアセットを取得する4つの方法

AssetBundleからアセットを取得する方法について、少し整理します。 AssetBundleからアセットを取得する ファイルパスを指定してAssetBundleからアセットを取得する アセットの中に含まれているアセットを取得する アセットが依存しているアセットを取得する…

【Unity】異なるプロジェクトでAssetbundleを構築する際の注意点

今回は「異なるProjectにてAssetBundleを構築するとどうなるのか」についてです 別のプロジェクトで作ったAssetBundleは読める 複数のプロジェクト間で作成したAssetBundleの依存関係 確認方法 プロジェクト2の作業 プロジェクト1の作業 プロジェクト2と…

【Unity】AssetBundleのVariantでローカライズ

AssetBundleのVariantを使用して、ローカライズ的な事を行うアプローチについてです。今までは少し面倒なバグのせいで紹介するのを避けてきましたが、Unity 5.4bの何処かのバージョンでバグが治ったので、使えるようになりました。 Variantでローカライズ テ…

【Unity】引き伸ばしてもテクスチャが伸びないキューブを作る MasterCube

UnityのCubeを引き伸ばしても、テクスチャが引き伸ばされずにしき詰めてくれるアセットを見かけたので、メモします。 Master Cube Cubeを引き伸ばしてもテクスチャが伸びなくする CubeのUVを面毎に調整する メッシュを結合して単一のメッシュにする 感想 Mas…

【Unity】AnimationControllerがプロジェクトを散らかさない設計についての模索とサンプル

Animatorの運用方法について、5つのアプローチを試しに試作してみました。 サンプルプロジェクト Style1:各ステートマシンにて制御 Style2:ステートマシンのアニメーションを上書き Style3:AnimatorOverrideControllerを「シーンにシリアライズ」 このサ…

【Unity】AssetBundleを利用してアプリサイズを削減するアプローチ

AssetBundleにてリソースを圧縮し、アプリサイズを削減するアプローチについてです。うまく行けばアプリのサイズが非常に小さくなります。 で、このアプローチは実際どうなんでしょう。確認してみました。 Resourcesに格納したアセット AssetBundleに格納す…

【Unity】AssetBundleのVariantsでロードするアセットを差し替える

今回はAssetBundleのVariantsで、リソースを差し替えてみます。 シーン/プレハブが参照するアセットを差し替えるVariants Variantsを使用してみる 実際にVariantsを使用してみる プレハブの作成 Variantの設定 AssetBundleを読み込む 注意点 AssetBundleMana…

【Unity】Unityエディタがクラッシュした際に失われた情報を復旧させる裏技(5.3以降)

以前紹介した「Unityエディタのクラッシュ時に失われたシーン情報を復旧させる裏ワザ」が、5.3で使えなくなっていたので、新しい方法についてです。 上手く使えば、Unityエディタがクラッシュや無限ループして編集中のシーン情報を飛ばした場合でも、過去の…

【Unity】AssetBundle Managerが思ってたより凄く便利

AssetBundle関連を使用する上で便利な上位層APIとして、AssetBundle ManagerがAssetStoreで公開されています。これが思ってたより便利だったので、改めて紹介します。 AssetBundleを簡単に使う為のAsset Bundle Manager AssetBundleを構築する ローカルサー…

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

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

【Unity】Unityエディタで変更したプレハブを更新「しない」方法

UnityエディタはPrefab・ScriptableObjectといったアセット、Animationの制御等、いくつかの*1情報をUnity側が保持するフォーマットによって管理します。 これらの情報は「シーンの保存」や「Editor>Save Project」、「エディタの終了」等いくつかの要因で実…

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

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

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

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

【Unity】SpritePackerとResourcesについて

昨日はSpritepackerとAssetBundleについて書きましたが、今日はSpritePackerとResourcesについて書こうと思います。 tsubakit1.hateblo.jp SpritePackerとResourcesについて ResourcesからSpritepackerのテクスチャアトラスを使う 関連 SpritePackerとResour…

【Unity】SpritePackerとAssetBundleについて

今回はSpritePackerとAssetBundleの挙動について少しメモします。 SpritePackerとAssetBundleといふ便利機能 SpritePackerでパックしたテクスチャアトラスはAssetBundleに自動的に組み込まれる SpritePackerでパックしたテクスチャアトラスの部分組込は出来…

【Unity】プロジェクト内のScriptableObjectを見つける方法

エディタ拡張でエディタ機能を拡張している際、データを保存したくなる事が多々あります。そこでScriptableObjectが大活躍する(ハズ)なのですが、プロジェクト内の「特定のフォルダに格納」といった扱いは微妙にイケていない気がします。 凄く手っ取り早い…

【Unity】AssetStoreのComplete Packageのパッケージで、プロジェクトの設定を上書きしない

プロジェクト設定とComplete Package インポート時にプロジェクト設定を上書きしない 関連 プロジェクト設定とComplete Package AssetStoreのComplete PackageやUnity Essentialsカテゴリから提供されているアセットは、Unityのプロジェクト設定を上書きした…

【Unity】C# Project Generationで標準namespaceを設定したり、アセットを参照してるシーン・プレハブをIDEから検索かけたり。

何時ごろからか、Unityのエディタ設定に追加されていた「C# Project Generation」の機能について紹介します。 この機能は簡単に言えば、MonodevelopやVisual Studioに関連する機能で、生成するスクリプトにNamespaceを付与したり、IDEから識別することが出来…

【Unity】ゲームジャムで作ったプロジェクトをパブリックなリポジトリに置くために行った作業

今回はゲームジャムの作品をパブリック(誰でも触れる)なリポジトリに置くために行った作業について書いておきます。 不要なアセットの削除 アセットストアや公開出来ないアセットの削除 アセットを整理する 関連 不要なアセットの削除 ゲームジャムに公開…

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

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

【Unity】uGUIでスプライトアニメーションするには

uGUIでスプライトアニメーションを行う方法についてです。難しい事は全くないのですが、気づかないと分からないかもしれないので、一応ここに書いておきます。 下のGIFはキャラクターアニメーションをuGUIで行って居るので影付けたりアウトライン付けたり、…

【Unity】ファイル名(アセット名)の一括更新について

Unityで作業をしていて、ファイル名の変更で少しひっかかったのでメモ。 ファイル名の変更とGUID Unityでファイル操作を行う場合、ファイルの移動やリネームはUnityエディタで行う必要があります。 というのも、Unityは全てのファイル(アセット)にGUID(グ…

【Unity】AnimationClipのMissingなパスを見つけて解決しやすくするエディタ拡張

昨日の応用で、アニメーションするオブジェクトでmissingになっているパスを発見し置換するエディタ拡張を作ってみました。 missingなAnimationClip missingなアニメーションを見つける missingなパスを置換する 導入とソースコード 使い方 感想 関連 missin…

【Unity】AnimationClipからTransformを操作するのアニメーションカーブを一括で消すエディタ拡張

アニメーションクリップからTransformのアニメーションを一括で消すエディタ拡張についてです。Animationを使用する目的のある程度はTransformの更新だと思うので必要かどうかは微妙な所ですが、一応。 TransformをAnimationClipから消すエディタ拡張 Transf…

【Unity】マテリアルのInspector表示を拡張するエディタ拡張

Materialの、正確にはShaderのInspectorを拡張するエディタ拡張についてです。下のように、マテリアルの設定について情報を追加したり、入力内容を整理したりすることが可能になります。 MaterialのInspectorを変更するテスト pic.twitter.com/sppjoZ3tjx — …

【Unity】AssetBundleからMultiple Spriteに含まれるスプライトを取得する方法とその周辺

今回はAssetBundleの中に格納したMultiple Spriteから特定のスプライトを取得する方法と、その挙動についてです。 Multiple Spriteの取得方法について AssetBundle.LoadAllAssetsでは駄目 AssetBundle.LoadAssetWithSubAssets 不要なスプライトの破棄 特定の…

【Unity】AssetStoreからインポートしたアセットをプロジェクトからアンインストールする「 Package Uninstaller」

PackageUninstallerはインポートしたunitypackageをアンインストールする事が出来るエディタ拡張です。 例えば色々とプロジェクトにUnitypackageを突っ込んだ状態で、特定のパッケージを消したい…といった時に使えます。 Package Uninstaller 使い方 メニュ…

【Unity】プロジェクトに不要なアセットをプロジェクトから退避するエディタ拡張を作ってみた

Unityのプロジェクトには様々なアセットが含まれます。そういったアセットの中から「ゲームの進行に必要な最低限のアセット」を残しプロジェクト外へ退避するアセットを以前に自作してみました。 これの続きです。 tsubakit1.hateblo.jp 得られる効果 機能 …

【Unity】指定のプレハブやテクスチャが、どのシーンのどのオブジェクトで使用されているのかを見つける

プロジェクト内で使用しているテクスチャやメッシュが何処で使われているのかを追跡する方法です。 目次 目次 どのシーンで使用されているかを探す どのオブジェクトがアセットを使用しているかを探す ref検索を一発で行う どのコンポーネントがアセットを使…

【Unity】AssetServerで「コミットするアセットが必要とするアセットを一緒にコミット」する手軽な方法

バージョン管理システムのAssetServerにファイルをコミット(アップロード)する際、「コミットするアセットが必要とするアセットも一緒にコミット」しやすくする、そんな便利機能があったので紹介します。 コミットするアセットが必要とするアセットって、…

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

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

【Unity】期間限定で無料になったビジュアルスクリプティングのアセット「Arbor」で遊んでみた

www.youtube.com 現在、有償で配信されていたArborが期間限定で無償配信されているみたいです。 https://www.assetstore.unity3d.com/jp/#!/content/17883 ArborはPlayMakerのようなビジュアル的に状態の管理を行えるアセットです。 ・Unityで有限ステートマ…

【Unity】指定のアセットがプロジェクト内に存在しない場合、不足アセット一覧とパッケージへのリンクを表示してくれる効果が発動するアセットを作成した

指定のアセットがプロジェクト内に無い場合、不足ファイルの一覧と該当アセットのあるファイルへのリンクを表示してくれるアセットを作成しました。 エディタを起動させた際にアセットが不足している場合、必要なアセットを表示してくれます。また、「A$」ボ…

【Unity】One Column Layoutでも一覧プレビューを使う

Unity4よりUnityのProjectビューはTwo Column Layoutが標準設定になりました。 この設定ではフォルダの中身探索に集中できる点や、一覧プレビューでファイルを一覧して見れる点、またタグによる検索結果やよく使うフォルダへのアクセスをお気に入りとして保…

Unity上でMMDモデルを独自アニメーションで走らせる

MMDモデルをRoot移動の無い、独自のモーションで走らせる方法についてです。この記事は以前に書いたUnity内でMMDモデルを自由に走らせる手軽な方法 の続き的な位置づけです。 目次 目次 MMDモデルおよびモーションの登録 RootMotionとアニメーション スクリ…

コンパイルエラー発生時でもエディタ拡張を使用する方法

今回は前回の応用で、プロジェクト内に必要なアセットが無い場合、AssetStoreからダウンロードしてもらう機能を作成してみました。 Unity プロジェクトの中に、要求するアセット群が含まれない場合、該当ファイルのあるアセットを表示する奴 pic.twitter.com…

【Unity】FBXに格納されたAnimationClipを取り出し編集可能にする

FBXに格納されているAnimationClipはReadonlyである関係上、アニメーションを調整する事が非常に面倒になっています。 そこで、FBXからAnimationClipを取り出してイベントを設定・アニメーションイベントを調整する方法を紹介します。 AnimationClipを取り出…

【Unity】数名で一つのSceneやPrefabを編集しスマートにマージする

複数人でゲームを開発していると、同じファイルを同時に編集し変更内容が競合するケースがあります。 Unity5よりシーンやプレハブ編集ワークフローの見直しが入り、シーン構造の単純化やシーン・プレハブをマージするUnityYamlMergeの機能が追加されました。…

UnityのAssetStoreの検索がまともになった!

UnityのAssetStoreの検索がマトモになったみたいです。 今までは「問答無用で OR 検索」「欲しい情報が手に入らない」等の中々にダメダメっぷりな検索でしたが、やっとAnd検索が入り使い物になりました。 AssetStoreでAnd検索するにはGoogleと同じようにキー…

UnityのGameObjectを非アクティブにするとAnimatorがリセットされる挙動、その対処法

マニュアルに書いてあったか記憶が微妙なのですが、UnityのAnimatorはGameObjectが非アクティブになるとリセットされます。 ここで言うリセットとはアニメーションが最初に戻るだけ等の生易しい物ではなく、パラメータの持つ値やトリガー状況、アニメーショ…

UnityのAnimatorControllerにAnimationClipを内蔵する

ことUIにAnimatorを使う場合、ほとんど使いまわす事ができずプレハブもしくはシーンに従う形でAnimationControllerが 作られ、AnimationControllerが参照するAnimationClipは参照という形を取りながら完全に専用アニメーションとして扱われ ます。 そのためA…

Unityで画面の指定位置にモデルを移動させる

先日ゲームジャムでメンバーの一人が「3Dモデルを特定の位置に移動」させる事に四苦八苦していたので、作った。スクリプトを。 このスクリプトは指定したスクリーン座標へモデルを移動させる為の物です。スクリーン座標的に(x:45, y:0)の位置へモデルを移…