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

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

新規登録して質問してみよう
ただいま回答率
85.33%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

221閲覧

文章の中に一致するテキストがあったら、そのテキストを赤文字にしたいです。

YukiKuzira

総合スコア19

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2025/02/03 02:36

実現したいこと

Unity初心者でございます。
今、私は言葉遊びのゲームを作っておりまして、一つの長い文章内に手札のカードに書かれたテキストと一致する箇所が見つかったら、そのテキストを強調するように赤文字にしたいのですがうまくいきません。
どうかお知恵を貸していただけると嬉しいです。

発生している問題・分からないこと

Replaceを使い、長い文章内に含まれている特定のテキストを、カラーコード付きのテキストに置き換えて赤文字になるようにコードを書いてみたのですが、うまくいかず。実行しても黒文字のままとなってしまいます。

該当のソースコード

// 文章内(story)に「かきくけこ」というテキストがあれば、そのテキストを赤文字にしたいです。 string story = "あいうえおかきくけこさしすせそ"; string changeText = "かきくけこ"; story = story.Replace(changeText, "<color=red>" + changeText + "</color>"); // カラーコードのついたテキストを置き換える方法を考えてみたが、黒文字のままでした。。。

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

ネットで「色の変え方」、「文字の置き換え」などと検索をかけて、それぞれのやり方は出てきたのですが、テキストが一致したら色を変えるという手法は見つけることができませんでした。

補足

特になし

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YAmaGNZ

2025/02/03 02:41

>ネットで「色の変え方」、「文字の置き換え」などと検索をかけて、それぞれのやり方は出てきたのですが 「テキストが一致したら色を変える」というのはひとまず置いておいて、こちらの方法で「色を変える」ということは出来たのですか? またその「色を変える方法」に出てきている方法を提示コードで出来ているのですか? また「何に」「どうやって」表示するかといった情報もあったほうがよろしいかと思います。
YukiKuzira

2025/02/03 03:11

〇こちらの方法で「色を変える」ということは出来たのですか?またその「色を変える方法」に出てきている方法を提示コードで出来ているのですか? ・調べて出てきたTextMeshPro - Textのコンポーネント内、Text Inputにカラーコードを入力したら、画面上に赤文字が表示されることは確認いたしました。ですがどうしてもコンポーネントから直接入力ではなく、スクリプトから文字一致で色を変えるというのがうまくいきません。 〇また「何に」「どうやって」表示するかといった情報もあったほうがよろしいかと思います。 「TextMeshProのテキストの一部」「スクリプトからテキストが一致したら赤文字に変える」となります。
fiveHundred

2025/02/03 04:17

このコードの後に、(TextMeshProの)UIのtextへの代入は行っていますか? これだけだと、文字列storyを変更しただけで、UIには反映されませんよ。
YAmaGNZ

2025/02/03 04:34

> 画面上に赤文字が表示されることは確認いたしました。 "あいうえお<color = red>かきくけこ</color>さしすせそ" を直接インスペクタにて指定した場合は必要部分が赤色に表示されたということで合っていますか? そうなのであればfiveHundredさんの言う通り代入部分のコードを提示されるのがいいかと思います。
YukiKuzira

2025/02/03 05:21

========================= このコードの後に、(TextMeshProの)UIのtextへの代入は行っていますか? これだけだと、文字列storyを変更しただけで、UIには反映されませんよ。 ========================= なるほどです!(TextMeshProの)UIのtextへの代入が抜けていたことが原因でした。 狙い通りの挙動となり、開発が一歩前進することができました。 fiveHundredさん、YAmaGNZさん、ありがとうございました!!!
YAmaGNZ

2025/02/03 05:51

解決おめでとうございます! 解決方法をまとめて、「自己解決」として回答してください! 同じように困っている人の貴重な情報になると思います。
guest

回答1

0

自己解決

//(TextMeshProの)UIのtextへの代入が抜けていたことが原因でした。
// 文章内(story)に「かきくけこ」というテキストがあれば、そのテキストを赤文字にする。
[SerializeField] private TextMeshProUGUI tmp_story ; // 色返され、表示するテキスト
string story = "あいうえおかきくけこさしすせそ";
string changeText = "かきくけこ";

story = story.Replace(changeText, "<color=red>" + changeText + "</color>");
tmp_story .text = story;

投稿2025/02/03 06:53

YukiKuzira

総合スコア19

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.33%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問