うにてぃブログ

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

2023-01-01から1年間の記事一覧

【Unity】Bloom 効果を RenderTexture で正しく反映させる方法

Scene 上のオブジェクトには Bloom 効果がかかっているのに、RenderTexture を利用した際に Bloom 効果が反映されないことがあるという現象が起きました。 この問題を解決するために、以下のコードを使用しテストを行いました。 using UnityEngine; using Un…

【Unity】TextMeshPro を利用した Prefab の Addressables 対応時の問題

Unity で TextMeshPro を使用する際に、フォントアセットを Addressable に対応させない場合、各 UI のバンドルにフォントデータが含まれ、バンドルのサイズが大きくなってしまいます。 一方で、フォントアセットを Addressable に対応させた場合は、フォン…

【Unity】TextMeshProのフォントを Addressable で利用する

Addressable ロードの問題とその解決方法 TextMeshProのフォントとMaterial PresetをデフォルトおよびカスタマイズしたUIをAddressableを利用してロードする際に、Addressableの設定によって発生する問題についてご紹介します。 まず、以下の画像では、カス…

【Unity】アセットのタイプに応じたアイコンの取得方法

Unityでは、アセットのアイコンを取得するために AssetDatabase.GetCachedIcon を利用できます。ただし、このメソッドを使用するにはアセットのパスが必要です。アセットのタイプだけでアイコンを取得したい場合、以下のような処理を利用することができます…

【エラー】 UnityEngine.AddressableAssets.InvalidKeyException: Exception of type 'UnityEngine.AddressableAssets.InvalidKeyException' was thrown. No Location found for Key=GUID

UnityEngine.AddressableAssets.AssetReference を利用している際に UnityEditor 上では動作したがビルドして確認してみると以下のエラーでロードできなかった UnityEngine.AddressableAssets.InvalidKeyException: Exception of type 'UnityEngine.Addressa…

【Unity】Broken text PPtr in file(***.controller). Local file identifier (-7404026014276284922) doesn't exist!【Error】

アセットバンドルのビルド時に、以下のエラーが発生しビルドすることができなくなりました Broken text PPtr in file(Hoge.controller). Local file identifier (-7404026014276284922) doesn't exist! 実際に内部を見てみると、対象のアセット参照をもった …

【Unity】Asset の Version を強制的に更新する

Unityのバージョンをアップデートすると、アセットの設定が変更されることがあります(serializedVersionが更新されることがあります)。 基本的に、アセットのメタファイルが差分があるときに更新される際に、その設定が変更されている場合は、設定も同時に…

【Unity】Addressables のカタログに対象のアドレスが含まれるかどうかを調べる

public static async UniTask<bool> Contains(string address) { var opHandle = Addressables.LoadResourceLocationsAsync(address); await opHandle; if (opHandle.Status == AsyncOperationStatus.Succeeded && opHandle.Result != null && opHandle.Result.Cou</bool>…

【Unity】Addressable でディレクトリにアドレスを設定する意味

Addressable ではディレクトリにアドレスを設定することができる しかし、実際にそのアドレスをロードしようとすると、次のエラーが出てしまいます UnityEngine.AddressableAssets.InvalidKeyException: Exception of type 'UnityEngine.AddressableAssets.I…

【Unity】Addressable で「Use Existing Build」の際に Local Group はAddressable からロードするようにする

Addressable では 「Use Existing Build」の場合ローカルとリモートのグループともにカタログに記載されていなればロードできない しかし、ローカルグループの量が多かったりするとテストのたびにローカルのビルドをするのは時間がかかってしまいます そのた…

【Unity】Addressables Group BuildPath・LoadPath をスクリプトから変更する

var settings = AddressableAssetSettingsDefaultObject.Settings; var schema = settings.DefaultGroup.GetSchema<BundledAssetGroupSchema>(); // Remote のパスを設定 schema.BuildPath.SetVariableByName(settings, AddressableAssetSettings.kRemoteBuildPath); schema.LoadPath.</bundledassetgroupschema>…

【Unity】Insecure connection not allowed【Error】

Unity 2022以降 Addressable でリモートのバンドルをロードする際にデフォルトの設定だと リモートからカタログやバンドルをロードする際に以下のエラーが発生する Non-secure network connections disabled in Player Settings Insecure connection not all…

【Unity】Addressable の Path を動的に変更する

Addressable の Path には Static なクラスの参照をもたせることができる 例えば以下のクラスのパスで置き換えたい場合は public static class AddressableUtil { public static string LoadPath; } このように記述すればカタログのロード時に置き換えること…

【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】Vignette ImageEffect【ShaderGraph】

Unity PostProcessing の Vegnette Shader を参考に ImageEffect で利用できる ShaderGraph を作成しました パラメータは以下になります こちらからDLして利用してください

ポストプロセス処理一覧

ブルーム デプスオブフィールド 色補正 トーンマッピング アンビエント・オクルージョン モーションブラー クロマキー レンズフレア ノイズとグレイン ビネット アンチエイリアシング レンズディストーション フォグ SSR(Screen Space Reflections) SSAO(…

【C#】整数値を特定の方法で変換してアルファベット列として返す処理

private string GetNumberName(int num) { string result = ""; while (num >= 0) { result = (char)(num % 26 + 'A') + result; num = num / 26 - 1; } return result; } // A GetNumberName(0) // Z GetNumberName(25) // AA GetNumberName(26) // MHYV Ge…

【Unity】SceneView をクリックした場所のオブジェクト一覧を取得する

HandleUtility.PickGameObject を利用すれば対象位置のオブジェクトを取得できますが、すべて取得できません そのため、Ignoreに取得したオブジェクトを詰め込むことですべてのオブジェクトを取得することができます using System.Collections.Generic; usin…

【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】UnityEditor 上で指定した URL から画像を取得して保存する処理

#if UNITY_EDITOR using System.IO; using System.Collections; using Unity.EditorCoroutines.Editor; using UnityEditor; using UnityEngine; using UnityEngine.Networking; public static class DownloadAndSaveImageEditor { // URLから画像をダウンロ…

【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…

【C#】文字列から一意の数字を生成する

C#

ハッシュを利用することにより、文字列から一意の数字を生成することができます using System.Security.Cryptography; using System.Text; public static class Utility { public static int StringToInt(string input) { using (var sha256 = SHA256.Create…

【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…