質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.78%

unityでリッチテキストのバグの原因は

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 3,327

score 14

とあるUnityで作られたゲーム(取り合えず名前は伏せておきます)でチャットへ
<quad size=100 
などと打ち込むと文字が大量に画面に表示されます。

Unity - マニュアル: リッチテキスト

quad
  これはテキストメッシュのみに便利であり、画像をテキストとともにインラインでレンダリングします。画像のために使用するマテリアル、ピクセル単位での画像の高さ、そして 4 つほど画像を表示する四角形領域をあらわす数値を、引数としてとります。他のタグと異なり、quad はテキストを囲わず、終了タグがありません - スラッシュ記号は最初のタグの終わりに置かれ、“自己完結” を表現します。

  <quad material=1 size=20 x=0.1 y=0.1 width=0.5 height=0.5 />
  これにより、レンダラーのマテリアル配列の位置のマテリアルを選択し、画像の高さを 20 ピクセルに設定します。画像の四角形領域は x、y、幅、および高さの値で始まり、拡大縮小されていないテクスチャの幅および高さに対する比率として指定されます。

上の記事よりこのコマンドがリッチテキストなるものであるとは分かったのですが、
なぜこのコマンドが実行されるのか調べても分かりませんでした。

  • 表示されている文字からしてゲーム内で表示した文字の履歴のようなものが出力されているようなのですがなぜそれが指定されるのか(materialの指定がないのに)
  • なぜチャットへ打ち込むことで実行されるのか(他のリッチテキストに関しては運営さんの対策により使えません)

私自身はUnityを触ったことがなくどういうものなのか全く分かりません。
専門的なことでもいいので教えてください。(頑張って調べて理解します)

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+1

なぜ謎の画像が表示されるのか

まずUnityの仕様上、前提として「描画される全ての要素はmaterialを使用する」必要があります。
テキスト(ダイナミックフォント)の場合は以下の仕組みで表示されます。
(uGUIの場合で説明しますがTextMeshの場合も同様です)

  1. Textコンポーネントのtextに文字列が与えられる。
  2. フォントファイルから必要な文字が抜粋され、テクスチャ(画像)が作られる。
    (負荷軽減の為、複数の文字が集まって1枚の画像が作られる)
  3. 作ったテクスチャがマテリアルに適用される。
  4. テクスチャの必要な部分(実際に表示される文字)が抜粋されて表示される。

quadタグはこの3番・4番の部分を手動で行ってしまうタグなのではないかと思います。
数値を適当に指定した場合は2番のテクスチャ(直近で使用された文字)が表示されているものと思います。
(ちなみに3番で「マテリアルに適用される」とありますが、Textコンポーネントでマテリアルを指定していない時はUnityデフォルトのテキスト用マテリアルが使用されます)

この辺りは「SpritePackage」「ダイナミックフォント」「ビットマップフォント」について調べると理解しやすいかと思います。

#正直「テキストメッシュのみに便利」とありますが、私は基本的にuGUIしか使わないのでどう便利なのか私はさっぱり分かりません……分かる方がいましたらご指摘をお願いします。

なぜ実行されるのか

運営さんでないと分かりません……
TextコンポーネントのRichTextのチェックを外せば全てのリッチテキストを無効化出来ます。
そうではなくquadだけ使えるということは、RichTextは有効化しつつもユーザーの入力時(または表示時)に特定のタグを除去しているが、その除去リストからquadが抜けている、ということかと。
(他のリッチテキストタグを入力してもタグが文字として表示されないなら、この除去処理をしている可能性が高いです)
どちらにせよ運営さんに報告してあげると喜ばれると思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/06/13 19:52 編集

    回答有難うございます!!
    成る程...
    ただ、materialに何を入れても反応してくれないんですよねなんででしょう
    materialへ入れる数値の規則とかってあります?

    運営さん海外の人でかつTwitterで反応してくれないんですぅ...おそらく<>で囲まれたものを正規表現で判別してるんだと思いますquadは囲わないので動くのでしょうね

    キャンセル

  • 2017/06/13 21:15

    >materialに何を入れても反応してくれない
    Text用のシェーダーを使用したマテリアルでないと動作しないかもしれないです。
    「unity text シェーダー」辺りで調べてみてください。

    >おそらく<>で囲まれたものを正規表現で判別
    quadは閉じタグが無いのでその辺りが関係しているのかもしれません。
    運営さんの反応が無いなら仕方無いので静観するしかないですね……

    キャンセル

  • 2017/06/13 23:49

    quadは死んでるっぽいです。materialがまともにうごかんようですぅ。

    参照---
    https://gamedev.stackexchange.com/questions/88502/inline-sprites-in-unitys-text
    https://forum.unity3d.com/threads/sprite-icons-with-text-e-g-emoticons.265927/
    ---

    キャンセル

0

間違えた....無視してくだせい

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.78%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る