ponz

[Unity]
お世話になっております。
基本的な質問で大変申し訳ないのですが、イベントを使ってUnityで音を鳴らす方法がわかりません。
https://youtu.be/cg-Rsq1FvDY
こちらの動画を参考に以下のように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();
}
}


}
ponz
  • 記事: 1

Harald

メソッドのシグネチャは 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.
アバター
Harald

Harri
  • 記事: 1711


Return to 日本のSpine ユーザー