zoukankan      html  css  js  c++  java
  • NGUI动态播放视频

     1 using UnityEngine;
     2 using System.Collections;
     3 
     4 public class TestLage : MonoBehaviour {
     5     public MovieManage Movie;//定义一个播放器组件
     6     public UITexture uiTexture;
     7     public GameObject ga;
     8     private string rootPath = "StreamingAssets/MovieSamples/";//存放音乐的地址
     9     // Use this for initialization
    10     void Start () {
    11     }
    12     // Update is called once per frame
    13     void Update () {
    14     }
    15     /// <summary>
    16     /// 回调方法
    17     /// </summary>
    18     /// <param name="str"></param>
    19     public void MyAction(string str)
    20     {
    21         Debug.Log(str);
    22     }
    23     void OnGUI()
    24     {
    25         if (GUILayout.Button("PLAY"))
    26         {
    27             if (ga==null)
    28             {
    29                 Creat();
    30             }
    31             Movie.setAction(MyAction);
    32             Movie.PlayMovie("HandOfFate");
    33         }
    34         if (GUILayout.Button("PAUSE"))
    35         {
    36             if(ga!=null)
    37             {
    38                 Movie.PauseMovie();
    39             }
    40         }
    41         if (GUILayout.Button("STOP"))
    42         {
    43             if (ga != null)
    44             {
    45                 Movie.StopMovie();
    46             }
    47         }
    48         if (GUILayout.Button("Destroy"))
    49         {
    50             if (ga != null)
    51             {
    52                 DestroyMovie();
    53             }
    54         }
    55     }
    56 
    57     public void DestroyMovie()
    58     {
    59         if (ga!= null)
    60         {
    61             Movie.Texture1.Stop();
    62             Destroy(ga);
    63         }
    64     }
    65 
    66     public void Creat()
    67     {
    68         ga = NGUITools.AddChild(this.gameObject);
    69         ga.name = "ga";
    70         ga.AddComponent<MovieManage>();
    71         Movie =ga.GetComponent("MovieManage") as MovieManage;//获取播放器组件
    72         UITexture tex = NGUITools.AddChild<UITexture>(ga.gameObject);
    73     }
    74 }

    电影管理代码

     1 using UnityEngine;
     2 using System.Collections;
     3 using System;
     4 /// <summary>
     5 /// 说明:
     6 /// 方法:1  MovieManage.PlayMovie("MovieName");MovieName是电影名,必须在resources文件夹下面,rootPath是相对resources。
     7 ///       2  MovieManage.Texture1.Play();播放电影
     8 ///       3  Movie.Texture1.Pause();暂停电影
     9 ///       4  Movie.Texture1.Stop();停止播放电影
    10 /// </summary>
    11 public class MovieManage : MonoBehaviour {
    12     private string rootPath = "StreamingAssets/MovieSamples/";//存放音乐的地址
    13     public MovieTexture Texture1;
    14     public UITexture uiTexture;
    15     private Action<string> action;
    16     public bool checkFlag = false;
    17 
    18     public bool SPFlag = true;
    19 
    20     public void setAction(Action<string> action)
    21     {
    22         this.action = action;
    23     }
    24     // Use this for initialization
    25     void Start () {
    26     }
    27     // Update is called once per frame
    28     void Update () {
    29         if (checkFlag)
    30         {
    31             uiTexture.GetComponent<UIWidget>().width = Screen.width;
    32             uiTexture.GetComponent<UIWidget>().height = Screen.height;
    33             if (SPFlag)
    34             {
    35                 if (!Texture1.isPlaying)
    36                 {
    37                     action("MovieTest测试");
    38                     checkFlag = false;
    39                     Texture1.Stop();
    40                     Destroy(gameObject);
    41                 }
    42  
    43             }
    44         }
    45     }
    46     public void PlayMovie(string movieName)
    47     {
    48         uiTexture = (UITexture)this.transform.FindChild("Texture").GetComponent<UITexture>();
    49         //在这里资源加载,movie是视频的文件名不需要后缀名
    50         Texture1 = (MovieTexture)Resources.Load(rootPath + movieName, typeof(MovieTexture));
    51         uiTexture.mainTexture= Texture1;
    52         Texture1.Play();
    53         checkFlag = true;
    54         SPFlag = true;
    55     }
    56     public void StopMovie()
    57     {
    58         SPFlag = false;
    59         Texture1.Stop();
    60     }
    61     public void PauseMovie()
    62     {
    63         Texture1.Pause();
    64         SPFlag = false;
    65     }
    66     
    67 }

    核心代码:

    ga = NGUITools.AddChild(this.gameObject);//自动生成gameObject物件
    ga.name = "ga";//修改名字
    ga.AddComponent<MovieManage>();//添加脚步组件
    Movie =ga.GetComponent("MovieManage") as MovieManage;//获取播放器组件
    UITexture tex = NGUITools.AddChild<UITexture>(ga.gameObject);//给ga添加UITexture组件。

  • 相关阅读:
    B-树和B+树
    线程与内核对象的同步-2
    线程与内核对象的同步
    高级线程同步 临界区
    Levenshtein Distance (编辑距离) 算法详解
    平衡二叉树
    静态查找表
    C++中的容器类详解
    How do I list all tables/indices contained in an SQLite database
    SmartGit STUDY 2
  • 原文地址:https://www.cnblogs.com/lfy007/p/4822150.html
Copyright © 2011-2022 走看看