WOW8论坛

 找回密码
 立即注册
搜索
热搜: 地形 技能 Lua
查看: 26|回复: 0

Unity脚本:在Animation中回调事件,从而实现更精准的Animation动作+游戏逻辑结合

[复制链接]
发表于 2018-7-11 18:53:38 | 显示全部楼层 |阅读模式
本帖最后由 皇家骑士 于 2018-7-11 19:18 编辑

在Unity开发中经常会遇到需要在Animation的某个帧调用某些相关逻辑脚本并执行一系列逻辑动作的情况,但直接在Animation中调用“动作”会导致Animation变得非常臃肿和难以维护。
经过实践所得出,比较好的办法是在Animation的某帧中回调事件,随后在脚本中对应的事件内去添加需要的游戏逻辑。

以我所做的一个铁锤动画为例,这个铁锤需要在开始出现时播放提示音效,在砸中墙壁时播放砸中墙壁的音效,随后在完成铁锤的收回动画时摧毁这个铁锤对象。

形成下面的代码:

[C#] 纯文本查看 复制代码
using UnityEngine;

namespace DCGame
{
  public class MachineBossHammerController : DCMonoBehaviour
  {
    public AudioParameters audioRise;
    public AudioParameters audioHitted;

    [SerializeField] private GameObject rootNode;

    /// <summary>
    /// 用于在Animation中回调的事件
    /// </summary>
    public void OnHammerFinish()
    {
      enabled = false;
      Destroy(this);
      Destroy(rootNode);
    }

    /// <summary>
    /// 用于在Animation中回调的事件
    /// </summary>
    public void OnHammerRise()
    {
      PlayAudio2D(audioRise);
    }

    /// <summary>
    /// 用于在Animation中回调的事件
    /// </summary>
    public void OnHammerHitted()
    {
      PlayAudio2D(audioHitted);
    }
  }
}


对应在Animation中的使用方式:

~tick.jpg

~func.jpg
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|WOW8论坛  

GMT+8, 2018-8-18 22:15 , Processed in 0.039862 second(s), 5 queries , File On.

WOW8 © 2018

Powered by Discuz! X3.3

快速回复 返回顶部 返回列表