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

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

新規登録して質問してみよう
ただいま回答率
85.31%
Unity3D

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

Unity

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

Q&A

1回答

1864閲覧

Unity Visual Scripting(旧:Bolt)を使って読み込んだ外部テキストの改行部分をReplaceする

Ezomodas

総合スコア0

Unity3D

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

Unity

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

0グッド

0クリップ

投稿2022/04/01 08:04

Unity初心者です。
会話シーンのため、テキストファイルを読み込んで内容を表示させるシステムを作成しようとしています。
https://note.com/frabbit_mbp/n/nee57093c1704?magazine_key=mc789abae5f8d
上のURLを参考にし、構築を進めています。

private string LoadTextFile(string fname) { TextAsset textasset = Resources.Load<TextAsset>(fname); return textasset.text.Replace("\n", "").Replace("\r", ""); }

イメージとしては上のような感じで、テキスト内の改行毎に区切って
1行毎にメッセージを表示させたいと考えています。

あいうえお
かきくけこ
さしすせそ

という内容のテキストファイルだった場合
最初に「あいうえお」が表示され
クリックすると「かきくけこ」が表示されるようなイメージです。

イメージ説明

上の図のように、読み込んだテキストファイルから改行を探して""に置き換えたいのですが
/nや/rといったものを認識してくれないように感じます。

どなたか解決方法を教えてくだされば幸いです…。

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

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

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

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

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

bboydaisuke

2022/04/01 11:53

ここ https://forum.unity.com/threads/line-break-troubles.1184017/ で言われている通り、Visual Scripting ではエスケープ文字は扱えないようですから、C# で書かないといけないようです。 ただ、改行を取り除いたところで元々やりたい事である > テキスト内の改行毎に区切って1行毎にメッセージを表示させたいと考えています。 はできないでしょうから、別のアプローチを考えるか、C# で書いた方がよいでしょう。
Ezomodas

2022/04/01 13:56

そうだったのですね…Boltでスクリプトと併用する方法を調べたいと思います… ところで、上の質問と延長線上の追加質問なのですが… splitで「より以前と後で区切りたいと考えているのですが、どうにも上手くいきません https://imgur.com/a/lZb7iK3 このような画像での配置としていますが、何がおかしいのかわからず、理由が知りたいです。 宜しければこちらも教えて頂ければ幸いです…。
bboydaisuke

2022/04/01 14:00

> Boltでスクリプトと併用する方法を調べたいと思います… 作ったコンポーネントやクラスを登録すれば普通に Visual Scripting から呼べますよ。 https://github.com/dsuz/unity-game-dev1-3d-2021/wiki/4th-term-3rd-week#%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%82%92-visual-scripting-%E3%81%A7%E6%89%B1%E3%81%88%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B > splitで「より以前と後で区切りたいと考えているのですが、どうにも上手くいきません 配列で渡されてるものをそのまま出力してるからダメです。というか普通に C# でやった方が簡単ですよ。
Ezomodas

2022/04/01 14:37

素早い返信ありがとうございます。当方、C#を勉強中の身でして、ほとんど手探り状態で初めておりますので、分からない部分はビジュアルスクリプティングと併用して行いたいと思って今回触っております。 URL付きで丁寧に教えてくださって本当に感謝しております。 >配列で渡されてるものをそのまま出力してるからダメです。 Splitしたものをnew Stringに格納してからdebug.logをするという認識でよろしいでしょうか? >というか普通に C# でやった方が簡単ですよ。 当方前述の通り本当にズブの素人でして、正直な所満足にスクリプトが書けるとは言い切れず… なので何が簡単で何が難しいもわからない状況です…
guest

回答1

0

ちょっと試したところですと、Formulaノードから出力した文字列であればエスケープが効くようでした。

図1

図2

とはいえ、これっぽっちのことを行うのにずいぶん冗長な記述になってしまったように思います。bboydaisukeさんからもアドバイスがありましたように、C#のスクリプトも適宜利用していただく方がむしろシンプルになるかもしれませんね。
また今回のFormulaノードにしても、リファレンスには...

IMPORTANT
Due to the binary tree traversal overhead (despite caching attempts), performance in using the formula node is significantly slower than using the operator nodes individually. It is preferable to avoid using this node at every frame.

との注意書きがありました。無理にVisual Scriptingだけにこだわってしまうと、処理コストの面で不利になることがあるかもしれません。

投稿2022/04/01 21:31

Bongo

総合スコア10816

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

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

Ezomodas

2022/04/02 04:47

回答ありがとうございます! そうですね…やはりこのシステムを構築する上で、スクリプトを書く以外最善策はなさそうですね ちょっと、挑戦してみたいと思います。 お時間をとらせてしまって申し訳ありません。検証、本当にありがとうございました。 また質問する事があるかもしれません、もし宜しければその時はまたお願いしたいと思います…!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問