MRが楽しい

MRやVRについて学習したことを書き残す

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

LinqのSelectManyを使って複数のリストを1つのリストにする

本日はC#の小ネタ枠です。 LinqのSelectManyを使って複数のリストを1つのリストにする方法を記事にします。 SelectMany SelectManyは複数の配列を1つの配列に平坦化します。 learn.microsoft.com // サンプルとして複数のリストを保持するリストを作成する L…

Unityで読み込み中のシーンをアンロードする

本日はUnityの小ネタ枠です。 読み込み中のシーンをアンロードする方法についてです。 シーンをアンロードする UnloadSceneAsync関数を使ってシーンをアンロードできます。 シーンはシーン名、シーンパス、ビルドインデックスで指定できます。 docs.unity3d.…

Unityで読み込み中の全てのシーンの参照を取得する

本日はUnityの小ネタ枠です。 Unityで読み込み中の全てのシーンの参照を取得する方法についてです。 全てのシーンの参照を取得する 読み込み中のシーンの参照を全て取得するにはSceneManager.sceneCount関数とSceneManager.GetSceneAt関数を利用します。 for…

Unityで編集(Editor)モードでもスクリプトのライフサイクル関数を実行する

本日はUnityの小ネタ枠です。 Unityで編集(Editor)モードでもスクリプトのライフサイクル関数を実行する方法についてです。 ExecuteAlways ExecuteAlways属性をクラスに設定するとスクリプトが編集モードと再生モード時の両方で実行されるようになります。 d…

TortoiseGitとGitHubのSSH接続の認証を設定する

