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

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

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

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

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

Q&A

解決済

1回答

2602閲覧

インスペクターにpublicな変数が表示されない(BGM/SoundEffect)

mcbkar

総合スコア7

Unity

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

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

0グッド

0クリップ

投稿2022/01/04 03:03

編集2022/01/04 03:21

前提・実現したいこと

Unityでスクリプトから複数効果音を鳴らしたい

publicを効果音の数だけ準備したのですが、インスペクターにpublicにした変数が表示されず効果音をアタッチすることができません。

BGMは効果音と同じようにして複数〜してアタッチすることができたのですが、なぜ効果音だけできないのかわかりません。

というよりbgmも最初に設定した2つから増やすことができません。

Audio Sourceコンポーネントは現在2つ(BGM/効果音用)ありますが、これは何か関係してますか?

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

インスペクターにpublicな変数が表示されない

該当のソースコード

soundEffect

1 public AudioClip sound1; 2 public AudioClip sound2; 3 //使用するAudioSource 4 private AudioSource sourceEffect; 5 6 // Start is called before the first frame update 7 void Start() 8 { 9 sourceEffect = GetComponent<AudioSource> (); 10 } 11 12 // Update is called once per frame 13 void Update() 14 { 15 16 }

BGM

1 public AudioClip BGM_over; 2 public AudioClip BGM_main; 3 //使用するAudioSource 4 private AudioSource source; 5//ゲームオーバーに切り替えるための変数 6 private int mCount = 1; 7 8//SceneChangeで途切れさせないための処理 9 private void Awake() { 10 int numMusicPlayers = FindObjectsOfType<Sounds>().Length; 11 if (numMusicPlayers > 1) 12 { 13 Destroy(gameObject); 14 } else { 15 DontDestroyOnLoad(gameObject); 16 } 17 } 18 // Start is called before the first frame update 19 void Start() 20 { 21 //使用するAudioSource取得 22 source = GetComponent<AudioSource> (); 23 24 //最初のBGM再生 25 source.clip = BGM_main; 26 source.Play(); 27 28 }

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

質問した後GameManagerで関数を作ったことで効果音をアタッチすること自体はできたのですが、

CS0122というアクセス制限エラーが出てしまいました。

GameManager

1public class 〜{ 2 3 public GameObject _change; 4 public SoundEffects Effect; 5 6 public void Sound1Effect(){ 7 _change = GameObject.Find ("SoundEffect"); 8 Effect = _change.GetComponent<SoundEffects>(); 9 Effect.sourceEffect.clip = sound1; 10 Effect.sourceEffect.PlayOneShot(Effect.sound1); 11 } 12} 13

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

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

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

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

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

guest

回答1

0

自己解決

自己解決したので解決方法を記入します。

最初の問題は、補足に書いた通りGameManagerに関数を作ることで解決しました。

補足で発生した問題は、privateなsoundEffectにアクセスしようとしてたのでエラーが発生したみたいでした。なのでprivateをpublicに変更したら解決できました。

投稿2022/01/04 03:37

mcbkar

総合スコア7

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問