前提・実現したいこと
Unityでボタンを押した時に特定のキーを押していたら音がなるという風にしたいです。
発生している問題
実行しても何も起こりません。
プログラム
初心者で全然わからないのでネットで拾ったのをくっつけて作ったのでわかる人にとってはめちゃくちゃなことしてると思うのですがどうか大目に見てください…
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class Test : MonoBehaviour { public AudioClip sound1; public AudioClip sound2; public AudioClip sound3; public AudioClip sound4; AudioSource audioSource; void Start () { audioSource = GetComponent<AudioSource>(); } public void OnButtonClick() { KokaOn(); } void KokaOn() { if (Input.GetKey(KeyCode.Q)) { audioSource.PlayOneShot(sound1); } else if (Input.GetKey(KeyCode.W)) { audioSource.PlayOneShot(sound2); } else if (Input.GetKey(KeyCode.E)) { audioSource.PlayOneShot(sound3); } else if (Input.GetKey(KeyCode.R)) { audioSource.PlayOneShot(sound4); } } }
追記
確認したところ、エラーが出ていました。
ArgumentNullException: Value cannot be null. Parameter name: source UnityEngine.AudioSource.PlayOneShot (UnityEngine.AudioClip clip, System.Single volumeScale) (at /Users/builduser/buildslave/unity/build/Modules/Audio/Public/ScriptBindings/Audio.bindings.cs:855) UnityEngine.AudioSource.PlayOneShot (UnityEngine.AudioClip clip) (at /Users/builduser/buildslave/unity/build/Modules/Audio/Public/ScriptBindings/Audio.bindings.cs:844) Test.KokaOn () (at Assets/Test.cs:24) Test.OnButtonClick () (at Assets/Test.cs:19) UnityEngine.Events.InvokableCall.Invoke () (at /Users/builduser/buildslave/unity/build/Runtime/Export/UnityEvent/UnityEvent.cs:180) UnityEngine.Events.UnityEvent.Invoke () (at /Users/builduser/buildslave/unity/build/Runtime/Export/UnityEvent/UnityEvent/UnityEvent_0.cs:58) UnityEngine.UI.Button.Press () (at /Users/(名前)/Desktop/2020.1.0f1/Unity.app/Contents/Resources/PackageManager/BuiltInPackages/com.unity.ugui/Runtime/UI/Core/Button.cs:68) UnityEngine.UI.Button.OnPointerClick (UnityEngine.EventSystems.PointerEventData eventData) (at /Users/(名前)/Desktop/2020.1.0f1/Unity.app/Contents/Resources/PackageManager/BuiltInPackages/com.unity.ugui/Runtime/UI/Core/Button.cs:110) UnityEngine.EventSystems.ExecuteEvents.Execute (UnityEngine.EventSystems.IPointerClickHandler handler, UnityEngine.EventSystems.BaseEventData eventData) (at /Users/(名前)/Desktop/2020.1.0f1/Unity.app/Contents/Resources/PackageManager/BuiltInPackages/com.unity.ugui/Runtime/EventSystem/ExecuteEvents.cs:50) UnityEngine.EventSystems.ExecuteEvents.Execute[T] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.ExecuteEvents+EventFunction`1[T1] functor) (at /Users/(名前)/Desktop/2020.1.0f1/Unity.app/Contents/Resources/PackageManager/BuiltInPackages/com.unity.ugui/Runtime/EventSystem/ExecuteEvents.cs:261) UnityEngine.EventSystems.EventSystem:Update() (at /Users/(名前)/Desktop/2020.1.0f1/Unity.app/Contents/Resources/PackageManager/BuiltInPackages/com.unity.ugui/Runtime/EventSystem/EventSystem.cs:376)
「Debug.Log」等を使って、どこまで正しく実行されているか確認して、質問に追記してください。(本当にOnButtonClickが呼ばれているか?等)(Debug.Logの使い方が分からない場合は「unity Debug.Log」等で調べてください)
>追記に対して
エラーが出た時はまずそれを読んだりググったりしましょう。
「ArgumentNullException: Value cannot be null. Parameter name: source UnityEngine.AudioSource.PlayOneShot」とあるので、
「PlayOneShotに渡している要素がnull」つまり「sound1 〜 sound4」がnullであると推測されます。
これらをちゃんとインスペクタ上でセットしていますか?
セットしているはずなんです…

回答1件
あなたの回答
tips
プレビュー