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

テラシュールブログ

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

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

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

【Unity】複数のAssetBundleから参照されるアセットを見つけ出す

AssetBundleにて「AssetBundle一つにつきPrefabを一つ格納」といった感じで設計している場合、一見Prefabのアセットのみが格納されているように見えますが、実際は「Prefabが参照しているすべてのアセット」が含まれます。 といった内容が以前書いた【Unity…

【Unity】パフォーマンスを得るための16のヒント

プロファイラに関する記事を書く過程で、パフォーマンスに関して良い感じの記述があったので、メモ。

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

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

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

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

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

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

【Unity】SpritePackerとAssetBundleについて

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

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

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

【Unity】シーンの「追加読込」と、追加読込したシーンの「破棄」

Unity 5.2よりLoadLevelAdtiveでロードしたシーンのアンロード(破棄)が可能になりました。 今までは「LoadLevelAditiveやResourcesからオブジェクトを取得」し、「SceneManagerに親オブジェクトを登録」「不 要になったら親オブジェクトごと消す」のような…

複数のUnityエディタを同時に起動して、Assetbundleを並列ビルドしたり、複数シーンを同時編集したりする裏ワザ

Unityのエディタを複数同時に開いて同時編集したり色々とやるアイディアを伊藤周 (@warapuri) | Twitter氏に頂いたので色々とやってみました。 この方法は明らかにUnityエディタの想定した動きではないので、やる場合は自己責任でお願いします。 Unityエディ…

Unity 2DやUIで、「テクスチャにRGBA16指定した時に透ける」問題を回避する方法について

問題 どうも「テクスチャのフォーマットがRGBA16」の「透過色を持つ画像」を使用している場合、テクスチャの色に少し透明が追加され、後ろにあるテクスチャの描画結果が薄く前面に表示されてしまうバグがあるみたいです。 Unity Issue Tracker - Using Direc…

uGUIでノベルゲームのようなものを作る、その2 コマンドによる挙動の管理

uGUIでノベルゲームのようなものを作る…の続きです。 今日はコマンド周りをやります。 uGUIでノベルゲームのようなものを作る。その1 - テラシュールブログ uGUIでノベルゲームのようなものを作る。その1 - テラシュールブログ シナリオをテキストファイル…

Unityのシーン上に配置したモデルを結合する

以前、ステージの作り方について紹介しましたが、これには想像の通り問題が一つあります。それは、GameObjectをすごい数要求する事です。 Sample Assetsのプロトタイプアセットを並べて簡単なステージを作ってみよう[Unity] - テラシュールブログ Sample Ass…

Unity Editorで特定のフォルダからファイルを検索する

意外と知られていないので紹介します。 UnityのProject Viewは、searchバーにテキストを打ち込むことでファイルを検索することが出来きます。例えば「t:Texture」でテクスチャ一覧、「l:ラベル」で指定ラベルを持つオブジェクト等です。 ラベルを利用したア…

ScriptableObjectについて

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

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

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

Unityプロジェクトへファイルを追加する際に上書き更新する

昨日の記事(Unity開発者が複数人で開発を進める上で覚えておくと幸せになる9つの事)で少しだけ紹介したが、思いの外上手く出来ていたので改めて紹介したい。これはプロジェクトビューへファイルを追加した際、既にファイルが有る場合は上書きコピーするよ…

Unity開発者が複数人で開発を進める上で覚えておくと幸せになる9つの事

ゲームジャムが近いので、複数人開発で注意すべきことをまとめる。この内容は自分の開発経験やヒアリングを元に考えたものだ。※この方法が正しいとは限らない。とにかく意見がほしい 今回は管理システムにはGitでSource Tree、Unityのバージョンは4.5を想定…

シーン内のオブジェクトをInstantateするメリット

弾を生成する場合、以下の手順を行うのが一般的だ。弾のprefabを生成Resources、もしくは参照から1を取得2をGameObject.Instantiateする実はGameObject.Instantiateは、別にプレハブでなくとも実行できる。 GameObject.Instantiateの本質は「GameObjectをク…

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

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

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

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

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

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

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

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

ResourcesからスライスしたSpriteを取得する3つの方法

