• 日本語
  • [Unity]Unityでの音の鳴らし方

[Unity]
お世話になっております。
基本的な質問で大変申し訳ないのですが、イベントを使ってUnityで音を鳴らす方法がわかりません。

こちらの動画を参考に以下のようにC#でスクリプトを書いたのですが、
animState.Event += OnEvent;
の部分でコンパイルエラーが出てしまいます。
どのようにスクリプトを修正したらいいでしょうか?
また、C#以外でもUnityでイベントと連動して音を鳴らす方法があれば、
何のスクリプトでどのように記述すればいいか教えていただけると助かります。
基本的な質問で本当に申し訳ございませんが、何卒ご教授のほどよろしくお願い申し上げます。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Spine.Unity; //Spineデータの操作に必要
using Spine;

public class PlayerController : MonoBehaviour
{
    SkeletonAnimation skeletonAnim = null; //スケルトンアニメーション
    Spine.AnimationState animState = null; //アニメーションの状態
    Spine.Skeleton skel = null;     //スケルトンそのもの

// Start is called before the first frame update
void Start()
{
    skeletonAnim = GetComponent<SkeletonAnimation>();
    skel = skeletonAnim.Skeleton;
    animState = skeletonAnim.state;

    animState.Event += OnEvent;  //ここでコンパイルエラーが出てしまいます

}

void OnEvent(Spine.AnimationState state, int trackIndex, Spine.Event e)
{
    if (e.Data.Name == "footstep")
    {
        GetComponent<AudioSource>().Stop();
        GetComponent<AudioSource>().Play();
    }
}


}
Related Discussions
...

メソッドのシグネチャは AnimationState.Event delegate には適していません。
The method signature is not suitable for the AnimationState.Event delegate.

引数は以下の通りです。
Your arguments are:

void OnEvent(Spine.AnimationState state, int trackIndex, Spine.Event e)

しかし、そうあるべきです。
But it should be:

void OnEvent(Spine.AnimationState state, Spine.Event e)

これは Spine Examples/Getting Started/2 Controlling Animation のサンプルシーンでデモされています。
This is demonstrated in the Spine Examples/Getting Started/2 Controlling Animation example scene if you want to see some reference code.

4달 후

ありがとうございます、解決しました!
お返事が大変遅くなってしまい申し訳ございませんでした?

6일 후

お知らせいただきありがとうございます。問題を解決できてうれしいです。
Thanks for letting us know, glad we could resolve the problem!