MRが楽しい

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

iPhone/iPadで画面の録画を行う

本日は iPhone/iPad の小ネタ枠です。
iPhone/iPad で画面の録画を行う方法を記事にします。

コントロールセンターに録画ボタンを追加する

iOS14 以降ではコントールセンターに録画ボタンがデフォルトでは表示されません。

録画ボタンを追加するには[設定]を開きます。

[コントロールセンター]タブを開き、[画面収録]横の追加ボタンをタップします。

これでコントロールセンターに録画ボタンが追加されました。

ホーム画面に戻り、画面を上から下にスワイプしてコントロールセンターを表示します。

追加した録画ボタンをタップすると3秒のカウントダウンが始まり、録画が開始されます。

Blenderでプロジェクトのテンプレートを作成する

本日は Blender の小ネタ枠です。
Blenderでプロジェクトのテンプレートを作成する方法を記事にします。

テンプレートの作成方法

Blender のプロジェクトのテンプレートは Windows 環境では以下のディレクトリに保存されています。

C:\Program Files\Blender Foundation\Blender (バージョン番号)\(バージョン番号)\scripts\startup\bl_app_templates_system\

自作のテンプレートを作成したい場合は本ディレクトリに新規フォルダを作成します。
このフォルダ名がテンプレート名になります。

作成したフォルダに startup.blend というファイル名の .blend ファイルを保存します。
本ファイルがプロジェクトのテンプレートになります。

今回は以下のような視点の設定のみを行った何もないプロジェクトのテンプレートを作成しました。

テンプレートの利用

Blender を起動します。
起動時のモーダルまたはメニューの[ファイル -> 新規]からテンプレートを選択できます。

以下の通り、テンプレートファイルの内容でプロジェクトを新規作成できました。

CLIPSTUDIOでバケツ塗りでトーンのような塗りを行う

本日は CLIPSTUDIO の小ネタ枠です。
CLIPSTUDIOでバケツ塗りでトーンのような塗りを行う方法を記事にします。

バケツ塗りでトーンのような塗りを行う

以下の画像にトーンの塗りを行います。

メニューから[レイヤー -> 新規ラスターレイヤー]で塗り用のラスターレイヤーを作成します。

塗り用のラスターレイヤーにバケツで塗りを行います。
色は白から黒への階調の中で選びます。

塗り用のレイヤーを選択した状態で[レイヤープロパティ]から[効果 -> トーン]を選択します。
これでレイヤーにトーンの効果がかかり、塗った色がトーン調に変わります。

トーンのサイズ感や線の種類を変えたい場合は[レイヤープロパティ]で変更できます。
ただし線の種類についてはレイヤーで一律管理となります。

お手軽にトーン塗りを行いたい場合は役立ちます。
より細かくトーンを指定して利用したい場合は CLIPSTUDIO にはトーンレイヤーというトーン専用のレイヤーがあります。

Unityでスクリプトのテンプレートを作成する

本日は Unity の小ネタ枠です。
Unityでスクリプトのテンプレートを作成する方法を記事にします。

スクリプトテンプレートの作成方法

Unity プロジェクトの Assets フォルダ配下に[ScriptTemplates]という名前のフォルダを作成します。
この名前のフォルダがスクリプトテンプレートの保存フォルダになります。

ScriptTemplates フォルダ配下にテキストファイルを作成します。
右クリックから[Show in Explorer]でフォルダを開き、テキストファイルを作成します。

テキストファイルの名称でテンプレートの表示形式をコントロールできます。
ファイル名のフォーマットは以下の通りです。

[表示昇順(数字)]-[カテゴリ(省略可能)]__[テンプレート名]-[生成ファイル名(拡張子含む)].txt

カテゴリは省略することも繰り返すことも可能です。また __ の部分はアンダーバーを2つなので注意が必要です。

フォーマットに基づき、以下のファイル名のテキストファイルを作成しました。

81-Custom C# Script__EnableDisable C# Script-NewEnableDisableBehaviour.cs.txt

次にテキストファイルを開き、テンプレートの内容を記述します。
以下のテンプレートを作成しました。

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class #SCRIPTNAME# : MonoBehaviour
{
    void OnEnable()
    {

    }

    void OnDisable()
    {

    }
}

これでスクリプトテンプレートの作成は完了です。

