MRが楽しい

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

Unityでエディター再生中にプログラムを変更してもコンパイルされないようにする

本日は Unity の小ネタ枠です。
Unityでエディター再生中にプログラムを変更してもコンパイルされないようにする方法についてです。

Script Changes While Playing

[Script Changes While Playing]設定ではエディター再生中にスクリプトを変更した際の動作を設定できます。
メニューから[Edit -> Preferences]を開き、[General]タブから変更できます。

docs.unity3d.com

各種設定

それぞれ設定時の動作は以下の通りです。

Recompile And Continue Playing

本設定はエディター再生中にスクリプトを変更すると、再生を継続したままコンパイルが実行されます。
スクリプトシリアライズ不可能なデータに依存している場合はエラーが発生する可能性があります。
本設定がデフォルト設定になります。

Recompile After Finished Playing

エディター再生中にスクリプトを変更しても、エディターを停止するまでコンパイルは実行されません。
エディターを停止するとコンパイルが実行されます。

Stop Playing And Recompile

本設定はエディター再生中にスクリプトを変更すると、直ちにエディターを停止してコンパイルが実行されます。

よってエディター再生中にプログラムを変更してもコンパイルされないようにしたい場には[Recompile After Finished Playing]か[Stop Playing And Recompile]に設定を変更します。

HoloLens2でホロモンアプリを作る その107(シェアリング実装の切り分け)

本日はアプリ作成枠です。
HoloLens2でホロモンアプリを作る進捗を書き留めていきます。

今回からシェアリング実装を進めていきます。

シェアリング実装の切り分け

ホロモンアプリではホロモンのキャラクターのコアの部分だけを切り出して他のアプリに簡単に実装できるようにしたい考えがあります。
以下のMRTK3の実装でもホロモンのコアの部分のみ流用してMRTK3版のホロモンアプリを作成しました。
bluebirdofoz.hatenablog.com

よって今回はシェアリングの実装部分を完全に切り分けておくことにしました。
以下のようにシェアリング用のフォルダを切り、そこにシェアリング関連のアセットをまとめる形で実装を進めていきます。

シェアリングのモジュールはホロモンアプリに依存しますが、ホロモンアプリのコア部分はシェアリング側のアセットには一切依存しないように実装を進めます。
これでシェアリングが利用できないプラットフォームにホロモンを移植する際もシェアリングモジュールを除外するだけで移植が可能になる目論見です。

回りくどい実装となる個所は多々発生することになりますが、この方針で実装を進めていきます。

Windows 11でマウスカーソルを含めてスクリーンショットを撮影する

本日は Windows 11 の小ネタ枠です。
Windows 11 でマウスカーソルを含めてスクリーンショットを撮影する方法です。

マウスカーソルを含めてスクリーンショットを撮影する

Windows 11 でマウスカーソルを含めてスクリーンショットを撮影する場合は[拡大鏡]ツールを利用します。
メニューから[拡大鏡]を検索して起動します。

デフォルトでは拡大鏡が全画面で表示されるのでこれをウィンドウ表示に切り替える必要があります。
[拡大鏡]のツールバーから[歯車]アイコンを選択して[設定を開く]を実行します。

[ビュー]の設定を[固定]に変更します。

以下のように画面の一部が[拡大鏡]の表示領域になります。
更にキャプチャを撮りやすくするため、[Ctrl + Alt + 方向キー]を押してウィンドウ表示に切り替えます。

この状態でキャプチャを撮影すれば[拡大鏡]のウィンドウ内でマウスカーソルをキャプチャすることができます。

CLIPSTUDIOのサブビューを利用して別の画像から簡単にサンプル色を取得する

本日は CLIPSTUDIO の小ネタ枠です。
CLIPSTUDIOのサブビューを利用して別の画像から簡単にサンプル色を取得する方法を記事にします。

カラーの指標画像をサブビューに設定する

以下のようなキャラクターのカラー指定を行った画像を用意します。

CLIPSTUDIOを開き、画像ファイルをサブビューにドロップします。

これでサブビューに画像が表示されます。

