IDisplayText

interface

名前空間:SilCilSystem.Views

Assembly:SilCilSystem.Packages


文字列を表示するためのインターフェースです。 「文字列の表示」と一言で表しても、実際には画面、コンソール、ファイルなど出力先は様々です。 複数の表示先に対応できるようにインターフェースを用意しました。

DisplayVariablesなどで使用されています。

メンバ一覧

メソッド

member description
void SetText(string value) 文字列valueを表示する

使用例

例えば、UnityのuGUIシステムを利用して画面に文字列を表示する場合は 以下のような実装で実現できます。

using UnityEngine.UI;

class DisplayStringTextUGUI : IDisplayText
{
    private readonly Text m_text;
    public DisplayStringTextUGUI(Text text) => m_text = text;
    public void SetText(string value) => m_text.text = value;
}

SilCilSystemではText, TextMeshProに対応したIDisplayTextの実装を用意しています。 これらはGameObjectの拡張メソッドを通して取得できます。

using UnityEngine;
using SilCilSystem.Components.Views;

public class TestDisplayText : MonoBehaviour
{
    private void Start()
    {
        IDisplayText text = gameObject.GetTextComponent();
        text.SetText("Hello World!");
    }
}

このスクリプトをTextTextMeshProコンポーネントにアタッチします。

実装

順番にGetComponentして取得しています。

public static IDisplayText GetTextComponent(this GameObject gameObject)
{
    if (gameObject == null) return null;
    if (gameObject.TryGetComponent(out IDisplayText displayText)) return displayText;
    if (gameObject.TryGetComponent(out Text text)) return new DisplayStringTextUGUI(text);
    if (gameObject.TryGetComponent(out TextMeshProUGUI textMeshProUGUI)) return new DisplayStringTextMeshProUGUI(textMeshProUGUI);
    if (gameObject.TryGetComponent(out TextMesh textMesh)) return new DisplayStringTextMesh(textMesh);
    if (gameObject.TryGetComponent(out TextMeshPro textMeshPro)) return new DisplayStringTextMeshPro(textMeshPro);
    return null;
}

ドキュメントトップへ

ダウンロードページへ