夜風のMixedReality

xRと出会って変わった人生と出会った技術を書き残すためのGeekなHoloRangerの居場所

UnityでString型のテキストから一部を抜き出す。

本日はUnity枠です。

Unityでは[uGUI]もしくは[TextMeshPro]を使用して文字を表示します。

筆者の好きなアニメガンダムシリーズの次のようなシーンの演出をxRに応用できないかと取り組んでいます。

www.youtube.com

ちなみに上記埋め込み動画はガンダムの公式チャンネルの公開している動画になります。

OSが立ち上がる表現で小文字の文字列から一文字一文字流れるように大文字に変換されています。

昨日はString.ToUpper()を使用してアルファベットの文字列を大文字に変換しました。

redhologerbera.hatenablog.com

本日は一文字一文字流れるように変換するにあたり文字列の中から一部を抽出しているためこの部分に取り組みます。

〇String.Substring()

[String.Substring()]メソッドはString型の文字列から部分的に抽出します。

今回は次のコードで試しました。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using TMPro;
public class TextChanger : MonoBehaviour
{

    [SerializeField] TextMeshPro OriginalText;
    [SerializeField] TextMeshPro ChangedText;

    // Start is called before the first frame update
    void Start()
    {
        string st = OriginalText.text.ToString();
        ChangedText.text = st.Substring(0,1);
    }
}

昨日と同様に次の文字列で試します。

General
Unilateral
Neuro - Link
Dispersive
Autonomic
Maneuver

f:id:Holomoto-Sumire:20210418210117j:plain

コード実行後は次のようになります。

G

f:id:Holomoto-Sumire:20210419210509j:plain

[Substring()]メソッドの引数は抽出の開始場所を指定します。第二引数を指定した場合は抽出の終了場所を指定します。

上記コードの場合0,1のため、最初から1文字目までを抽出し返します。

次のようにコードを直します。

        ChangedText.text = st.Substring(5,10);

コードを実行すると次のようになります。

al
Unilate

f:id:Holomoto-Sumire:20210419210850j:plain

(Gener)alUnilate(ral)で5~10番目の文字が抽出されていることがわかります。

Substring()の第二引数を指定しない場合はその文字列の最後までが抽出されます。

        ChangedText.text = st.Substring(15);
ral
Neuro - Link
Dispersive
Autonomic
Maneuver

上記のように結果が返されます。