前回
実際には、前回の続きというより補足、提案です。
今回 uGUIのTextクラスを継承するのはいかがでしょうか…?
uGUIのTextクラスは継承可能となっていますので、禁則処理するメソッドを追加する形で作ってみました。
HyphenationJpn.cs
using UnityEngine;
using System.Collections.Generic;
using UnityEngine.UI;
using System.Text.RegularExpressions;
using System.Text;
using System;
[ExecuteInEditMode]
public class HyphenationJpn : Text
{
// http://answers.unity3d.com/questions/424874/showing-a-textarea-field-for-a-string-variable-in.html
public new string text
{
get { return m_Text; }
}
private RectTransform _RectTransform
{
get
{
if (_rectTransform == null)
_rectTransform = GetComponent<RectTransform>();
return _rectTransform;
}
}
private RectTransform _rectTransform;
protected override void OnRectTransformDimensionsChange()
{
base.OnRectTransformDimensionsChange();
UpdateText(text);
}
protected override void OnValidate()
{
base.OnValidate();
UpdateText(text);
}
public void UpdateText(string str)
{
m_Text = GetFormatedText(str);
}
// 以下省略。
}
Setでも、Getでもなく、UpdateText(string str)
に。
textのsetterを使われると、ちゃんと動かないので、overrideせずにプロパティを定義して、setterを使えなくしてます。
Textのかわりにこちら1つをアタッチする形で使います。
いかがでしょう…?
ソース全文は以下に。
ShunMc/HyphenationJpn_uGUI: uGUIでの禁則処理