はなちるのマイノート

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

Unity

【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 はじめに 概要 環境 インストー…

【Unity】UnityアプリをAndroid実機で動作させ、Android Studioのlogcatを利用してログを確認する方法

はじめに UnityアプリをビルドしてAndroidでデバッグする際に、ログを調べたい場合もあるでしょう。そんなときにAndroid StudioのLogcatを利用することでログを確認することができます。 Logcatが動作している様子UnityEngineのDebug.Log等を確認している様…

【Unity】Unity Package Manager(UPM)が認識する自作Packageを作成し、git経由でインストールできるまで整える

はじめに 今回は自作パッケージを作成しPackageManagerのAdd package from git URLからインストールできるようにする手法について紹介したいと思います。 実際にインストールしている様子 はじめに カスタムパッケージの作成 ファイル・フォルダを生成する …

【Rider】InlineErrorという拡張機能を入れて警告やエラーメッセージをコードの右側に表示させる(常に表示されるので便利)

はじめに 今回はInlineErrorというRiderの拡張機能について紹介したいと思います。 実装に動作させている様子plugins.jetbrains.com はじめに 概要 インストール手順 概要 InlineErrorというRider拡張機能を利用することで、警告やエラーのメッセージをコー…

【Rider】nullになることを示す[CanBeNull]・ならないことを示す[NotNull] と 値解析モードによる挙動の違いについて

はじめに 今回は[CanBeNull]と[NotNull]、またそれらに対する挙動を設定できる値解析モードについて取り上げたいと思います。pleiades.io // 値解析モードによる挙動の違いについてのサンプル var sample = new Sample(canBeNullObj: null, notNullObj: null…

【Unity】コマンドラインからバッチモードでstaticメソッドを実行する方法

はじめに 今回はコマンドラインからUnityを操作する方法について紹介したいと思います。 コマンドラインから実行している様子docs.unity3d.com はじめに 概要 コマンドについて Unityのパスを指定 -quit -batchmode -nographics -projectPath -executeMethod…

【Unity】asmdefで"必須パッケージ"と"任意パッケージ"を定義する方法

はじめに 今回はasmdefで必須パッケージと任意パッケージを定義する方法について紹介をしたいと思います。 任意パッケージのサンプル(左)と必須パッケージのサンプル(右) はじめに その前に やり方 必須パッケージのやり方 任意パッケージのやり方 その前に …

【C#】BitConverter.GetBytesはbyte配列が生成されてしまうので、極力BitConverter.TryWriteBytesを利用してAllocation削減する

はじめに 今回はBitConverter.GetBytesとBitConverter.TryWriteBytesに焦点をあててAllocationについて書きたいと思います。learn.microsoft.com learn.microsoft.com はじめに 概要 BitConverter.TryWriteBytesを利用する 利用サンプル1 利用サンプル2 参考…

【C#】CallerMemberName, CallerFilePath, CallerLineNumberを用いてメソッドの呼び出し元の情報を取得する(メソッド名またはプロパティ名, パス, 行番号)

はじめに 今回はメソッドの呼び出し元情報を取得できるようになる3つの属性(CallerMemberName・CallerFilePath・CallerLineNumber)を紹介したいと思います。 はじめに 概要 CallerFilePath CallerLineNumber CallerMemberName 使い方 実験 概要 CallerMember…

【Unity】Unity.Collections.xxHash3.StreamingStateを利用してデータ少しずつ入力しながらハッシュ値を計算する

はじめに 前回xxHash3.Hash64とxxHash3.Hash128を紹介したのですが、今回はいくつかのデータをそれぞれ計算した後にハッシュ値を取得できるxxHash3.StreamingStateを紹介したいと思います。 www.hanachiru-blog.com // サンプルコード // 128bits xxHash3.St…

【Unity】Unity公式のハッシュアルゴリズムxxHash3がCollectionsパッケージに入っているので使ってみる

