UnityC# 辞書(ディクショナリー)の使い方 キーと値でデータを指定する | Unity入門の森 ゲームの作り方

UnityC# 辞書(ディクショナリー)の使い方 キーと値でデータを指定する

辞書クラスとはの画像 Unity C#入門講座
辞書クラスは要素をキーと値のペアにした便利なコレクション。


Unity入門の森オリジナル本格ゲーム制作講座はこちら
11種類の本格ゲームの全ソースコード公開・画像&動画による解説付き

今回の記事では辞書型(ディクショナリー、Dictionary)について解説します。

辞書型も前回扱ったListクラスと同じくコレクションの一種になります。

前回の記事:

UnityC# Listの使い方
前回はインターフェースとポリモーフィズムについて学びましたが、今回の記事ではListについて解説していきます。 前回の記事: Listは配列をより使いやすくしたコレクションの一つになります。 配列より便利なListクラスとは Listクラス...

【Line登録者限定のプレゼントもあるよ!】

簡単にデータにアクセスできる辞書型(ディクショナリー)って何?

辞書クラスについての画像

辞書クラスではキーを使って要素を追加したり、削除したり、アクセスしたりする。

辞書型はキーとなる値それに対応する値ペアからなるコレクションになります。キーおよび値の型はテンプレートで別の型を指定できます。

要素にアクセスする時は配列やリストの場合は添字を使っていましたが、辞書型の場合はキーを使用します。そのため辞書型はリストより指定した値にアクセスしやすいコレクションになります。

その代わり、辞書型のデータの並びはこちらから制御できませんループ処理の際には要素の順番に依存しない処理を書く必要があります。

主なメンバは次のものになります。

  • 追加:Add(key, value)
  • 削除:Remove(key)
  • キーチェック:Contains(key)
  • 全てのキー:Keysプロパティ
  • 全ての値:Valuesプロパティ

KeyValuePair<TKey, TValue>型について

辞書型はキーと値をKeyValuePair<TKey, TValue>型で管理しています。

KeyValuePair<TKey, TValue>型も辞書型と同じくテンプレートを使用しています。なのでテンプレートに型を指定する必要がありますが、こちらの場合は辞書型に渡したテンプレートの型を内部で設定してくれるのであまり気にする必要はありません。

KeyValuePair<TKey, TValue>型自体はとても簡単な内容になり、次のプロパティが定義されています。

  • Key:キーを表すプロパティ。
  • Value:値を表すプロパティ。

辞書型が継承しているインターフェース

辞書型は次のインターフェースを継承しています。

  • ICollection
  • ICollection<KeyValuePair<TKey,TValue>>
  • IReadOnlyCollection<KeyValuePair<TKey,TValue>>
  • IDictionary
  • IDictionary<TKey,TValue>
  • IReadOnlyDictionary<TKey,TValue>
  • IEnumerable<KeyValuePair<TKey,TValue>>
  • IEnumerable
  • ISerializable
  • IDeserializationCallback

辞書型で実装できることを知りたい場合は上記のインターフェースについて調べてみましょう。

【実践】Unityで辞書(ディクショナリー)を使ってみよう!

それでは辞書型をUnityで使用してみましょう!

残念ながら辞書型はUnityエディターが対応していないためInspectorから設定できません

エディター拡張を使用するとInspectorから設定できるようになりますが、こちらからそれを実装するか、Web上で公開されているものを使うなど、Unity以外の別のスクリプトが必要になります。

今回の記事では辞書型の使い方の簡単な一例としてサンプルコードをみてください。

サンプルコードを実行する際には次のメンバをInspectorから設定してください。

  • Keysフィールド:辞書(_dictフィールド)に設定するキーの一覧。好きな数追加してください。
  • Textフィールド:画面に表示するために使うTextMeshコンポーネントをアタッチしてください。
サンプル実行 キーがある時の画像

ShowKeyに辞書にあるキーを入力したら、画面にそのキーとペアになっている値が表示される。

サンプルコードでは辞書型はプライベートなメンバフィールド(_dict)として定義しています。

Startメソッドの中で辞書型をKeysフィールドに設定されたキー値を使って初期化しています。

初期化後の辞書型の内容を確認するために、ShowKeyフィールドに設定されたキーが辞書にあるのかをUpdateメソッド内でDictionary<TKey, TValue>.Containsメソッドを使用して確認しています。

あった場合はそのキーと値をテキストに変換して画面に表示しています。ない場合はキーがないことを意味するテキストを表示しています。

サンプル実行 キーがない時の画像

ShowKeyに辞書にないキーを入力すると、何もない的なテキストが画面に表示される。

まとめ

今回の記事では辞書型について解説してきました。

簡単にまとめると以下のようになります。

  • 辞書型はキーとそれに対応する値のペアからなるコレクション。
  • キーと値のペアはKeyValuePair<TKey, TValue>型として扱われている。
  • 要素を追加する時はキーとそのペアとなる値指定する。
  • 削除する時はキーのみでOK。
  • 値にアクセスする時はそれに対応するキーを添字代わりに使用する。
  • ループする時はforeach文を使う。
  • キーのみの一覧を見る時はKeysを、値のみの一覧を見る時はValuesを使用する。
  • 既にキーがある場合に追加しようとすると値が上書きされる。

それでは次の記事に行ってみましょう!

UnityC# デリゲートとイベントとUnityActionの使い方
今回の記事ではデリゲートとイベントについて解説していきます。 前回は辞書の使い方について解説しましたね。 デリゲートとイベントを使うことでメソッドを値として使用することができます。メソッドを値にして利点があるのかと思われますが、アプリででき...

 

初心者向けUnityC#入門講座に戻る>>



Unity入門の森オリジナル本格ゲーム制作講座はこちら
11種類の本格ゲームの全ソースコード公開・画像&動画による解説付き

コメント

タイトルとURLをコピーしました