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

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

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

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

Unity

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

Q&A

解決済

2回答

179閲覧

instatiate関数またリストの不具合

ryo76588

総合スコア13

C#

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

Unity

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

0グッド

0クリップ

投稿2019/04/18 04:31

前提・実現したいこと

オブジェクトをinstatiateをつかってシーン上に実体化させたい
ここに質問の内容を詳しく書いてください。
unityでinstatiate を使ってプレハブの実体化をしようと思ったのですがうまくできず、エラーメッセージとしてはオブジェクトが
指定されておらずnullであるといわれています。

■■な機能を実装中に以下のエラーメッセージが発生しました。

発生している問題・エラーメッセージ

NullReferenceException:

1cardGenerator.Start () (at Assets/sprict/cardGenerator.cs:26) 2 3エラーメッセージ

該当のソースコード

ソースコード ```c# using System.Collections; using System.Collections.Generic; using UnityEngine; public class cardGenerator : MonoBehaviour { public GameObject cardPrefab;//インスタンス化のための public GameObject hand;//親にする要素指定 List<cardData> cardDataList = new List<cardData>() { new cardData(10,"ヤドラン","水鉄砲"), new cardData(1,"ヤドラン","水鉄砲"), new cardData(10,"ヤドラン","水鉄砲"), new cardData(10,"ヤドラン","水鉄砲"), new cardData(10,"ヤドラン","水鉄砲"), }; void Start() { for ( int i = 0 ; i < cardDataList.Count; i++) { GameObject cardObj = Instantiate(cardPrefab);//生産 cardObj.transform.SetParent(hand.transform);//親指定 Card card = cardObj.GetComponent<Card>();//カードクラスのカード変数にスクリプト代入 card.Load(cardDataList[i]); } } } using System.Collections; using System.Collections.Generic; using UnityEngine; public class cardData { public int hp; public string name; public string effect; public cardData(int _hp,string _name,string _effect) { hp = _hp; name = _name; effect = _effect; } } public class Card : MonoBehaviour { int hp; string Name; string effect; public void Load(cardData _cardData) { hp = _cardData.hp; Name = _cardData.name; effect = _cardData.effect; } } ### 試したこと ここに問題に対して試したことを記載してください。 ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答2

0

ありがとうございます。
カードプレハブにすっかりcardスクリプトをアタッチするの忘れていました。
しっかりシーン上にインスタンス化されるようになりました、ですがまだなぜかnull referenceexeception というエラーメッセージが出てますそしてcardgenerator スクリプトのcard.loadというメソッドを使用してるところに問題があると言われてます、あと少し助言をお願いします。

投稿2019/04/18 05:17

ryo76588

総合スコア13

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

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

yzccdefine

2019/04/18 07:31

エラー文をすべて教えてもらえますか?
yzccdefine

2019/04/18 07:39 編集

Card card = cardObj.GetComponent<Card>();//カードクラスのカード変数にスクリプト代入 Debug.Log(card == null); card.Load(cardDataList[i]); 上記で実行してConsoleに何が出るか確認してみましょう
ryo76588

2019/04/18 11:52

え!なぜかdebug.log入れたらエラー表示でなくなりました、いろいろ不思議だなぁー 結果はfalseでした。 今回は質問に答えていただきありがとうございました。
yzccdefine

2019/04/19 03:08

解決したようでなによりです
guest

0

ベストアンサー

エラーメッセージが部分的に書かれているようなので
憶測で返答になります

・cardPrefab、handは共にインスペクターに参照されていますか?
・cardPrefabにCardはAddCompornentされていますか?
上記2点を確認すると直るかと思います

余談ですが
ソースコードは「```」これを2回書いて囲うブロックで書くといいですよ!

投稿2019/04/18 05:02

yzccdefine

総合スコア65

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問