- 效果
-
VR展览 - My - PC, Mac & Linux Standalone - Unity 2020.3.35f1c2 Personal _DX11_ 2022-07-11 15-29-53
- 新建3D plan 并把视频拖拽到该plan上。
- Material Property:选择_BaseMAp
-
导入Modern UI Pack插件
- 新建Canvas
- 新建Button
public class NewBehaviourScript : MonoBehaviour
{
//视频播放引用
public VideoPlayer ObjectVideo;
//视频播放器初始缩放
public Vector3 videoScale;
//标识播放按钮的图标
public Sprite playIcon;
//标识停止按钮的图标
public Sprite StopIcon;
//按钮播放器
public ButtonManagerIcon Button;
//记录视频的播放状态
private bool isPlaying = false;
void Start()
{
videoScale = ObjectVideo.transform.localScale;
ObjectVideo.gameObject.SetActive(false);
ObjectVideo.Stop();
}
// Update is called once per frame
void Update()
{
}
//控制按钮点播处o理事件
public void OnButtonClick()
{
//如果正在播放 将其关闭
if (isPlaying)
{
StopVideo();
}
else//如果没有播放将开始播放
{
PlayVideo();
}
isPlaying = !isPlaying;
}
//暂停视频
void StopVideo()
{
//视频画面逐渐变黑
Tweener tweenerColor = ObjectVideo.GetComponent<MeshRenderer>().material.DOColor(Color.black, 1f);
//动态缩放为0
Tweener tweenerScale = ObjectVideo.transform.DOScaleX(0, 1f).SetEase(Ease.InQuint);
tweenerScale.onComplete += () => { ObjectVideo.gameObject.SetActive(true); ObjectVideo.Stop(); };
//创建队列 连续播放两个缓动(目的:先变黑再缩放)
Sequence po = DOTween.Sequence();
po.Append(tweenerColor);
po.Append(tweenerScale);
Button.buttonIcon = playIcon;
Button.UpdateUI();
}
//播放视频
void PlayVideo()
{
//显示挂载了视频的游戏对象
ObjectVideo.gameObject.SetActive(true);
ObjectVideo.transform.localScale = new Vector3(0f, videoScale.y, videoScale.z);//属性
ObjectVideo.GetComponent<MeshRenderer>().material.color = Color.black;//黑色
//设置视频播放器的动态形状渐变
ObjectVideo.transform.DOScale(videoScale, 1f).SetEase(Ease.InQuint).onComplete += ()=> { ObjectVideo.Play(); };
//视频播放后 将颜色调成白色
ObjectVideo.started += video => { ObjectVideo.GetComponent<MeshRenderer>().material.DOColor(Color.white, 2f); };
//切换按钮状态图标
Button.buttonIcon = StopIcon;
Button.UpdateUI();
}
}