はなちるのマイノート

Unityをメインとした技術ブログ。自分らしくまったりやっていきたいと思いますー!

Unity

【Unity】UnityEditor上でプロジェクト直下やPackagesやUserSettingsやLogsといったパスをPath.Combineで取得する(System.Environment.CurrentDirectoryを使ってはダメ)

はじめに 今回はUnity Editor上でプロジェクト直下・Packages・UserSettings・Logsといったパスの取得方法を紹介したいと思います。 利用している様子 はじめに やり方 Application.dataPathについて やり方 以下はUnity Editor上での取得方法です。 // コメ…

【Unity】GameCIを用いてUnityのCI 環境をGitHub Actions上に構築し、Test Frameworkを実行&結果をアップロードする方法

はじめに 今回はGameCIを用いてUnityのCI 環境をGitHub Actions上に構築し、Test Frameworkを実行&結果をアップロードする方法を紹介したいと思います。github.com具体的には以下の2つを紹介します。 GameCIを利用するための設定方法 TestFrameworkをGitHub …

【Unity】Unity公式パッケージ「Code Coverage」を利用してTest Frameworkのコードカバレッジを計測する

はじめに 今回はUnity公式パッケージであるCode Coverageを利用してTest Frameworkで実行したテストのコードカバレッジを計測する方法を紹介したいと思います。docs.unity3d.com 実際に生成したレポート はじめに Code Coverageとは 概要 環境 インストール…

【Unity】ランタイムでEnvironment.CurrentDirectory(作業ディレクトリ)を変更できるが終了前にProject直下に戻さないとダメ