本日はTortoiseGitとGitHubの小ネタ枠です。 TortoiseGitとGitHubのSSH接続の認証を設定する手順を記事にします。 SSHの秘密鍵と公開鍵の作成 初めにSSHの秘密鍵と公開鍵を作成します。 今回はPuTTYgenを使って作成を行いました。 PuTTYgenを起動し、[Genera…

Windows11環境で右クリックからTortoiseGitの全てのメニューを表示する

本日はWindowsとTortoiseGitの小ネタ枠です。 Windows11環境で右クリックからTortoiseGitの全てのメニューを表示する方法についてです。 Windows11環境の右クリックメニュー 最新のWindows11環境ではエクスプローラ上の右クリックで表示されるメニューがカテ…

Unityで同じオブジェクトに同一のスクリプトを複数設定できないようにする

本日はUnityの小ネタ枠です。 Unityで同じオブジェクトに同一のスクリプトを複数設定できないようにする方法についてです。 DisallowMultipleComponent DisallowMultipleComponent属性を利用すると同じオブジェクトに2つ以上同一のコンポーネントを設定でき…

UnityのInspectorでEnum値の選択値を一部表示しない

本日はUnityの小ネタ枠です。 UnityのInspectorでEnum値の選択値を一部表示しない方法についてです。 InspectorNameAttribute Enum型でInspectorNameAttribute属性を使用するとInspectorに表示される項目名を変更できます。 空文字を指定することで項目自体…

Unityのスクリプトにアイコンを設定する

本日はUnityの小ネタ枠です。 Unityのスクリプトにアイコンを設定する方法についてです。 IconAttribute クラスにIconAttribute属性を設定して、UnityEditor上で表示される各種アイコンを指定できます。 docs.unity3d.com サンプルコード 作成したスクリプト…

UnityのInspectorビューのフィールド入力をエンターキーを入力したタイミングで確定させる

本日はUnityの小ネタ枠です。 UnityのInspectorビューのフィールド入力をエンターキーを入力したタイミングで確定させる方法です。 DelayedAttribute DelayedAttributeを指定すると、float/int/string型のフィールドはエンターキーを押したとき、またはフィ…

UnityのInspectorビューでスライダーを使って数値を入力する

本日はUnityの小ネタ枠です。 UnityのInspectorビューでスライダーを使って数値を入力する方法です。 Inspectorでスライダー操作を使って値を入力する Inspectorでフィールドの値をスライダーで入力したい場合はRange属性を利用します。 [SerializeField, Ra…

UnityのInspectorビューで自作クラスのリストの見出しを表示する

本日はUnityの小ネタ枠です。 UnityのInspectorビューで自作クラスのリストの見出しを表示する小ネタを記事にします。 自作クラスのリストの見出しを表示する Inspectorビューで自作クラスのリストの見出しを表示するには自作クラスの先頭の変数をstring型に…

MRTKv2.xを使ってMetaQuest3向けのUnityプロジェクト作成を行う その12(ボタンを押したコントローラにメニューを追従させる)

本日はMetaQuest3の技術調査枠です。 MRTKv2.xを使ってMetaQuest3向けのUnityプロジェクト作成を行う手順を記事にします。 本記事はボタンを押したコントローラにメニューを追従させる方法です。 前提条件 以下の記事で作成したサンプルスクリプトとUnityプ…

MRTKv2.xを使ってMetaQuest3向けのUnityプロジェクト作成を行う その11(コントローラのボタンの長押しを検知する)

本日はMetaQuest3の技術調査枠です。 MRTKv2.xを使ってMetaQuest3向けのUnityプロジェクト作成を行う手順を記事にします。 本記事はコントローラのボタンの長押しを検知する方法です。 前提条件 以下の記事で作成した Unity プロジェクトを基に設定を行いま…

C#でDateTimeとTimeSpanを使って時刻の計算を行う

本日はC#の小ネタ枠です。 DateTimeとTimeSpanを使って時刻の計算を行う方法についてです。 DateTimeとTimeSpan DateTime構造体は特定の時点を表します。通常、日時形式で表されます。 learn.microsoft.comDateSpan構造体は時間間隔を表します。 例えば、あ…

File.Create後にアクセスエラーが発生する問題の対処

本日はC#の小ネタ枠です。 File.Create後にアクセスエラーが発生する問題の対処です。 発生エラー 例えばFile.Createでファイルを生成した直後にFile.Deleteでファイルを削除しようとすると以下のIOExceptionが発生します。 IOException: The process cannot…

Unityで半透明のImageオブジェクトを使ってUIの操作を遮蔽する

本日はUnityの小ネタ枠です。 Unityで半透明のImageオブジェクトを使ってUIの操作を遮蔽する方法についてです。 半透明のImageオブジェクトを作成する 以下のボタンを押下するとTextメッセージが変化するサンプルシーンを作成しました。 ここに、右クリック…

複数選択できるEnum値のEnumFlagsFieldでスクリプトから一部のフラグを有効/無効を切り替える

本日はUnityの小ネタ枠です。 複数選択できるEnum値のEnumFlagsFieldでスクリプトから一部のフラグを有効/無効を切り替える方法についてです。 EditorGUILayout.EnumFlagsField EnumFlagsFieldを使うと、列挙型の全ての値に対する選択が可能なメニューが作成…

MRTKv2.xを使ってMetaQuest3向けのUnityプロジェクト作成を行う その10(コントローラに追従するメニューを作る)

本日はMetaQuest3の技術調査枠です。 MRTKv2.xを使ってMetaQuest3向けのUnityプロジェクト作成を行う手順を記事にします。 本記事はコントローラに追従するメニューを作る方法です。 前提条件 以下の記事で作成した Unity プロジェクトを基に設定を行います…

UnityのInspectorビューでEnumを複数選択できるフィールドを作る

本日はUnityの小ネタ枠です。 UnityのInspectorビューでEnumを複数選択できるフィールドを作る方法についてです。 EditorGUILayout.EnumFlagsField EnumFlagsFieldを使うと、列挙型の全ての値に対する選択が可能なメニューが作成できます。 選択肢には"Nothi…

環境構築手順 UniRxとUniTask編 (OpenUPMを利用する場合)

本日は環境構築の手順枠です。 Unityプロジェクトに UniRx と UniTask をインポートする手順を記事にします。 UniTask UniTask は Unity に最適化されたタスク処理を行う「UniTask」を提供するC#ライブラリです。 github.com UniRx UniRx は Unity に最適化…

VContainerのHelloWorldを試す その10(非同期のエントリポイントを作成する)

本日は VContainer の小ネタ枠です。 VContainerで非同期のエントリポイントを作成する非同期のエントリポイントを作成する方法を記事に残します。 前回記事 以下の前回記事の続きです。 bluebirdofoz.hatenablog.com IAsyncStartable VContainerとUniTaskの…

VContainerのHelloWorldを試す その9(Resolveを使って登録されたインスタンスを参照する)

本日は VContainer の小ネタ枠です。 VContainerでResolveを使って登録されたインスタンスを参照する方法を記事に残します。 サンプルシーン 子となる LifetimeScope からResolveを使って親の LifetimeScope で登録されたインスタンスを参照するサンプルを作…

VContainerのHelloWorldを試す その8(特定のパラメータを指定してクラスを登録する)

本日は VContainer の小ネタ枠です。 VContainer でクラスを登録する際に特定のパラメータを指定してクラスを登録する方法を記事に残します。 WithParameter 登録時にWithParameterを使用することで型が一意でないパラメータを挿入できます。 vcontainer.had…

UniRxのSwitchを使ってObservableを切り替える

本日はUniRxの小ネタ枠です。 UniRxのSwitchを使ってObservableを切り替える方法を記事にします。 前提条件 UniRxの環境構築手順は以下の記事を参照ください。 bluebirdofoz.hatenablog.com Switchを使ってObservableを切り替える Switchオペレータを使うと…

相対ファイルパスから絶対パスのURIを取得する

本日はC#の小ネタ枠です。 相対ファイルパスから絶対パスのURIを取得する方法を記事にします。 相対ファイルパスから絶対パスのURIを取得する URIクラスは生成時にUriKindを指定して相対パスまたは絶対パスのURIを生成できます。 learn.microsoft.com相対パ…

UnityのAndroid Logcatを使ってMetaQuest3のアプリログを表示する

本日はMetaQuest3の小ネタ枠です。 UnityのAndroid Logcatを使ってMetaQuest3のログを表示する方法を記事にします。 Android Logcat Android Logcat パッケージは Android 端末のログメッセージを Unity エディターに表示するためのパッケージです。 利用に…

MRTKv2.xを使ってMetaQuest3向けのUnityプロジェクト作成を行う その9(背景の透過度を変更する)

本日はMetaQuest3の技術調査枠です。 MRTKv2.xを使ってMetaQuest3向けのUnityプロジェクト作成を行う手順を記事にします。 本記事は背景の透過度を変更する手順です。 前提条件 以下の記事で作成した Unity プロジェクトを基に設定を行います。 bluebirdofoz…

MRTKv2.xを使ってMetaQuest3向けのUnityプロジェクト作成を行う その8(コントローラのボタン押下時のアクションを設定する)

本日はMetaQuest3の技術調査枠です。 MRTKv2.xを使ってMetaQuest3向けのUnityプロジェクト作成を行う手順を記事にします。 本記事はコントローラのボタン押下時のアクションを設定する手順です。 前提条件 以下の記事で作成した Unity プロジェクトを基に設…

MRTKv2.xを使ってMetaQuest3向けのUnityプロジェクト作成を行う その7(システムキーボードを利用する)

本日はMetaQuest3の技術調査枠です。 MRTKv2.xを使ってMetaQuest3向けのUnityプロジェクト作成を行う手順を記事にします。 本記事はシステムキーボードを利用する手順です。 前提条件 以下の記事で作成した Unity プロジェクトを基に設定を行います。 記事そ…