- 效果
-
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(); ? ? ? ?? ? ? } ? }
|