はじめに 今回はUnity公式のxxHash3について紹介をしたいと思います。 public void Start() { // unmanagedなHeap確保 NativeArray<byte> input = new NativeArray<byte>(10000, Allocator.Temp, NativeArrayOptions.UninitializedMemory); for (var i = 0; i < input.Le</byte></byte>…

【C#】C#9.0から導入された静的匿名関数(Static anonymous functions)を利用して状態のキャプチャを禁止する

はじめに 今回はC#9.0から導入された静的匿名関数(Static anonymous functions)について取り上げたいと思います。 learn.microsoft.com はじめに 概要 参考 概要 ラムダおよび匿名メソッドに対して ' static ' 修飾子を許可します。これにより、含まれるスコ…

【Unity】Application.logMessageReceivedを用いてUnityのログメッセージが発行されたときに処理を行う

はじめに 今回はUnityのログメッセージが発行されたときに処理を挟むことができるApplication.logMessageReceivedについて取り上げたいと思います。 ログメッセージが発行されたときに受信するためのイベントハンドラーこのイベントはメインスレッドでのみ動…

【Unity】エディタ拡張でPrefabStageUtilityを用いてPrefab ModeでPrefab Assetを開いたりPrefab stageを取得したりする

はじめに 今回はUnityEditor.SceneManagement.PrefabStageUtilityを用いて、Prefab Modeでアセットを開いたり、Prefab stageを取得したりする記事になります。docs.unity3d.com PrefabStageUtility.OpenPrefabを実行した様子 はじめに 概要 PrefabStageUtili…

【C#】MemoryMarshal.Castを利用してある型の配列を他の型の配列に変換をする

はじめに 今回はMemoryMarshal.Castについて取り上げたいと思います。learn.microsoft.com // int[]からbyte[]に変換を行うサンプルコード // 変換前:int[] (intは4バイト) Span<int> from = Enumerable.Range(int.MaxValue - 5, 5).ToArray(); // 変換後:byte[</int>…

【Rider】メソッド抽出(extract method)というリファクタリング機能がとても便利

はじめに 今回はメソッド抽出(extract method)というRiderのリファクタリング機能について紹介したいと思います。pleiades.io メソッドの抽出をしている様子 はじめに 概要 やり方 メソッドの抽出 ローカル関数の抽出 概要 Riderのメソッド抽出を利用するこ…

【Unity】UnityEngine.Scripting.PreserveAttributeを用いてストリッピングを防止する(実は独自PreserveAttributeでも対応可)

はじめに 今回はPreserveAttribute属性を用いてストリッピングを防止する方法について紹介したいと思います。 docs.unity3d.com はじめに 概要 使い方 実験 UnityEngine.dllに依存しないために 概要 まずはコードストリッピングについて概要を載せておきます…

【Unity】エディタ上でBuilt-inに存在するアイコンのTextureを取得する方法

はじめに 今回はUnityEditorにビルドインで存在するアイコンのTextureを取得する方法を紹介したいと思います。 アイコンを使用している様子 はじめに やり方 やり方 EditorGUIUtility.Loadを用いてbuilt-inリソースを読み込みます。 public static Object Lo…

【Unity】Unity Test Frameworkでログ出力のテストをする方法(特にDebug.LogError, Debug.LogException)

はじめに 今回はログ出力のテスト方法について紹介をしようと思います。 ログ出力をしている例 はじめに 概要 テスト方法 概要 Unity Test FrameworkではDebug.LogErrorやDebug.LogExceptionが実行されるとテストが失敗になる仕様にデフォルトでなっています…

【Unity】コンパイル後のdllに対してリフレクションを利用せずにasmrefを使ってinternalにアクセスする方法(必ずできるわけではない)

はじめに 今回はコンパイル後のdllに対してリフレクションを利用せずにasmrefを使ってinternalにアクセスする方法について紹介したいと思います。この記事を見ている方ならasmrefについての説明は大丈夫かと思いますが、一応前書いておいた記事を貼っておき…

【Unity】エラー発生時にシーンの再生を一時停止する方法

はじめに 今回はConsoleウィンドウのError Pauseについて紹介をしたいと思います。 スクリプトから Debug.LogError が呼び出されるたびに再生を一時停止します。実行の特定の時点で再生をフリーズし、シーンを検査したい場合に便利です。Debug.Log が呼び出…

【Rider】AI Assistantで日本語でやり取りをする方法

はじめに Rider 2023.2 EAP 6がリリースされ、AI Assistantが導入されました。以下概要とAI Assistantを利用するための手順記事。AI Chatのやり方も記載しています。 www.hanachiru-blog.com最初触った感じAI chatは英語だけ対応しているのかなと思ったので…

【Rider】AIにコミットメッセージを記載してもらう方法

はじめに Rider 2023.2 EAP 6からAI Assistantが実装されました。導入方法と概要は以下の記事にまとめています。www.hanachiru-blog.comその中でもCommit messages generationというAIがコミットメッセージを考えてくれる機能にフォーカスを当てて紹介したい…