テンプレートの利用

テンプレートを作成後、利用する場合は一旦プロジェクトを開きなおします。

Assets フォルダから右クリックで[Create]項目を開くと、先ほどのファイル名のフォーマットに基づいたカテゴリとテンプレート名が追加されています。
今回の場合、[Create -> Custom C# Script -> EnableDisable C# Script]が追加されています。

テンプレート名を選択すると、テンプレートファイルに基づいたスクリプトが生成されます。

StringBuilderを使ってUnityのUpdate関数内の文字列処理を効率的に行う

本日は .NET Framework の小ネタ枠です。
StringBuilder を使って Unity の Update 関数内の文字列処理を効率的に行う方法です。

StringBuilder

string クラスで文字列を行う場合、文字操作を何度も繰り返すとパフォーマンスが著しく低下する可能性があります。
Unity の Update 関数内など短い間隔で複数の文字処理を繰り返すケースでは StringBuilder を利用することでパフォーマンスの向上が期待できます。
docs.microsoft.com

パフォーマンス比較

以下の通り、それぞれ string または StringBuilder を使って Unity の Update 関数内で同じデバッグログの文字列を出力するサンプルスクリプトを作成しました。
再生開始から 5 秒間のみデバッグログの出力を動作させて、デバッグログの出力回数を比較してみます。

string の場合

・StringDebugLog.cs

using UnityEngine;

public class StringDebugLog : MonoBehaviour
{
    private float timeout = 5.0f;

    void Update()
    {
        if (Time.time > timeout) return;

        string stringText = "";

        stringText += "LogMessage : ";
        for (int index = 0; index < 10000; index++)
        {
            stringText += $",{index}";
        }

        Debug.Log(stringText);
    }
}

5 秒間でのデバッグログの出力回数は 16 回でした。

StringBuilder の場合

・StringBuilderDebugLog.cs

using System.Text;
using UnityEngine;

public class StringBuilderDebugLog : MonoBehaviour
{
    private float timeout = 5.0f;

    void Update()
    {
        if (Time.time > timeout) return;

        StringBuilder stringBuilder = new StringBuilder();

        stringBuilder.Append("LogMessage : ");
        for (int index = 0; index < 10000; index++)
        {
            stringBuilder.Append($",{index}");
        }

        Debug.Log(stringBuilder.ToString());
    }
}

5 秒間でのデバッグログの出力回数は 136 回でした。
結果、StringBuilder を使った方が文字列処理のパフォーマンスが高くなっていることが確認できました。

TextMeshProのテキスト入力でタグを利用して文字の間隔を調整する

本日は TextMeshPro の小ネタ枠です。
TextMeshProのテキスト入力でタグを利用して文字の間隔を調整してみます。

TextMeshProでタグを利用する

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

横幅の設定

文字の横間隔を調整する場合は cspace または mspace を利用します。
cspace は文字間隔を、mspace は文字を含めた固定幅を設定します。

Tooltip Text
<cspace=0.8en>Tooltip Text</cspace>
<mspace=0.8en>Tooltip Text</mspace>

Tooltip Text
<cspace=0.2en>Tooltip Text</cspace>
<mspace=0.2en>Tooltip Text</mspace>


縦幅の設定

文字の横間隔を調整する場合は line-height を利用します。
設定範囲の行幅をパーセントで指定できます。

Tooltip Text
<line-height=150%>Tooltip Text
Tooltip Text</line-height>

Tooltip Text
<line-height=50%>Tooltip Text
Tooltip Text</line-height>

文字の間に小さい行間隔を開けたい場合は以下のように小さな改行を挟み込むことでも実現できます。

Tooltip Text
Tooltip Text
<line-height=25%>
</line-height>Tooltip Text


Unityでカラーテーマにダークテーマを利用する

本日は Unity の小ネタ枠です。
Unityでカラーテーマにダークテーマを利用する方法です。

Unityのダークテーマ

Unity のダークテーマは Unity 2019.4.8 または Unity2020.1.2 以降ではどのライセンスでも利用できます。
それ以前のバージョンでは Pro ライセンスでのみ利用可能でした。

メニューから[Edit -> Preferences]を開き、[General]タブから変更できます。

docs.unity3d.com

[Editor Theme]で[Light]または[Dark]を選択できます。

Light テーマ


Dark テーマ