リソース・メモリ管理
今回は、キャラクターやUIといったシーンに配置したSpriteのテクスチャを遅延ロードする事で、ユーザーが操作出来るまでの時間を短縮するアプローチついてです。 SceneやPrefabから参照するSpriteは即時ロードされる テクスチャの遅延ロード Textureをロード…
今回はECS(Entity Component System)とはどういった機能かといった話について書いていこうと思います。この情報はハッキリ言えば知らなくても問題ない情報なのですが、知っておくとECSを採用するべきケースや作り方に迷ったときに助けになるかもしれません…
今回はNativeArrayの開放の方法についてです NativeArrayの削除 .Tempは普通に開放 .TempJobは少し楽 サンプル NativeArrayの削除 NativeArrayでコンテナを作る際、アロケータのモードに「Temp」「TempJob」「Persistent」の3つを選択することが出来ます。 …
今回は構造体を配列(NativeArray)にした時の、そのアクセスについてです。 ECSとJobSystemは構造体の配列を使う 配列からrefやoutで参照を貰う事は出来ない そうだ、unsafeを使おう ArrayElementAsRefで要素のrefを取得する 関連 ECSとJobSystemは構造体の…
今回はPrefabにScriptableObjectを格納する話です。 ScriptableObjectを使うと何が良いの? SriptableObjectをPrefabに格納してしまおう サンプル Tips ScriptableObjectを使うと何が良いの? Prefabをインスタンス化する場合、コンポーネントの複製が行われ…
今回はScriptableObjectを使用したComponentやScene間でのデータ共有についてです。なお、この記事は30回近く書き直した*1という曰く付きの記事で、場合によっては消えるかもしれません。 ScriptableObject ScriptableObjectはアセットでありインスタンスで…
今回は、Unityプロジェクトからアプリケーションをビルドした際、Unityプロジェクトに含まれるアセットについてです。 Assets以下のアセットは全て含まれる訳ではない Resourcesフォルダ以下のアセット Resourcesは使わないサブアセットも全て含める Sprite…
AssetBundleにて「AssetBundle一つにつきPrefabを一つ格納」といった感じで設計している場合、一見Prefabのアセットのみが格納されているように見えますが、実際は「Prefabが参照しているすべてのアセット」が含まれます。 といった内容が以前書いた【Unity…
プロファイラに関する記事を書く過程で、パフォーマンスに関して良い感じの記述があったので、メモ。
ついにユニティちゃんの立ち絵素材が公開されましたよ。超可愛いユニティちゃんとユーコちゃん*1、あとミサキちゃんの立ち絵が使えるようになった!ヤッタネ☆ さらに嬉しい事に解像度は1620×2048と非常に高解像度で、キャラクター全体像をのイメージが使用さ…
今回はAssetBundleとAssetBundleの依存関係についてです。これについては、AssetBundleを使うなら最低限知っといた方が良いかもしれません。 AssetBundleとアセットの依存関係 複数のAssetBundleから特定のアセットを参照する場合 リソースは別のAssetBundle…
ゲーム内で使用してるメモリを把握するのに少しだけ便利なMemory Profilerについてです。 ゲーム内で使用しているメモリ 導入方法 使い方 ゲーム上のメモリを取得する アセットの追跡 追記(テクスチャの中身を知りたい場合) 関連 ゲーム内で使用しているメ…
今回はSpritePackerとAssetBundleの挙動について少しメモします。 SpritePackerとAssetBundleといふ便利機能 SpritePackerでパックしたテクスチャアトラスはAssetBundleに自動的に組み込まれる SpritePackerでパックしたテクスチャアトラスの部分組込は出来…
今回はAssetBundleの中に格納したMultiple Spriteから特定のスプライトを取得する方法と、その挙動についてです。 Multiple Spriteの取得方法について AssetBundle.LoadAllAssetsでは駄目 AssetBundle.LoadAssetWithSubAssets 不要なスプライトの破棄 特定の…
Unity 5.2よりLoadLevelAdtiveでロードしたシーンのアンロード(破棄)が可能になりました。 今までは「LoadLevelAditiveやResourcesからオブジェクトを取得」し、「SceneManagerに親オブジェクトを登録」「不 要になったら親オブジェクトごと消す」のような…
Unityのエディタを複数同時に開いて同時編集したり色々とやるアイディアを伊藤周 (@warapuri) | Twitter氏に頂いたので色々とやってみました。 この方法は明らかにUnityエディタの想定した動きではないので、やる場合は自己責任でお願いします。 Unityエディ…
問題 どうも「テクスチャのフォーマットがRGBA16」の「透過色を持つ画像」を使用している場合、テクスチャの色に少し透明が追加され、後ろにあるテクスチャの描画結果が薄く前面に表示されてしまうバグがあるみたいです。 Unity Issue Tracker - Using Direc…
uGUIでノベルゲームのようなものを作る…の続きです。 今日はコマンド周りをやります。 uGUIでノベルゲームのようなものを作る。その1 - テラシュールブログ uGUIでノベルゲームのようなものを作る。その1 - テラシュールブログ シナリオをテキストファイル…
以前、ステージの作り方について紹介しましたが、これには想像の通り問題が一つあります。それは、GameObjectをすごい数要求する事です。 Sample Assetsのプロトタイプアセットを並べて簡単なステージを作ってみよう[Unity] - テラシュールブログ Sample Ass…
意外と知られていないので紹介します。 UnityのProject Viewは、searchバーにテキストを打ち込むことでファイルを検索することが出来きます。例えば「t:Texture」でテクスチャ一覧、「l:ラベル」で指定ラベルを持つオブジェクト等です。 ラベルを利用したア…
ScriptableObjectとは何かと色々と悩んできましたが、答えは簡単でした。データを格納するオブジェクトです。もう少し言えば、Unityがデータをシリアライズ・デシリアライズしパラメータを格納するための仕組みです。色々な事が出来る割に用途が分かりにくい…
先日、Unity開発者が複数人で開発を進める上で覚えておくと幸せになる9つの事を書いたが、ややこしいと呟いていた人居たので、超簡易版を用意する。こういった物は手順だけ教えるより概念を理解してもらったほうが良いと思うので記載した。反省はしない。と…
昨日の記事(Unity開発者が複数人で開発を進める上で覚えておくと幸せになる9つの事)で少しだけ紹介したが、思いの外上手く出来ていたので改めて紹介したい。これはプロジェクトビューへファイルを追加した際、既にファイルが有る場合は上書きコピーするよ…
ゲームジャムが近いので、複数人開発で注意すべきことをまとめる。この内容は自分の開発経験やヒアリングを元に考えたものだ。※この方法が正しいとは限らない。とにかく意見がほしい 今回は管理システムにはGitでSource Tree、Unityのバージョンは4.5を想定…
弾を生成する場合、以下の手順を行うのが一般的だ。弾のprefabを生成Resources、もしくは参照から1を取得2をGameObject.Instantiateする実はGameObject.Instantiateは、別にプレハブでなくとも実行できる。 GameObject.Instantiateの本質は「GameObjectをク…
端末のスクリーンショットを撮影する際、高画質なスクリーンショットを撮影したい場合もある。そんな時はApplication.CaptureScreenshotの第二引数(superSize)に倍率を指定する。下のコードはスクリーンショットを倍にしたケース。Application.CaptureScre…
フラグの管理についてアレコレ考えていたら、ゲームオブジェクトを次のシーンへ受け渡す面白いアイディアが浮かんだ。 Unityでゲームを作っている場合、LoadLevelによるシーン遷移をよく利用する。LoadLevelはメモリをスッキリして参照関連や変数を上手い感…
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…
単純なSingleSpriteならばResources.Load(fileName)でロード出来る。ただし、これをMultiple(スライスしたスプライト)に実行すると、一番上のスプライトがロードされてしまう。このスライス済みスプライトについては、Resources.LoadAllで一旦全部取得して…