単純なSingleSpriteならばResources.Load(fileName)でロード出来る。ただし、これをMultiple(スライスしたスプライト)に実行すると、一番上のスプライトがロードされてしまう。このスライス済みスプライトについては、Resources.LoadAllで一旦全部取得して…

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

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

Unity-Excel-Importer-Makerのマルチシートに対応

とある要望によりUnity Excel Importer Makerをマルチシートに対応てみた。 これで1個のxlsファイルに複数のシートを積み込める。 Unity-Excel-Importer-Maker今までのExcelImporterは2枚目以降のデータは計算用と割り切っていたが、現バージョンではシート…

Unity2d機能、スプライトの使い方

2D機能の使い方について、もう少し詳しく記載しようと思う。まずはSceneビューを2Dモードに切り替える。Sceneビューに新しく2Dのボタンがあるので、それを押すと2Dモードのような感じになる。スプライトの作り方2Dを使う方法は簡単だ。画像の設定を「sprite…

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

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

Unityでテクスチャを読む7つの方法

Unityでテクスチャを読む方法は実は複数ある。代表的なのが、モデルにテクスチャを参照しているマテリアルを登録する方法。これで、読むことを意識せず勝手にTexture2Dを読んでくれる。ただ、状況によって(特にGUIゲーム)ランタイムで読み込みたい場合も多…

AssetBundle と TextureCompression のおはなし

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

Excelでデータを管理してUnity iOS/Androidで使うワークフローをノーコーディングで使えるようにした

以前紹介した「Excelでデータを管理して(中略)ワークフロー」に「助かりました!」の声があったのが嬉しかったので、それのソースコードを作成する部分を自動化した。(我ながら単純!!)これで、すごく簡単にXLSファイルのデータをUnityに持ってくる事が…

iOS/Androidでテクスチャを利用する(多分)最も良い方法

Unityの悩みの種であるテクスチャの管理について、 多分もっとも良い方法を簡単に実現する方法が公開された。 Unity でアルファマスクを使う方法は簡単で、アルファマスクを使いテクスチャを表現する。何が良いかと言うと、PVRTC及びETCといった画像を「綺麗…

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

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

アプリサイズを減らす その3

アプリサイズを減らす その2で紹介した方法(StreamingAssetsに配置する)だが、どうやらAndroidでは若干安定度に難がある。で、もう少し良い方法を思いついた。[Unity3D]iosアプリサイズを節約する http://tsubakit1.hateblo.jp/entry/20120512/1336773155…

Excelでデータを管理してUnity iOS/Androidで使うワークフロー

前回の応用で、Excelの中身をScriptableObjectとして保持するようにした。tsubakit1.hateblo.jpより良い方法があったので、そちらをどうぞ。 tsubakit1.hateblo.jpExcelみたいなデータとして大きく効率が悪いフォーマットからランタイムで引っ張ってこようと…

GoogleDriveとUnityを連動させる、Google Drive for Unity3D

Unityでゲームを作る場合、サーバーを用意しない限りセーブデータはどうしてもローカルに保存する必要がある。勿論それでも概ね問題は無いと思うが、機種変更や複数台の端末を保有している場合、少し勿体無い。(iOSはiCloudといった手もある。最近ハマって…

テクスチャの暗号化

テクスチャの暗号化について、面白いアプローチがあったので紹介。これは、適当なテクスチャに難読化処理をかけたもの。左がエンコードした画像、右がデコードした画像になる。単純にカードを隠したい場合にはそれ程有効ではないが、カードの絵柄を隠したい…

Uniteセッション「ネイティブアプリ時代の ローカルデータ管理入門」の補足

先日自分が担当したUniteのセッション「ローカルデータ管理入門」について、上手く説明出来なかったと思うので補足しておこうと思う。「webデータを取得しよう」の補足この部分は、単純にjsonを使うのを止めて欲しかった。 理由は単純で、実行速度・消費メモ…

Basic環境でもDLCしたい(使い方)

この記事は以前紹介したDLCをBasic環境でも使えるようにするための機能について。 tsubakit1.hateblo.jpパッケージ https://dl.dropbox.com/u/56297224/UnitySumple2/download%20assets.unitypackage今回は使い方について。■プレハブの準備まずはダウンロー…