Unity简单过场动画脚本

        精简的记录一下简单过场动画脚本。不会进行过多讲解了。

前置

        需要一个GameObject,装载必须组件Video Player和Raw Image。      

 这里是把GameObject作为GUI了所以有Canvas Renderer.Raw Image和Video Player都需要Render Texture作为属性,前者是象征后者是投射对象。

 简单来说,Video Player会把Video Clip投射到对应Render Texture上,然后Raw Image是它的载体。

Render Texture可以直接在资源管理面板中右键创建。 

脚本

              

using UnityEngine;
using UnityEngine.Video;
/// <summary>
/// 挂载在具有VideoPlayer组件的物体上,用于实现基本过场动画功能
/// </summary>
[RequireComponent (typeof(VideoPlayer))]
public class CutScene : MonoBehaviour
{
    private VideoPlayer videoPlayer;
    private GameObject skipTip;

    public bool allowToSkip;//允许跳过
    private bool skipTipExist = false;//跳过提示已存在
    public float skipTipExistTime = 2f;//跳过提示持续时间
    private float curSkipTipExistTime = 0f;//当前跳过提示时间

    private void Awake()
    {
        videoPlayer = GetComponent<VideoPlayer>();
        skipTip = transform.GetChild(0).gameObject;//获取方式要具体看情况
    }

    private void Start()
    {
        skipTip.SetActive(false);//跳过提示默认初始为关闭
    }

    private void Update()
    {
        CloseWhenEnd();
        Skip();
    }

    public void Play()//播放(用于外联)
    {
        videoPlayer.Play();
    }

    private void CloseWhenEnd()//播放结束时关闭(提前一帧)
    {
        if (videoPlayer.frame == (long)videoPlayer.frameCount - 1)//通过当前与视频帧数比较
        {
            gameObject.SetActive(false);
        }
    }

    private void Skip()//“跳过动画”功能
    {
        if(skipTipExist)//如果跳过提示存在则一直计时
        {
            curSkipTipExistTime += Time.deltaTime;
            if (curSkipTipExistTime > skipTipExistTime)
            {
                skipTipExist = false;
                skipTip.SetActive(false);
            }
        }

        if(Input.GetKeyDown(KeyCode.E)&&skipTipExist)//如果玩家在提示存在期间按下E(这段一定要置于下一段之前!)
        {
            gameObject.SetActive(false);
        }

        if(Input.anyKeyDown&&!skipTipExist)//玩家按下任意键且跳过提示不存在
        {
            curSkipTipExistTime = 0f;
            skipTip.SetActive(true);
            skipTipExist = true;
        }

        
    }
}

代码内容包含跳过动画和自动结束播放的功能。

挂载在对应的GameObject上即可。

我写的其实比较简单随意,请大家自行修改。

只是简单分享一下。最近在准备GGJ 2024,怕到时候用到顺便记录一下。

  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Moweiii

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值