回答編集履歴
3
画像の追加
test
CHANGED
@@ -90,3 +90,5 @@
|
|
90
90
|
}
|
91
91
|
}
|
92
92
|
```
|
93
|
+
|
94
|
+
![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2023-11-26/f95228dc-36f9-4175-8b90-a1b87163ecfa.png)
|
2
指摘修正
test
CHANGED
@@ -15,7 +15,8 @@
|
|
15
15
|
BGMManagerにスライダーをアサインするのではなく、スライダーのスクリプトを作ってそちらからBGMManagerを参照するほうがいいと思います。
|
16
16
|
また、「BGMのあるオブジェクト」を破棄したくない(コメント参照)ので、新しいほうが破棄する形にしています。
|
17
17
|
使用する際は、BGMSliderをスライダーのゲームオブジェクトにアタッチしてください。
|
18
|
-
また、スライダーに登録する関数を``BGMManager.SetBGMVolume()``から``BGMSlider.SetBGMVolume()``に変更してください。
|
18
|
+
また、**スライダーに登録する関数を``BGMManager.SetBGMVolume()``から``BGMSlider.SetBGMVolume()``に変更してください。**
|
19
|
+
(スライダーに直接、BGMManager.SetBGMVolume()を登録しないでください)
|
19
20
|
動作未確認なので、エラーや不具合は適宜修正してください。
|
20
21
|
|
21
22
|
```C#
|
1
コードを追加
test
CHANGED
@@ -8,3 +8,84 @@
|
|
8
8
|
```C#
|
9
9
|
Destroy(Instance.audioSourceBGM); // 既存のBGMを停止
|
10
10
|
```
|
11
|
+
|
12
|
+
---
|
13
|
+
|
14
|
+
追記:
|
15
|
+
BGMManagerにスライダーをアサインするのではなく、スライダーのスクリプトを作ってそちらからBGMManagerを参照するほうがいいと思います。
|
16
|
+
また、「BGMのあるオブジェクト」を破棄したくない(コメント参照)ので、新しいほうが破棄する形にしています。
|
17
|
+
使用する際は、BGMSliderをスライダーのゲームオブジェクトにアタッチしてください。
|
18
|
+
また、スライダーに登録する関数を``BGMManager.SetBGMVolume()``から``BGMSlider.SetBGMVolume()``に変更してください。
|
19
|
+
動作未確認なので、エラーや不具合は適宜修正してください。
|
20
|
+
|
21
|
+
```C#
|
22
|
+
using UnityEngine;
|
23
|
+
using UnityEngine.UI;
|
24
|
+
|
25
|
+
public class BGMManager : MonoBehaviour
|
26
|
+
{
|
27
|
+
private AudioSource audioSourceBGM;
|
28
|
+
public AudioClip bgm;
|
29
|
+
|
30
|
+
public static BGMManager Instance;
|
31
|
+
|
32
|
+
private void Awake()
|
33
|
+
{
|
34
|
+
if (Instance == null)
|
35
|
+
{
|
36
|
+
Instance = this;
|
37
|
+
DontDestroyOnLoad(gameObject);
|
38
|
+
|
39
|
+
audioSourceBGM = gameObject.AddComponent<AudioSource>();
|
40
|
+
audioSourceBGM.loop = true;
|
41
|
+
audioSourceBGM.clip = bgm;
|
42
|
+
audioSourceBGM.Play();
|
43
|
+
}
|
44
|
+
else
|
45
|
+
{
|
46
|
+
// すでに存在する場合は即座に破棄する
|
47
|
+
Destroy(gameObject);
|
48
|
+
}
|
49
|
+
}
|
50
|
+
|
51
|
+
public void PlayBGM()
|
52
|
+
{
|
53
|
+
if (!audioSourceBGM.isPlaying)
|
54
|
+
{
|
55
|
+
audioSourceBGM.Play();
|
56
|
+
}
|
57
|
+
}
|
58
|
+
|
59
|
+
// BGMSliderから呼び出す用
|
60
|
+
// ※こちらはスライダーに直接登録しない。代わりにBGMSliderのSetBGMVolume()を登録する
|
61
|
+
public void SetBGMVolume(float volume)
|
62
|
+
{
|
63
|
+
audioSourceBGM.volume = volume;
|
64
|
+
}
|
65
|
+
|
66
|
+
// BGMSliderから呼び出す用
|
67
|
+
public float GetBGMVolume()
|
68
|
+
{
|
69
|
+
return audioSourceBGM.volume;
|
70
|
+
}
|
71
|
+
}
|
72
|
+
```
|
73
|
+
|
74
|
+
```C#
|
75
|
+
using UnityEngine;
|
76
|
+
using UnityEngine.UI;
|
77
|
+
|
78
|
+
public class BGMSlider : MonoBehaviour
|
79
|
+
{
|
80
|
+
private void Start()
|
81
|
+
{
|
82
|
+
GetComponent<Slider>().value = BGMManager.Instance.GetBGMVolume();
|
83
|
+
}
|
84
|
+
|
85
|
+
// こちらをスライダーに登録
|
86
|
+
public void SetBGMVolume(float volume)
|
87
|
+
{
|
88
|
+
BGMManager.Instance.SetBGMVolume(volume);
|
89
|
+
}
|
90
|
+
}
|
91
|
+
```
|