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

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

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

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

Q&A

解決済

2回答

972閲覧

2つのListを紐付けたいです。

maroyaka

総合スコア1

Unity

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

0グッド

0クリップ

投稿2022/01/13 13:33

編集2022/01/13 13:45

unity で2Dゲームを作っています。

List<Item>とList<GameObject>の2つのListがあり、
List<Item>1をクリックしたらList<GameObject>1が、
List<Item>2をクリックしたらList<GameObject>2が
表示されるようにしたいです。

配列やListの使い方を色々調べたのですが見つけられませんでした。

どなたかご教示いただけないでしょうか。
よろしくお願い致します。

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

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

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

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

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

guest

回答2

0

ベストアンサー

「既に作ってあるList<Item>とList<GameObject>の2つのListを使う」というやり方から外れてしまいますが、hogefugapiyoさんの仰ってるやり方の他に、ScriptableObjectを使うやり方もあります。
これはstringとGameObjectのセットを1つのリストで管理しています。

CS

1using System.Collections.Generic; 2using UnityEngine; 3using System; 4 5[CreateAssetMenu(fileName = "ItemDatabase", menuName = "ItemDatabase")] 6public class ItemDatabase : ScriptableObject { 7 public List<ItemData> itemDataList = new List<ItemData>(); 8} 9 10[Serializable] 11public class ItemData{ 12 public string Item; 13 public GameObject Object; 14}

イメージ説明

投稿2022/01/14 07:47

UnchFullburst

総合スコア663

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

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

UnchFullburst

2022/01/14 08:33

hogefugapiyoさんの方の追記を確認しました。 そもそもdetailオブジェクトには何が入っていますか?
UnchFullburst

2022/01/14 09:15 編集

何となく把握しました。 現在の仕様で想定しているような挙動をさせるなら、Itemクラスにdetailオブジェクトも持たせ、インベントリでItemをクリックしたときにdetailをInstanciate & Destoroyするのが手っ取り早くかつ分かりやすく実装できると思います。 UIで呼ぶだけなら負荷も気にしなくていいです。
maroyaka

2022/01/15 07:01

Instanciateを使う場合、コピー元のGameObjectの設定はどうやるのでしょうか? 一つ一つインスペクターで設定するのでしょうか?
UnchFullburst

2022/01/15 13:56

手で一つ一つつけてもいいですし、設定用のスクリプトを書いてもいいです。 ScriptableObjectへの値の入力はスクリプトからも行えます。
maroyaka

2022/01/19 12:18

お礼が遅くなり申し訳ありません。 教えてもらったやり方を調べてやってみようと思います! 丁寧に教えてくださりありがとうございます。
guest

0

List<Item>とList<GameObject>を関連付ける要素はなんでしょうか?
完全にインデックスだけでよいのなら、添字にそれを使えば大丈夫です

(かんたんにデバッグできるように一旦stringとint型にしてます)

cs

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class Test : MonoBehaviour { 6 7 List<string> test = new List<string>() { "やくそう", "どくけしそう", "せかいじゅのは" }; 8 List<int> test2 = new List<int>() { 10, 5, 1000 }; 9 10 private void Start() { 11 Debug.Log(test[0] + "の値段は" + test2[0] + "ゴールドじゃよ"); 12 } 13 14}

主キーがあって、そのペアのデータを取り出したいとかならDictionaryとかもあります。

投稿2022/01/14 00:56

編集2022/01/14 00:56
hogefugapiyo

総合スコア3302

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

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

maroyaka

2022/01/14 07:58

回答ありがとうございます。 最終的にやりたいのは https://teratail.com/questions/377054 これです。 詳細画面(Detail)もListにしました。 itemがnullじゃなかったら & toggleがisOnだったら List<item>/[i]をクリックした時、List<GameObject>[i]を表示させたいです。 その為には2つのListの紐付けが必要かと考え今回質問しました。
maroyaka

2022/01/14 08:06

説明不足で申し訳ありませんでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問