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

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

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

Q&A

解決済

1回答

377閲覧

unity初心者です

nicoyou

総合スコア129

0グッド

0クリップ

投稿2018/12/03 05:59

編集2018/12/03 06:13

前提・実現したいこと

unityを最近使い始めました

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

UnassignedReferenceException: The variable m_particleSystem of BulletController has not been assigned.
You probably need to assign the m_particleSystem variable of the BulletController script in the inspector.
UnityEngine.ParticleSystem.Play () (at C:/buildslave/unity/build/artifacts/generated/bindings_old/common/ParticleSystem/ParticleSystemBindings.gen.cs:3287)
BulletController.OnTriggerEnter2D (UnityEngine.Collider2D coll) (at Assets/script/BulletController.cs:27)

該当のソースコード

c#

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class BulletController : MonoBehaviour 6{ 7 public ParticleSystem m_particleSystem; 8 9 // Use this for initialization 10 void Start () 11 { 12 13 } 14 15 void Update() 16 { 17 transform.Translate(0, 0.2f, 0); 18 19 if (transform.position.y > 5) 20 { 21 Destroy(gameObject); 22 } 23 } 24 25 void OnTriggerEnter2D(Collider2D coll) 26 { 27 m_particleSystem.Play(); 28 Destroy(coll.gameObject); 29 Destroy(gameObject); 30 } 31}

試したこと

ヒエラルキーのパーティクルシステムを直接アタッチ
projectにもってきてプレハブ化してからアタッチ

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

unityの最新バージョンでゲーム作りの勉強を始めたのですが、入門サイトのアセットストが使えず仕方なくエフェクトを調べながら登録したのですが(ヒエラルキーのパーティクルシステム)これをscriptで扱う方法が分かりません
調べてもアタッチしたのち公書くみたいなものばかりでどうすれば関連付けられるのかを教えてくださいm(__)m

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

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

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

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

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

fiveHundred

2018/12/03 06:07

関連する箇所のソースコード(特にBulletController)を記載してください
nicoyou

2018/12/03 06:10

ご指摘ありがとうございます。書き足しましたm(__)m
guest

回答1

0

ベストアンサー

C#

1 public ParticleSystem m_particleSystem;

上記が設定されていない、あるいは設定が正しくないのだと思われます。


追記:

ParticleSystemをアタッチしたプレハブを用意しておき、そのプレハブからゲームオブジェクトを生成するというのはどうでしょうか。

C#

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class BulletController : MonoBehaviour 6{ 7 public GameObject m_particleSystem; // ParticleSystemをアタッチしているプレハブを設定 8 9 // Use this for initialization 10 void Start () 11 { 12 13 } 14 15 void Update() 16 { 17 transform.Translate(0, 0.2f, 0); 18 19 if (transform.position.y > 5) 20 { 21 Destroy(gameObject); 22 } 23 } 24 25 void OnTriggerEnter2D(Collider2D coll) 26 { 27 GameObject obj = Instantiate(m_particleSystem, transform.position, Quaternion.identity); 28 obj.GetComponent<ParticleSystem>().Play(); 29 Destroy(coll.gameObject); 30 Destroy(gameObject); 31 } 32}

追記2:

イメージ説明

※設定後、ヒエラルキーのゲームオブジェクト(Particle System)は消して大丈夫です。

投稿2018/12/03 06:17

編集2018/12/04 06:34
fiveHundred

総合スコア9796

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

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

nicoyou

2018/12/03 06:22

そのようなエラーをはかれたのですが、どうすればいいのかが分かりません scriptを選択し、右上部分のアタッチ?ができません ヒエラルキーのパーティクルシステムは直接アタッチすることはできないのでしょうか?
fiveHundred

2018/12/03 07:49

具体的な状況がわからないです。 「右上部分のアタッチ?」って何のことでしょうか? アタッチは「スクリプトなどのコンポーネントをゲームオブジェクトに付ける」ことを指すので、もし「変数(m_particleSystem)をインスペクターから設定する」ことに使うのは誤りですが、どちらでしょうか? また、このエラーはm_particleSystemに何を設定しているときに起きたのでしょうか? この場合、「シーン上に既に配置しているパーティクルシステム」を設定するのだと思いますが、プレハブとか設定していないですよね? (プレハブは実体を持っていないので、当然エラーになるはずです)
nicoyou

2018/12/03 17:41

いまいちunityの用語を理解していませんでした 「変数(m_particleSystem)をインスペクターから設定する」をアタッチすると思っており、そういう意味で質問していました >プレハブとか設定していないですよね? プレファブ含め色々ドラッグ&ドロップしたのですが、一度実行するとエラーをはいた後noneになっていたようです >「シーン上に既に配置しているパーティクルシステム」を設定する この言葉だけでは具体的な操作が分からないのでこのあたりを含めて再度調べてきます
nicoyou

2018/12/03 18:09 編集

調べてみましたが、やはりパーティクルの作り方、詳細設定の意味等しか見つけられませんでした noneと表示されている右にある二重丸をクリックしても選択できるAssetsがなく、どのようにすれば設定できるのか教えてくださいm(__)m
fiveHundred

2018/12/04 02:51

どうもこちらの解釈が間違っていたみたいです。 「m_particleSystemはすでに配置済みのものを使いまわす」と解釈していたのですが、それだと複数の弾に対応できないですね…。 なので、プレハブを設定する、で正しいです。 失礼しました。 これを踏まえて、回答に追記しましたがどうでしょうか。
nicoyou

2018/12/04 04:11

伝え方が悪くてすみませんm(__)m 頂いたコードを書いてみたのですが、おそらく同じエラーをはかれてしまいました UnassignedReferenceException: The variable m_particleSystem of BulletController has not been assigned. You probably need to assign the m_particleSystem variable of the BulletController script in the inspector. UnityEngine.Object.Internal_InstantiateSingle (UnityEngine.Object data, Vector3 pos, Quaternion rot) UnityEngine.Object.Instantiate (UnityEngine.Object original, Vector3 position, Quaternion rotation) (at C:/buildslave/unity/build/Runtime/Export/UnityEngineObject.bindings.cs:211) UnityEngine.Object.Instantiate[GameObject] (UnityEngine.GameObject original, Vector3 position, Quaternion rotation) (at C:/buildslave/unity/build/Runtime/Export/UnityEngineObject.bindings.cs:285) BulletController.OnTriggerEnter2D (UnityEngine.Collider2D coll) (at Assets/script/BulletController.cs:31) プレハブを設定するというのはprojectで空のプレファブを生成した後ヒエラルキーのパーティクルシステムをそこへドラック&ドロップし、それをscriptのインスペクター最上部のnoneのところへドラック&ドロップするという方法で正しいのでしょうか? 一つ一つコメントアウトして試してみましたが、 GameObject obj = Instantiate(m_particleSystem, transform.position, Quaternion.identity); の時点でエラーのようです パーティクルシステムにも種類があったりするのでしょうか? ヒエラルキーのparticlesystemの色は現在紺色、少し前までピンク色でした 形状は一枚の画像を分割してコマ送りで描画するタイプのものです
fiveHundred

2018/12/04 04:32

手順としては、以下のようになります。 1. ヒエラルキーに空のゲームオブジェクトを生成 2. そのゲームオブジェクトにParticleSystemをアタッチ 3. そのゲームオブジェクトをプロジェクトにドラック&ドロップ(プロジェクトにプレハブが生成される) 4. m_particleSystemに生成したプレハブをドラック&ドロップで設定 パーティクルシステムはあまり触ったことがないのでよく分かりませんが、設定次第で色々できるそうです。
nicoyou

2018/12/04 05:04

>2. そのゲームオブジェクトにParticleSystemをアタッチ ParticleSystemはヒエラルキーで 作成⇒エフェクト⇒particlesystem を選択して作成したもので、すでにこれ自体でゲームオブジェクトではないのでしょうか? これがゲームオブジェクトではない場合、アタッチの方法が分かりません もし、ParticleSystemが複数あり、今までの説明で別の物と誤解するような書き方をしていたのでしたらすみませんm(__)m
fiveHundred

2018/12/04 05:43

それはParticleSystemのコンポーネントがアタッチ済みのゲームオブジェクトなので、それを使っても大丈夫です。 その場合、そのゲームオブジェクトを使って、3.以降を行ってください。
nicoyou

2018/12/04 06:05

すみません 書いておりませんでしたが、これで3以降を行った時に4つ上の返信の状態になりました エラーの原因は「BulletControllerの変数m_particleSystemが割り当てられていません。」となっていましたが、何故割り当てられていないのかわかりません インスペクターのところを見ると正式に関連付けられているように見えます
fiveHundred

2018/12/04 06:30

手順の画像を回答に掲載しました。 これで試してみてください。
nicoyou

2018/12/04 06:51 編集

分かりやすい画像ありがとうございました 画像の通りに空のオブジェクトを作成し、これにバレットコントローラーをアタッチ particlesystemのプレファブを作成し、これを空のオブジェクトのバレットコントローラー(script)の下段に設定してみましたが、エラーの内容は全く変わっておりませんでした -追記- 頂いた画像を見て、バレットコントローラー(script)が、他のゲームオブジェクト?のプレファブを作る際に関連付けていたのを思い出し、これが原因かもしれないと思い立って別の新規scriptを作成し、そこから頂いた画像の方法でセットしたところ、意図した動きではありませんでしたが、エフェクトの切れ端?の様なものが描画され、エラーが出ませんでした このような情報が関係しているとは思わず、最初に状況として書けなかったこと、すみませんでした それと様々な方法を教えていただいてありがとうございましたm(__)m
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問