获取在motion3.json中设置的Event
最終更新: 2017年11月21日
本节说明如何从自动生成的AnimationClip发行的Event中获取motion3.json中设置的Event信息。
概述
[UserData]是3.1开始追加的功能,用户可以在动态的任意时刻发行Event。
在Unity中,Event是从由motion3.json转变而来的AnimationClip发行的。
根据您处理Event的方式,您可以将其用于各种目的,例如从动态中间播放音频或变更部件的显示状态等。
请参考 此处 了解如何在motion3.json中设置Event。
要获取动态发行的Event,请按照以下步骤操作。
- 创建一个接收Event的组件
- 在CubismMotion3Json中追加描述
- 将模型和动态置入到Scene中
创建一个接收Event的组件
在Project视窗中单击[Create],然后单击[C# Script]以创建C#脚本。
这里的名称是UserDataTest。
将创建的UserDataTest的内容改写如下。
using UnityEngine; public class UserDataTest : MonoBehaviour { public void UserDataEventListener(string value) { var currentState = GetComponent<Animator>().GetCurrentAnimatorStateInfo(0); Debug.Log("Time : " + (currentState.length / currentState.speed) + "\n" + "Value : " + value); } }
在CubismMotion3Json中追加描述
打开CubismMotion3Json类,如下描述创建ToAnimationClip()的AnimationEvent的位置。
var animationEvent = new AnimationEvent { time = UserData[i].Time, functionName = "UserDataEventListener", // 追加的行 stringParameter = UserData[i].Value, };
对于functionName,设置接收上一节中创建的UserDataTest类的Event的方法名称。
将模型和动态置入到Scene中
载入或重新载入设置Event的motion3.json。
将模型Prefab置入在Hierarchy视窗中,并将UserDataTest组件附加到Prefab的根。
将motion3.json生成的AnimationClip拖放到置入Hierarchy的Prefab中。
这要就完成了设置。
如果在这种状态下执行Scene,将从正在播放的AnimationClip的特定时间发行Event,并将为Event设置的字符串输出到Console视窗。
请问这篇文章对您有帮助吗?
是否