Unity支持的播放視頻格式有.mov、.mpg、.mpeg、.mp4、.avi和.asf。只需將對(duì)應(yīng)的視頻文件拖拽入Project視圖即可,它會(huì)自動(dòng)生成對(duì)應(yīng)的MovieTexture對(duì)象
 Unity支持的播放視頻格式有.mov、.mpg、.mpeg、.mp4、.avi和.asf。只需將對(duì)應(yīng)的視頻文件拖拽入Project視圖即可,它會(huì)自動(dòng)生成對(duì)應(yīng)的MovieTexture對(duì)象。如下圖所示,MOMO將default_video.mp4拖拽入Project視圖中,如果視頻中含有音頻的話會(huì)對(duì)應(yīng)生成audio文件,因?yàn)槲业囊曨l沒有音頻所以沒有生成 audio文件。接著在Hierarchy視圖中創(chuàng)建一個(gè)Plane對(duì)象視頻將在它之上播放,Directional light世界定向光用于照亮整個(gè)游戲場(chǎng)景,最后Main Camera對(duì)象將直直的照射在Plane對(duì)象。

使用對(duì)象拖拽的形式為Mov Texture對(duì)象賦值,那么在腳本中就能直接使用它了,我們看看Test.cs腳本。
Test.cs
[代碼]c#/cpp/oc代碼:
    
        
            | 02 | 
            using System.Collections; | 
        
    
 
    
        
            | 04 | 
            public class Test: MonoBehaviour | 
        
    
 
    
        
            | 08 | 
                public MovieTexture movTexture; | 
        
    
 
    
        
            | 12 | 
                    //設(shè)置當(dāng)前對(duì)象的主紋理為電影紋理 | 
        
    
 
    
        
            | 13 | 
                    renderer.material.mainTexture = movTexture; | 
        
    
 
    
        
            | 14 | 
                    //設(shè)置電影紋理播放模式為循環(huán) | 
        
    
 
    
        
            | 15 | 
                    movTexture.loop = true; | 
        
    
 
    
        
            | 20 | 
                    if(GUILayout.Button("播放/繼續(xù)")) | 
        
    
 
    
        
            | 23 | 
                        if(!movTexture.isPlaying) | 
        
    
 
    
        
            | 30 | 
                    if(GUILayout.Button("暫停播放")) | 
        
    
 
    
        
            | 36 | 
                    if(GUILayout.Button("停止播放")) | 
        
    
 
 
 
 
如下圖所示,點(diǎn)擊按鈕后輕松的實(shí)現(xiàn)播放、暫停、停止操作。默認(rèn)視頻大小大家可在編輯器直接縮放Plane對(duì)象平面,而如果需要在游戲運(yùn)行中動(dòng)態(tài)的縮放平面使用方法:
[代碼]c#/cpp/oc代碼:
    
        
            | 1 | 
            transform.localScale = new Vector(1,1,1); | 
        
    
 
 
 
 
模型默認(rèn)縮放系數(shù)為1,這里可以調(diào)節(jié)平面X、Y、Z三個(gè)方向的縮放系數(shù),平面的大小會(huì)隨之改變,對(duì)應(yīng)視頻的大小也會(huì)隨之改變。

 第二種播放視頻的方式基于GUI。大家可以把剛剛創(chuàng)建的Plane對(duì)象以及世界定向光刪除,直接將腳本綁定在攝像機(jī)對(duì)象中即可,接著我們簡(jiǎn)單的修改一下剛剛的游戲腳本。
Test.cs
[代碼]c#/cpp/oc代碼:
    
        
            | 02 | 
            using System.Collections; | 
        
    
 
    
        
            | 04 | 
            public class Test: MonoBehaviour | 
        
    
 
    
        
            | 08 | 
                public MovieTexture movTexture; | 
        
    
 
    
        
            | 12 | 
                    //設(shè)置電影紋理播放模式為循環(huán) | 
        
    
 
    
        
            | 13 | 
                    movTexture.loop = true; | 
        
    
 
    
        
            | 19 | 
                    GUI.DrawTexture (new Rect (0,0, Screen.width, Screen.height),movTexture,ScaleMode.StretchToFill);  | 
        
    
 
    
        
            | 21 | 
                    if(GUILayout.Button("播放/繼續(xù)")) | 
        
    
 
    
        
            | 24 | 
                        if(!movTexture.isPlaying) | 
        
    
 
    
        
            | 31 | 
                    if(GUILayout.Button("暫停播放")) | 
        
    
 
    
        
            | 37 | 
                    if(GUILayout.Button("停止播放")) | 
        
    
 
 
 
 
在 GUI中播放視頻的原理是直接通過GUI調(diào)用DrawTexture方法,這里和繪制貼圖很想了吧嘿嘿~ 目前播放視頻的大小是屏幕的寬高,如果想動(dòng)態(tài)的修改視頻的寬或高直接修改new Rect() 視頻顯示區(qū)域即可,如下圖所示,視頻已經(jīng)滿滿的填充在整個(gè)GUI中啦。怎么樣Unity中播放視頻簡(jiǎn)單吧? 哇咔咔~
