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

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

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

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

C#

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

Unity

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

Q&A

解決済

1回答

861閲覧

Unity アイテムCSVに装備できるジョブをひとつのセルにまとめて記載しlistに格納する方法

forest2736

総合スコア13

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

C#

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

Unity

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

1グッド

0クリップ

投稿2019/03/07 09:58

編集2019/03/07 10:00

実現したいこと

アイテムに装備できるジョブをまとめてlistで格納したい。

id, name , attack, EjobID, ・・・ 0 , WeaponName, 10 , [0,1] , ・・・

上記のようなアイテムCSVを用意し、装備できるジョブIDをひとつのまとまりにして、Listに格納したい。

発生している問題

現在18のジョブがあり、csvに装備できるキャラ18名の枠を用意し、0または1で装備判定を行なっています。

id, name , attack, EjobID0, EjobID1, EjobID2, ・・・, EjobID18 0 , WeaponName, 10 , 1 , 0 , 0 , ・・・, 1

上記のようにジョブ分の装備条件を設定しているので、csvデータが長く分かりづらい為改善したいと考えています。

該当のソースコード

以下csvReaderのクラスを用意していますが、EjobID内のデータをまとめてリストor配列に格納する為にはどのように修正すればよろしいでしょうか。

int i=0, j; TextAsset csv = Resources.Load ("CSV/Item - data") as TextAsset; StringReader reader = new StringReader (csv.text); while (reader.Peek () > -1) { i++; string line = reader.ReadLine (); string[] values = line.Split(','); if(i > 1){ for (j = 0; j < values.Length; j++) { item[j] = values[j]; } itemDatabase.items.Add(new Item( int.Parse(item[0]),item[1], int.Parse(item[2]),・・・) ); } }

他のやり方がありましたら

プログラム初心者のため、他に良いやり方などありましたらご教授頂けると幸いに存じます。
何卒宜しくお願い致します。

bochan2👍を押しています

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

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

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

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

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

guest

回答1

0

ベストアンサー

区切り文字を,にしなければいいです。
CSVデータのEjobIDの項目を[0,1,0]ではなく0:1:0とでもして、
読み込み側では一旦文字列"0:1:0"として受け取った後、区切り文字:で再分割すればいいかと。

もしくはデータベースの中間テーブルの要領で、「装備可能リスト」を別途作ってもいいかもしれません。

//武器のCSV id, name , attack 0 , Sword, 10 1 , Lance, 10 //ジョブのCSV id, name 0 , Saber 1 , Lancer 2 , Berserker //装備可能リスト(以下の例では武器ID:0はジョブID:0と2が持てる、武器ID:1はジョブID:1と2が持てる) weapon_id, job_id 0 , 0 0 , 2 1 , 1 1 , 2

投稿2019/03/07 13:28

sakura_hana

総合スコア11427

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

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

forest2736

2019/03/07 13:42

区切り文字を変え、再分割して取り出す方法で無事解決致しました。 早急なご回答、誠にありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問