この状態でスポイトを使ってサブビューからカラーを取るようにすると一画面で簡単にカラーの管理ができます。

サブビューをクリアする場合はゴミ箱アイコンをクリックします。

UnityでOpenUPMを利用する際 Unable to perform online search エラーが出た場合の対処

本日は Unity の小ネタ枠です。
UnityでOpenUPMを利用する際 Unable to perform online search エラーが出た場合の対処を紹介します。

UnityのGUIからOpenUPMを利用する

UnityのGUIからOpenUPMを利用する方法は以下を参照ください。
bluebirdofoz.hatenablog.com

Unable to perform online search エラー

上記の手順で Registry を登録すると、以下のエラーが発生して[Packages]に[My Registries]が表示されないことがあります。

[Package Manager Window] Unable to perform online search:
  Cannot fetch authorization code. User access token is expired or invalid. You may need to sign out and sign in again.
UnityEditor.EditorApplication:Internal_CallUpdateFunctions ()


対処法

Unity アカウントにサインインしていないことが原因です。
メニューから[Acount -> Sign in]を選択して Unity アカウントでサインインします。

エラーが解消されて[My Registries]が表示されるようになります。

現在、Unity アカウントにサインインしているかどうかは[Acount -> Sign out]の表示で確認できます。

UnityのGUIからOpenUPMを利用する

本日は Unity の小ネタ枠です。
Unity の GUI から OpenUPM を利用する方法です。

OpenUPM

Unity にインストールするためのパッケージが登録されているレジストリです。
OpenUPM を経由してパッケージをインストールする場合、依存関係が自動で解決されます。
openupm.com

以前は OpenUPM の利用には node.js を経由して openupm-cli のインストールとコマンド実行が必要でした。
以下のバージョン以降の Unity では GUI 操作のみで利用が可能になっています。
・Unity2019.4.12f1以上
・Unity2020.1.8f1以上

今回はこちらの GUI 操作による OpenUPM の利用を試してみます。

利用手順

今回は以下の UniTask のインストールを試してみます。
openupm.com

メニューから[Edit -> ProjectSettings..]を開き、[Package Manager]タブを開きます。

[New Scope Registry]に参照先の URL と Scope を設定して[Save]します。

Name:任意の名前
URL:https://package.openupm.com
Scope:com.cysharp または com.cysharp.unitask などパッケージ名のスコープ

次にメニューから[Window -> PackageManager]を選択して PackageManager ウィンドウを開きます。

[Packages]から[My Registries]を選択します。

指定したスコープ(今回の場合は com.cysharp)配下のパッケージが表示されます。
目的のパッケージを選択して[install]を実行します。

これで OpenUPM からパッケージを取得することができました。

Unable to perform online search エラー

Registry 登録後に Unable to perform online search エラーが発生する場合は以下の手順でサインインを行ってみてください。
bluebirdofoz.hatenablog.com

TextMeshProのテキスト入力でタグを利用してフォントを変更する

本日は TextMeshPro の小ネタ枠です。
TextMeshProのテキスト入力でタグを利用してフォントを変更してみます。

TextMeshProでタグを利用する

TextMeshPro では text 入力にタグを追加することで指定の部分の文字フォントを変更することができます。
digitalnativestudios.com

例えば i タグの指定でフォントを斜体に変更できます。

<i>斜体フォント</i>

逆にタグの文字列をそのまま表示したい場合は noparse タグでタグを挟む必要があります。

<noparse><i></noparse>フォント<noparse></i></noparse>

以下のようにスクリプトからも設定することができます。
・TextMeshProTagTest.cs

using UnityEngine;
using TMPro;

public class TextMeshProTagTest : MonoBehaviour
{
    [SerializeField]
    private TextMeshPro p_targetTMP;

    [ContextMenu("ChangeText")]
    public void ChangeText()
    {
        // 太字、カラー変更
        string scriptInput = "Script Test\n<b>Script Test</b>\n<color=\"red\">Script Test</color>";
        p_targetTMP.text = scriptInput;
    }
}


参考ページ

利用可能なタグの種類については以下のページが詳しいです。
digitalnativestudios.com
baba-s.hatenablog.com