Reader1つのセルの中で改行したい場面やキャラごとに整理したい基本のやり方CSVファイルの準備グーグルのスプレッドシートでセルに分けて書いたものを.csv形式でダウンロードしましたスプレッドシートはこんな感じで書いたよこのtest.csvをダブルクリックで開くとNumbersってアプリで開かれてこんな感じで見れる。.csvをNumbersで開いた感じUnityで読み込むこの.csvファイルを、UnityのAssets>Resourcesに入れます。Resourcesフォルダがない場合は作って入れます。Assets>Resourcesに入れる新しいC#スクリプトを作り、以下を記入します。}}こんな感じになります。結果CSVファイル別の書き方ちなみに、セルに分けて書かずに1つのセルにカンマで区切って書いた場合も同じようにできました。消えたのでそうっぽい。//CSVファイルTextAssetはUnityにインポートされたテキストファイルのための形式で、.csvや.html、.txtなどのファイルをUnityに入れた時にこのTextAssetに変換されるようです。TextAsset;これはAssets>Resourceにあるファイルを読み込みます。Resource>CSV>test.csvにある時は以下のように書きます。.csvという拡張子は書かなくてオッケーです。StringReaderはSystem.IOを書くことで使えます。TextAssetのままだと、カンマや改行を含む文字列が全て連結されたままなので、ここでStringReaderに変換しています。}StringReaderの.Peek()は次に読み込める文字がなくなると-1になります。.ReadLineで1行ずつ読み込んでいます。line.Split(",")でカンマで区切ってListにAddすることができます。1つのセルの中で改行したいキャラのステータスなどを登録する分には上記のでいいんですが、例えばセリフをCSVで読み込みたいときなどに、一つのセリフだけど改行入れたい。みたいなことがあると思います。わたし、めーぷるっていうの!パンダが大好きなんだよ!えへへこれからもよろしくね!みたいに、一つのセリフとして出したいけど、改行したい!みたいな。それをやりたくて、セルの中で改行してみたり、改行マーク?の「\n」を入れてみましたが、改行する前の文字列しか取ってくれなかったり、「\n」は文字列として捉えられちゃってダメでした。セルの中で改行したり改行マーク入れてもダメだっただけど改行分セルを分けてしまうのも使いにくいので、以下のようにしました。}さっきと違う部分に注目です。.Replaceを使って「\n」に変換しています。CSVファイルの方は、改行したい部分に<>を入れています。改行したいところに<>を入れる別に「<>」じゃなくてもいいのですが、思わぬところで改行されてしまわないように、会話のなかでてこなさそうな文字列をチョイスしました。CSVで「\n」を入れていても改行コードとして読み込んでくれないですが、stringでは改行コードとして扱ってくれるため、一度読み込んだCSVデータから特定の文字列(ここでは<>)を「\n」に変換してstringに格納することで表示した時に改行されるようにしています。場面やキャラごとに整理したい改行できるようになったら次はキャラごととか、同じキャラでも場面ごととかでセリフを読み取れるようにしたくなったりします。以下のように、一つのCSVからパンダさんのセリフとねこちゃんのセリフを取って切り替えられるようにしました。キャラごとにセリフを切り替えるCSVファイルは以下のようにしています。1の列横向きにパンダのセリフ、2の列横向きにねこちゃんのセリフを書いています。CSVファイルコードは以下の通りです。}}書き換えた部分に注目です。}まず、for文の中の変数宣言が「i」ではなく「y」と「x」になっています。これはわかりやすくするためなのですが、CSVの読み取ったListデータが_data[縦軸][横軸]になっていたためわかりやすくするためにyとxにしました。_replacedData.Add(arr);}そのx軸のセルの数のstring配列を作り、変換した結果が入れてあるリストをそのまま配列にぶち込みます。入れて//それを最終的なデータリストに入れている_lineData.Add(data);一時的に変換したものを入れていた_replacedDataを空にして次にy軸が1進んだ時のx軸セルだけを入れれるようにします。//一時的に使用する_replacedDataのリストをからにする_replacedDatas.Clear();こうすることで、最終的な_lineDataには、_lineData[0]にはy軸0の横一列(x軸)のstring配列データが入っていることになります。縦軸でキャラやシーンを別にして横軸にそのキャラやシーンで使うセリフを入れておけば、キャラ番号(縦軸)を指定することでそのキャラのセリフを取得することができます。外部からキャラ番号(縦軸番号)を受け取ってその横一列分のstringデータを返します。_lineData[charaNum];}セリフを表示する側はキャラの番号を渡して一度string配列に入れ、それを1ずつ進めることでボタンを押すたびにそのボタンに割り当てられたキャラのセリフが進むという形にしています。}}これで1つのCSVファイルからキャラ別にセリフを切り替えることができました!1つのCSVからキャラごとにセリフを切り替える以上です。はてなブログProアイドルになりたいと思いながら死んだ顔で仕事をするプログラマー。めーぷるしろっぷをちょんちょんしています。LSDJについての記事を書きます。(1)リンクはてなブログブログをはじめる週刊はてなブログはてなブログPro引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。