うにてぃブログ

主にUnityとC#に関する記事を書いていきます

Unity

【Unity】Addressable をローカルサーバを立ててそこからロードする

Hosting Window から Hosting するように変更 ブラウザから記述してあるURLにアクセスし、 Console にログが表示されれば起動しています 今回であれば http://192.168.1.8:59595/ が URL になります これを先にしないと以下のように[HostingServicePort]が置…

【Unity】Addressable で指定ディレクトリ以下にあるアセットに自動でAddressを設定する

Addressable Asset Sysytem では Addressable Group の EditorWidow からアドレスを設定する作りとなっており、自動化したい場合は自前でなにかしらの処理を書く必要がある 大体同じ処理を書くと思うので自動的にアドレスを設定する PostProcessor を作成し…

【Unity】UnityEditor 上でのみカラーピッカーを表示する

UnityGUIのカラーフィールドを使うと、エディタ上ではカラーピッカーを利用できますが、プレイモード中にはカラーピッカーが使えません。 そのため、エディタ上でテストなどで簡単にカラーピッカーを使いたい場合は、別途カラーピッカーを実装する必要があり…

【Unity】error CS0246: The type or namespace name 'NativeMultiHashMap<,>' could not be found (are you missing a using directive or an assembly reference?)

error CS0246: The type or namespace name 'NativeMultiHashMap<,>' could not be found (are you missing a using directive or an assembly reference?) Unity2021 で Unity.Collections の NativeMultiHashMap を利用している状態で、Unity2022 にアップ…

【Unity】Unity から iOS ビルドをして実機で確認する

環境 Unity 2022.2.15 iOS 16.4.1 Xcode 14.3 Unity から Xcode Project を出力 Unity の Build Target を iOS に変更し、Build Settings よりビルドする ビルドが終わると以下のようなファイル群が出力されるので Unity-iPhone.xcodeproj を実行して Xcode …

【Unity】Light Cookie の Size や Offset をスクリプトから変更する

Light クラスには Cookie のテクスチャ(cookie) や サイズ (cookieSize) はあるが [SerializeField] private Light _Light; Inspector 上に表示されている Cookie Size や Cookie Offset の参照は無く変更することができない なぜならば Size や Offset のパ…

【Unity】Texture2DArray は SRP Batcher が有効なのか

通常 URP Lit を利用した際には SRP Batcher が有効な Shader なので、Frame Debugger で確認したところちゃんと SRP Batcher が有効となっていることが分かる では Texture2DArray を利用した Shader では SRP Batcher が有効なのか確認してみます 追加項目…

【Unity】Texture2DArray の Index はどの値のときにどうなるのか

Texture2DArray のテクスチャには以下のように Index を指定してテクスチャにアクセスするのですが、実際にどの値のときにどのテクスチャを参照するのか見てみます SAMPLE_TEXTURE2D_ARRAY(_BaseMapArray, sampler_BaseMapArray, uv, _Index) 以下のような T…

【Unity】URP12.1.8 のカスタマイズ用 Shader メモ

Shader を作成する際に、URPの中を探してコピーしてくるのが面倒だったので、基本的な Shader だけ抜き出して github にあげておきます 必要な際にご利用ください UnityURPShaderSample/URP12.1.8 at main · yayorozu/UnityURPShaderSample · GitHub

【Unity】Texture2DArray を作成するツール

