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

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

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

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

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Q&A

解決済

1回答

425閲覧

他クラスで作成したListを別のクラスで参照したい

INC

総合スコア1

C#

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

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

0グッド

0クリップ

投稿2022/08/05 16:09

前提

初投稿です。至らない点があれば指摘お願いいたします。
Issa_inventoryで宣言したinventoryのListをまた新しいクラスで参照して使いたいのですが
いまいち調べてみても書き方がわかりません。

実現したいこと

Issa_incentoryのinventoryを新しく作ったスクリプトの中で参照したい。

C#

1public class Issa_inventory : MonoBehaviour 2{ 3 4 List<Issa_Goods> inventory = new List<Issa_Goods>(); 56

C#

1public class Issa_Goods : MonoBehaviour 2{ 3 4 GameObject itemObject; 5 string itemName; 6 Image image; 78 9

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

BeatStar

2022/08/05 23:13

ヒント: プロパティ
退会済みユーザー

退会済みユーザー

2022/08/05 23:56

> ヒント: プロパティ どういう意味ですか? フィールドに代えてプロパティにすればアクセスできると言ってます? 違いますよね?
guest

回答1

0

ベストアンサー

変数 inventory にアクセス修飾子を付与してないのでデフォルトで private になって他のクラスからはアクセスできないということ?

であれば、public を付与して望むことができませんか?

投稿2022/08/05 22:46

編集2022/08/05 22:47
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

INC

2022/08/06 16:37

public class Issa_analysis : MonoBehaviour { Issa_inventory itemCount; void Start() { itemCount = new Issa_inventory(); itemCount = Issa_inventory.inventory.Count; } private void OnTriggerEnter(Collider other) { //ここにアイテムを所持しているかのチェックするif関数を入れる } このスクリプトで質問に書いたスクリプトのlistの個数などの情報にアクセスしたいのですが 「CS0120静的ではないフィールド、メソッド、プロパティでオブジェクト参照が必要です」とエラーが出てきます。 publicを付与してもこれが取れないので調べてもどう書いたらいいのかわかりません。
退会済みユーザー

退会済みユーザー

2022/08/06 22:23

Issa_inventory クラスの inventory はインスタンスフィールドなので、Issa_inventory クラスのインスタンスからでないと取得できません。 C# 的な話に限れば、(1) Issa_inventory クラスのインスタンスを Issa_analysis に渡す、または、(2) エラーメッセージにある「静的ではないフィールド」を静的に変更する、と言った解決法方があります・・・が、質問者さんのプログラム的にどれが良いのかはわかりません。
len_souko

2022/08/08 10:16

Unityな話をすると、別のスクリプトのクラス(MonoBehaviourを継承しているのでどこかのオブジェクトにコンポーネントで追加してるものですよね?)を参照するには、対象となるGameObjectをどない貸して拾ってきます。よくやるのは[SerializeField]属性を添付したprivateのフィールドを用意してインスペクターで設定します。 で、スクリプト内でそのGameObjectのフィールドからGetCompornent<取得したいクラス名>()で対象となるクラスのインスタンスを取得します。 2022/08/07 01:37のコメントで書いているコードだと、ゲームオブジェクトに紐づいているインスタンスとは全く異なるインスタンスを生成していますので、意味がありません また、サーファーさんの回答にあるアクセス修飾子も含めてひとまずC#の基礎を勉強しないと分からないままかもしれないので勉強しましょう。 以下は僕が個人的な勉強で使用したサイト https://ufcpp.net/
INC

2022/08/08 18:48

len_soukoさんのおっしゃっていたことを試したところ問題なく解決したので次に進めました。ありがとうございました。SurferOnWwwさんも色々と調べるきっかけとなるキーワードももらえて新しい知識を勉強する機会になりました。ありがとうございます。 また勉強不足なので出直してきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問