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,怕到时候用到顺便记录一下。

扫描二维码关注公众号,回复: 17492583 查看本文章