テスト用の シンプルな Texture2DArray を作成するためのツール using UnityEditor; using UnityEngine; public class CreateTexture2DArrayEditor : EditorWindow { [MenuItem("Tools/CreateTexture2DArray")] private static void ShowWindow() { var wind…

【Unity】ArgumentOutOfRangeException: Count must be in the range of 0 to 1023.

Note: You can only draw a maximum of 1023 instances at once. ドキュメントにもあるように Graphics.DrawMeshInstanced で一度に生成できるインスタンス数の上限は 1023 となっており、1023を超える数を生成すると以下のエラーが表示される ArgumentOutOf…

【Unity】Graphics.DrawMeshInstanced を利用してみる

Graphics.DrawMeshInstanced は GPU Instancing を利用してメッシュを不要なゲームオブジェクトを作成するオーバーヘッドなしで メッシュを描画することができます 座標と Mesh、Material を指定するだけなのでかなりシンプルに利用することができます using…

【Unity】DrawMeshInstanced does not support the shader 'ShaderName' because it does not read any instanced properties. Try switching to DrawMeshInstancedProcedural if the shader is doing procedural instancing.

Graphics.RenderMeshInstanced を利用していたところ以下のエラーが出て原因を探していたところ DrawMeshInstanced does not support the shader 'ShaderName' because it does not read any instanced properties. Try switching to DrawMeshInstancedProce…

【Unity】Graphics.RenderMeshIndirect を利用してみる

Graphics.RenderMeshIndirect を利用することで、CPUを経由して描画するのではなく、GPUを直接利用して描画することができるため、大量の草などを軽く描画することができます 今回は10個の草を描画してみます 以下がスクリプトで、バッファを複数利用して描…

【Unity】GBuffer に書き込む内容を変更する

環境: Unity2021.3.16f1 URP12.0.8 hacchi-man.hatenablog.com こちらはすでにURPのカスタマイズができる状態にしてることを前提に話を進めます Unity の GBuffer の内容は以下のようになっており GBuffer0、ARGB32 フォーマット: ディフューズ色 (RGB)、オ…

【Unity】FullScreenShaderGraph で GBuffer を参照する

環境: Unity2022.2.b16, URP14.0.3 Exposed を false にした _GBuffer0, _GBuffer1, _GBuffer2 を Properties に定義する ことにより ShaderGraph で GBuffer を参照できるようになります Texture を参照する際も SampleTexture2D ノードを利用するだけで問…

【Unity】RendererFeature の Shader で GBuffer を利用する

環境: Unity2021.3.16f1, URP12.1.8 Shader 側で GBuffer + Depth を利用するためには、特にスクリプト側で設定する必要は無く、 _CameraDepthTexture _GBuffer0 _GBuffer1 _GBuffer2 を定義するだけで参照することができる Shader "Hidden/GBufferFullScree…

【Unity】あるオブジェクトを中心に回転させ、処理中に半径を変えられるスクリプト

hacchi-man.hatenablog.com 以前の処理では途中で半径を変えられなかったため、半径を変える処理を追加したものが以下になります using UnityEngine; public class RoundTarget : MonoBehaviour { [SerializeField] private Transform _center; [SerializeFi…

【Unity】JobSystems のエラー箇所を知る

デフォルトの設定では JobSystems 側でエラーログが発生したとしても以下のように細かい情報が表示されない System.IndexOutOfRangeException: Index {0} is out of range of '{1}' Length. This Exception was thrown from a job compiled with Burst, whic…

【Unity】JobSystem を使ってテクスチャを生成してみる

Jobsystem を利用すると処理時間が早くなるということなので、実際にメインスレッドと JobSystem でノイズテクスチャを生成してみました メインスレッド private void CreateTexture(int size) { var texture = new Texture2D(size, size, TextureFormat.RGB…

【Unity】一部メソッドで Physics.queriesHitBackfaces が動作しない

https://hacchi-man.hatenablog.com/entry/2023/01/14/220000hacchi-man.hatenablog.com 上記の記事で書いたように、Unity2021、2022では Physics.queriesHitBackfaces = true だとしても一部メソッドを除いて正しい挙動を行わない そのため、Unity2021、202…

【Unity】Raycast 時に MeshCollider の裏側でもヒットするようにする

Physics.queriesHitBackfaces を利用すれば Mesh の裏側から Ray を飛ばしてもヒットするとあったので試してみました 検証 処理はこちら、Physics.Raycast の前に Physics.queriesHitBackfaces = true をすることで裏面もヒットするようにしています private…

【Unity】TextMeshPro で一文字ずつ Animation させる

using System.Collections; using TMPro; using UnityEngine; [RequireComponent(typeof(TextMeshProUGUI))] public class TextMove : MonoBehaviour { [SerializeField] private float _interval = 0.25f; [SerializeField] private float _moveTime = 0.5f…

【Unity】Image で反射しているような表現をする

床に写ったような表現をさくっとできるコンポーネントを作成しました 現状一番下を0にしてもうっすらとは見えてしまうので、見えてしまう最大範囲を変える場合は対応が必要になります using System.Collections.Generic; using UnityEngine; using UnityEngi…

【Unity】Image の Outline っぽいものを作成する

BaseMeshEffect を用いて同じ画像をスケールを変えて複製することで Outline っぽいものを再現しています using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; [RequireComponent(typeof(Image))] public class OutlineImage : Bas…

【Unity】Perlin worms を試してみる

洞窟生成アルゴリズムとして利用されている (多分) Perlin worms を試してみたくて Unity で簡単なものを作成してみました 今回複数のフレーム をまたぐ処理がうまいこといかなかったのでそちらに関しては実装していません またシード固定のために Mathf.Per…

【Unity】ライトが強いと白飛びするのをなんとかしてみる【Deferred】

【環境】 Unity2021.3.16f1, URP12.1.8, Deferred 以前 は Forward で確認をしましたが、今回は Deferred でライトの白飛びをなんとかしてみます Deferred では Forward とはライトの処理箇所が異なっており、com.unity.render-pipelines.universal/Shaders/…

【Unity】ライトが強いと白飛びするのをなんとかしてみる【Forward】

【環境】 Unity2021.3.16f1, URP12.1.8, Forward 通常 Light の Intensity を大きくすれば遠くまで明るくできるが、近い部分がライトの色が強く反映されてしまう これを URP をカスタマイズすればなんとかできるんじゃないかと思ったのでやってみる URP のカ…

【Unity】URP をカスタマイズする

Library/PackageCache/com.unity.render-pipelines.universal@*.*.* を Packages/ 以下に移動することで URP をカスタマイズできるようになります フォルダ名は参照がある場合@があると既存のやつがエラーになるので com.unity.render-pipelines.universal …

【Unity】RendererFeature を利用した複数地点のソナー表現

https://hacchi-man.hatenablog.com/entry/2023/01/05/220000hacchi-man.hatenablog.com では1地点のみのソナー表現でしたが、Shader側に複数の座標パラメータを渡すことにより複数地点でのソナー表現ができるようになりました パラメータをセットするのは何…