はじめに System.Environment.CurrentDirectoryをランタイムで変更させられることに気づきました。そのことについて書きたいと思います。 変更している様子 はじめに 説明 説明 public class Sample : MonoBehaviour { private void Start() { // MacのUnity…

【Unity】UnityTestFramework上でパフォーマンス測定ができるPerformance Testing Packageの基礎的な使い方

はじめに 今回はPerformance Testing PackageというUnity Test Framework向けのパフォーマンス計測機能を提供するパッケージを紹介したいと思います。 The Unity Performance Testing Package extends Unity Test Framework with performance testing capabi…

【Unity】Unity Test Frameworkで特定の例外がスローされることをAssertする方法(Assert.Throws, Assert.Catch, Throws.TypeOf, Throws.InstanceOf)

はじめに 今回はUnity Test Frameworkでエラーのテストをする方法について紹介したいと思います。docs.nunit.org はじめに Assert.Throws Assert.Catch Assert.Thatを利用する 小ネタ Assert.Throws Assert.Throwsを利用することで特定の例外がスローされる…

【Unity】System.Text.Json v8.0.1をUnityで動かすまでの手順

はじめに 今回はSystem.Text.Jsonのv8.0.1をUnityで動作させる手順について紹介したいと思います。またSystem.Text.JsonをUnityの型に対応させる記事を前に書いたので、気になる方はそちらもチェックしてみてください。 engineering.dena.com はじめに その…

【Unity】ProjectWindowのエディタ拡張で色をつける際に色が暗くなってしまう問題の対処法

はじめに EditorApplication.projectWindowItemOnGUIを利用することでProject Windowに色をつける事ができます。 public static class ProjectWindowColorizer { [InitializeOnLoadMethod] private static void Init() { EditorApplication.projectWindowIte…

【Unity】「Ignoring depth surface load action as it is memoryless」というエラーについて(Mac &MetalでScreenCapture.CaptureScreenshotを利用すると発生)

はじめに Ignoring depth surface load action as it is memorylessというエラーについて備忘録の意味合いも兼ねて書き残しておきたいと思います。 Ignoring depth surface load action as it is memoryless エラーが出ている様子 はじめに 概要 参考 概要 …

【Unity】Unityが利用しているMicrosoft.CodeAnalysis.CSharpのバージョンの確認方法(Mac)

はじめに 今回はUnityが利用しているMicrosoft.CodeAnalysis.CSharpのバージョンの確認方法を紹介したいと思います。Roslyn AnalyzerやSource Generatorを利用する場合はMicrosoft.CodeAnalysis.CSharpのバージョンによって利用できるバージョンが異なるため…

【Unity】エディタ拡張でスクリプトからテキストエディタを開く方法(InternalEditorUtility.OpenFileAtLineExternal)

はじめに 今回はスクリプトからテキストエディタを開く方法について紹介をしたいと思います。 はじめに 概要 使い方 さいごに 概要 公式ドキュメントに記載はないのですが、UnityCsReference(中のコード)をみるとInternalEditorUtilityクラスなるものが定義…

【Unity】マネージプラグインのGeneral設定項目について(Auto Reference, Validate References)

はじめに 今回はマネージプラグインのGeneral/Validate References設定項目について書きたいと思います。 マネージプラグインのGeneral はじめに その前に マネージプラグインとネイティブプラグイン プラグインのGeneral設定項目 Auto Referenceとは Valida…

【Unity】UnityWebRequestでBASIC認証をする方法

はじめに 今回はUnityWebRequestでBASIC認証をする方法について紹介をしたいと思います。docs.unity3d.com はじめに 概要 実験 概要 UnityWebRequestにヘッダー情報を追加するためにはUnityWebRequest.SetRequestHeaderを利用します。 public void SetReques…

【Unity】コマンドラインからUnity Test Frameworkのテストを実行する

はじめに 今回はコマンドラインからUnity Test Frameworkを実行する方法について紹介したいと思います。 はじめに やり方 -testResults -testPlatform さいごに やり方 まずはMacでEditorModeのテストをなるべくシンプルに実行してみたいと思います。Unityの…

【Unity】System.Text.JsonでUnityEngine.Colorのシリアライズ・デシリアライズに対応する

はじめに 今回はUnityEngine.ColorをSystem.Text.Jsonでシリアライズ・デシリアライズできるようにする方法を紹介したいと思います。learn.microsoft.com はじめに 環境 概要 コード さいごに 環境 Unity2023.1.17f1 MacBook Pro 2023 16inch, Apple M2 Pro …

【Unity】BuildOptions.CleanBuildCacheが有効かどうかをEditor.Logから見分ける方法

はじめに 今回はBuildOptions.CleanBuildCacheが効いているどうかを判定する方法について紹介したいと思います。docs.unity3d.com www.hanachiru-blog.com はじめに 環境 概要 調べ方 環境 Unity 2022.3.8f1 概要 インクリメンタルビルドパイプラインを使用…

【C#, Unity】Test FrameworkにてType判定するときのIs.TypeOfとIs.InstanceOfの挙動の違いについて

はじめに 今回はNUnit.Framework.Is.TypeOfとNUnit.Framework.Is.InstanceOfで挙動が異なることについて書きたいと思います。 private abstract class HogeBase { } private class Hoge : HogeBase { } [Test] public void SampleTestSimplePasses() { Hoge …

【Unity】Object.FindObjectsOfTypeを高速化したObject.FindObjectsByTypeを用いてシーン中に存在する指定された型のオブジェクトを全て列挙する

はじめに 今回はObject.FindObjectsByTypeを紹介したいと思います。docs.unity3d.com はじめに 対応バージョン 概要 利用例 参考 対応バージョン Unity 2020.3.4 or later Unity 2021.3.18 or later Unity 2022.2.5 or later 概要 Object.FindObjectsByType…

【Unity】gree/unity-webviewを用いてUnityでWebViewを実装する

はじめに 今回はgree/unity-webviewというgreeがOSSとして公開しているWebViewをUnityアプリ上で表示するプラグインを紹介します。 unity-webview is a plugin for Unity 5 that overlays WebView components on Unity view. // DeepL翻訳 unity-webviewはUn…

【Unity】Debug.Logはもう古い!? Unity公式のLoggingパッケージ「Unity Logging」の使い方まとめ

はじめに これはUnity Advent Calendar 2023の15日目の記事です。 qiita.com この記事ではUnity公式のLoggingパッケージであるUnity Loggingを紹介したいと思います。 はじめに 概要 導入 環境 基本的な使い方 LogLevel ログ出力 Default Configure Custom C…

【Unity】ContentSizeFitterとLayoutGroupを利用してScrollViewの縦(横)スクロールを実装する

はじめに 今回は以下のGifのような縦(VerticalとHorizontalを入れ替えれば横)スクロールのScroll Viewの実装してみようという記事になります。 実際に動作させている様子 やり方 Hierarchy上で右クリックをし、UI > Scroll Viewを選択します。 Scroll Viewを…

【Unity】TypeCacheを用いて"特定の属性でマークされている型やメソッド" や "特定のクラスやインターフェイスから派生する型"に素早くアクセスする

はじめに 今回はTypeCacheを用いて"特定の属性でマークされた型の一覧"や”特定のクラスやインターフェースから派生する型"をリフレクションよりも高速に取得する方法について紹介したいと思います。docs.unity3d.com はじめに 概要 使い方 TypeCache.GetFiel…

【Unity】UI Toolkitの公式ドキュメントのGetting Startedをやったメモ

はじめに 今回は新しいUIシステムであるUI Toolkitについて取り上げたいと思います。 今回作るUIこの記事は以下のUI Toolkitの導入記事の自分向けの備忘録になります。見づらいですし、公式ドキュメントを見た方が正確な情報が書いてありますのであしからず…

【Unity】UI ToolkitのVisualElement.Query<T>とVisualElement.Q<T>の違いについて

はじめに UI ToolkitではVisual TreeからVisualElementを検索するためにUQueryを利用しますが、クエリメソッドとしてQとQueryがあります。今回はその違いについて取り上げたいと思います。 はじめに 概要 詳細 概要 Queryは該当する全てのVisualElementの情…

【Unity】UI ToolkitにてC#スクリプトからStylesを適応する

はじめに 今回はUI ToolkitのVisualElementに対してC#スクリプトからスタイルを適応する方法について紹介したいと思います。 はじめに やり方 VisualElement.styleを利用する Unity style sheet(USS)を追加する 参考 やり方 VisualElement.styleを利用する V…

【Unity】UI Toolkitにて入れ子構造となっているデータをTreeViewで表現する方法(ファイルとディレクトリのような入れ子構造)

はじめに 今回はUI Toolkitにて以下の画像のような要素が入れ子になっているようなTreeViewを作成してみる記事になります。 動作させている様子↓TreeViewの公式ドキュメントの説明 docs.unity3d.comdocs.unity3d.com はじめに 概要 やり方 UXMLを記述する(UI…

【Rider】Riderで改行コード(CRLFとLFとCR)の設定方法(新規ファイル, 開いているファイル, 指定したファイル・ディレクトリ)

はじめに 今回はCRLF・LF・CRの違いとRiderでの設定方法について取り上げたいと思います。 はじめに 改行コード Riderでの設定方法 新規ファイルに対しての適応方法 現在開いているファイルに対して改行コードを変更する 指定したファイルやディレクトリ内の…

【Unity】PackageManager.Clientを利用してC#スクリプトを通してPackageManagerを操作する

はじめに 今回はPackageManagerのスクリプティングAPIについて取り上げたいと思います。docs.unity3d.com はじめに 概要 使い方 LogLevel Add AddAndRemove List Embed Remove Resolve 参考 概要 PackageManagerを操作するためにはPackageManager.Clientクラ…

【Unity, C#】System.Environment.GetCommandLineArgsとSystem.CommandLineを用いてコマンドライン引数にて配列を受け取る方法

はじめに 今回はUnityのコマンドライン引数にて配列を受け取る方法を紹介したいと思います。 // 「-- hoge aaa --hoge bbb --hoge ccc」もしくは「--hoge aaa bbb ccc」のようにコマンドライン引数を受け取れる $ /Applications/Unity/Hub/Editor/2022.3.8f1…

【Unity】公式パッケージ「Android Logcat」を利用してAndroidデバイスからのスタックトレースやログなどのメッセージをUnity Editorに表示する

はじめに 今回はAndroid端末からスタックトレースやログなどのメッセージをUnity Editorに表示することができる公式パッケージ「Android Logcat」を紹介したいと思います。 Android Logcatが動作している様子docs.unity3d.com はじめに 概要 環境 インストー…