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

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

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

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

Unity

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

Q&A

解決済

2回答

715閲覧

単語帳のデータ管理について

Raumu

総合スコア3

C#

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

Unity

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

0グッド

0クリップ

投稿2020/11/28 12:55

初心者です。
単語帳を作りたいと思っています
int ページID;
string 表面内容;
string 裏面内容;
Image 添付する写真;

上記固定の内容の物を作成したり、編集したり削除したりしようと考えていますが基本のデータ管理として
どのようなものを使うといいでしょうか?

初めに思い付いたのがScriptableObjentですが、データを動的に増やしたりしずらく
次に構造体を考えましたがstructの要素の追加の方法がわからず断念・・Add?
データが1種類だけならLISTやdictionaryの使い方は理解していますが多次元配列になると理解できません。

一般的にはどのように管理すればよろしいでしょうか?

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

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

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

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

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

ayousanz

2020/11/29 01:42

一般的にというのはそもそも何でしょうか? あなたが思う一般的がどのようなものなのかわかりませんが,いわゆる開発において「一般的に」考えるのならばまずは市のアプリケーションの仕様を提示しないと同管理したらいいのかの判断ができないと思います. 今後単語は増えていくのか,一つの単語の情報は増える可能性はあるのか,どのくらいの単語があるのか等
Raumu

2020/11/29 02:16

ごもっともな指摘誠にありがとうございます、 単語は増えます。単語帳ですので intページIDにはページ番号 string表内容に 【りんご】といれ strinng裏内容に【apple】 Image 添付する写真に リンゴの絵 これらの内容を何ページも作る予定です、その反面これ以上のデータを格納する拡張性は持たせません。 一般的にという言葉は抽象的でした、私は初心者ですのでよく使われる手法を知りません、 おすすめの管理の方法があればお願いいたします。
guest

回答2

0

最終論としてはあなたの使いやすい方法でいいと思います。

私だったらとりあえず単語データクラスを作成、
「そのデータクラスのList」を持つScriptableObjentを作成すると思います。
(単語1個ずつのScriptableObjentを持つまでもないかと)

投稿2020/11/29 05:07

sakura_hana

総合スコア11427

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

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

Raumu

2020/12/01 12:21

ありがとうございます!そういった意味合いでのScriptableObjentの使い方があるんですね!! 勉強になります!
guest

0

ベストアンサー

単語情報を持つクラスを作り、それに情報を与えながら複製していく形でいいと思います。

C#

1// usingなどは省きます 2 3public class WordData { 4 // 2020/12/1 22:00 アクセス修飾子を修正しました。 5 public string fCont; // 表面内容 6 public string bCont; // 裏面内容 7 public Image img; // 添付する写真 8 9 public WordData (string fCont, string bCont, Image image) { 10 this.fCont = fCont; 11 this.bCont = bCont; 12 this.img = img; 13 } 14}

C#

1// 上のとは別のスクリプト 2 3public class Example : MonoBehavior { 4 5 int id; 6 List<WordData> wordList; 7 8 void Start () { 9 wordList = new List<WordData>() { 10 new WordData("りんご", "apple", /*りんごの画像*/), 11 new WordData("みかん", "orange", /*みかんの画像*/) 12 // ,で区切って追加していく 13 }; 14 15 // デバッグ 16 // id設定 17 id = 0; 18 Debug.Log(wordList[id].fCont); // 日本語 19 Debug.Log(wordList[id].bCont); // 英語 20 } 21}

これでとりあえずできると思います。

スクリプトは手打ちなので誤字脱字は許してください…。
今思ったけどImageじゃなくてSprite使ったほうが良いかも?

投稿2020/11/30 12:51

編集2020/12/01 12:58
PinoMatcha

総合スコア368

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

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

Raumu

2020/12/01 12:20

非常にわかり安く助かりました!ありがとうございます。
Raumu

2020/12/01 12:43

コンストラクタのpublic WordData (string fCont, string bCont, Image image) { this.fCont = fCont; this.bCont = bCont; this.img = img; } は自分に自分を入れているのは少しわかりませんでした。どの様な効果のための記述でしょうか? またExampleクラスからwordList[id].fContは読み取り権限がありませんでした。 WordDataの中身をpublicにせずprivateのまま使用する際にはプロパティを作ればよいですか?
PinoMatcha

2020/12/01 12:59 編集

すみません、WordDataの中身はpublicに変えてもらって大丈夫です…。 追記)回答のほうも修正しておきました。 public WordData (string fCont, …… の部分は、簡単に言うとnewでクラスを作成するときに値を同時に設定するためです。 もっと細かく説明すると長文になりそうなので、自分なりに調べていただけると助かります。
Raumu

2020/12/01 13:03

本当に勉強になります!感謝です><
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問