這就開始做
關(guān)于Unity的介紹以及如何創(chuàng)建項目,我就不多說了,因為百度很容易?,F(xiàn)在就開始直接做,因為我也是要邊做邊學(xué),所以必定會有很多不足。大佬們覺得哪里不對,歡迎指正!
開發(fā)環(huán)境
windows10
jdk
android sdk
Unity 2017.3?官網(wǎng)?游戲開發(fā)軟件(必須)
VS2017 中文專業(yè)版?官網(wǎng)?C#編程調(diào)試軟件(推薦)
ReSharperUltimate.2017官網(wǎng)? C#代碼生成工具(可選)
制作游戲開場動畫
新建Unity 2D項目
做一款2D單機手游,回合制,沙盒模式。
做前準(zhǔn)備
我在網(wǎng)上找了一個武俠游戲的宣傳動畫,用于制作開場動畫。找到的那個動畫時間太長,所以我下載了ffmpeg進行動畫剪裁,截取合適的動畫,作為我游戲的開場動畫。(侵刪)
1.如圖,將ffmpeg.exe和完整動畫放到同一個文件夾。
2.打開命令行:運行->cmd,打開后輸入下面的命令。
f: cd?F:Videos
(win10系統(tǒng)可以shift+鼠標(biāo)右鍵->在此處打開命令窗口,免去輸入上述命令)
3.截取視頻
剪裁命令?ffmpeg -ss [開始時間] -t [剪裁時長] -i [輸入文件] -vcodec copy -acodec copy [輸出文件]
其中-vcodec copy是復(fù)制輸入文件的視頻編碼方式,-acodec copy是復(fù)制輸入文件的音頻編碼方式。
我要截取4s到18s的視頻,所以我輸入了下面的命令。
ffmpeg?-ss?00:00:04?-t?00:00:14?-i?f完整動畫.avi?-vcodec?copy?-acodec?copy?StartCartoon.mp4
導(dǎo)入動畫
1.命令執(zhí)行完,得到StartCartoon.mp4動畫視頻文件。
2.打開Unity,在Project面板Assets文件夾下新建文件夾Resources,右鍵->Create->Folder,為文件夾取名為Resources,作為存儲資源的位置。
3.在文件夾Resources下繼續(xù)創(chuàng)建Movies文件夾,用來存放視頻文件。
4.Movies文件夾下,右鍵->Import new Asset,選擇剛才做好的視頻StartCartoon.mp4。
創(chuàng)建腳本
1.在Assets下新建場景文件夾Scenes。
2.新建場景Start,右鍵Scenes文件夾->Create->Scene,命名為Start,作為我們的開始場景。
3.雙擊Start場景,選中Main Camera主攝像頭。
4.添加Script組件——開始菜單,Inspector面板中,點擊Add Component->New Script->在name欄中輸入"StartMenu"->language選擇C Sharp。5.在Assets下新建場景文件夾Scripts,將新建的StartMenu.cs拖入Scripts文件夾中。
配置視頻文件
1.Movies下找到視頻StartCartoon,Import Version選擇Video Clip,選中Flip Horizontally(水平填充)、Flip Vertically(垂直填充)和Override for Android(為安卓重做),最后點擊Apply(應(yīng)用)。
2.先選中Main Camera,新建Video Player組件,Add Component->Video->Video Player。
3.將視頻拖入
4.設(shè)置視頻播放參數(shù)
Play On Awake?很重要!如果設(shè)置為false(未選中)時,在awake的時候就已經(jīng)開始播放視頻了,而此時聲音模塊還沒來得及加載,就會出現(xiàn)沒有聲音的情況;只有設(shè)置為true(選中)時,當(dāng)你播放第一個視頻時才會有聲音,它保證了在聲音AudioSource模塊設(shè)置完成的情況先才開始播放視頻。
Wait For First Frame 選中時,決定是否在第一幀加載完成后才播放,只有在Play On Awake被勾選是才有效。可以防止視頻最前幾幀被跳過。
Loop?循環(huán)。
Render Mode?包含了多種視頻渲染的方式可供選擇,包括Camera Far Plane,Camera Near Plane,Render Texture,Material Override,Api Only。
1、Camera Far Plane:基于攝像機的渲染,渲染在攝像機的遠平面上,需要設(shè)置用于渲染的攝像機,同時可以修改alpha通道的值做透明效果,可用于背景播放器。
2、Camera Near Plane:基于攝像機的渲染,渲染在攝像機的近平面上,需要設(shè)置用于渲染的攝像機,同時可以修改alpha通道的值做透明效果,可用作前景播放器。
3、Render Texture:將視頻畫面保存在Render Texture上,以供物體或者RawImage使用,可以用來做基于UGUI的播放器。
4、Material Override:將視頻畫面復(fù)制給所選Render的Material。需要選擇具有Render組件的物體,可以選擇賦值的材質(zhì)屬性??芍谱?60全景視頻和VR視頻。
5、Api Only: 待研究。
其中Camera Far Plane,Camera Near Planehe和Render Texture可以通過設(shè)置Aspect Ratio來選擇自適應(yīng)分辨率的方式.Audio Output Mode用于音頻的播放,None表示不播放音頻,Audio Source表示使用Audio Source進行播放,Direct字面理解應(yīng)該是直接通過視頻來播放。我們需要新建一個AudioSource物體用于音頻播放,Audio Source的Clip不需賦值,其余參數(shù)可調(diào)。
Audio
Output Mode 選擇Audio Source,然后還要創(chuàng)建一個Audio Source組件(Add Component->Audio->Audio
Source,默認配置即可),掛載到Audio Source里,不然視頻是沒有聲音的。
編輯腳本
1.打開腳本,默認情況下,Unity會自動打開VS2017,如果打開的是Mono編輯器,則可以先關(guān)閉Mono,再找到菜單欄Edit->Preferences...->External Tools->External Script Editor中選中Visual Studio 2017,即可食用VS2017編寫C#腳本了。
2.編輯StartMenu腳本
using?UnityEngine; using?UnityEngine.Video; public?class?StartMenu?:?MonoBehaviour { ????public?VideoPlayer?VideoPlayer;?//1.聲明一個VideoPlayer對象 ????//?Use?this?for?initialization ????void?Start() ????{ ????????VideoPlayer?=?GetComponent();?//2.初始化VideoPlayer對象 ????????VideoPlayer.loopPointReached?+=?EndReached;?//當(dāng)前clip播放完成調(diào)用的事件 ????????VideoPlayer.audioOutputMode?=?VideoAudioOutputMode.AudioSource;?//設(shè)置聲音輸出模式 ????????VideoPlayer.SetTargetAudioSource(0,?GetComponent()); ????????VideoPlayer.IsAudioTrackEnabled(0); ????????VideoPlayer.Play();?//開始播放視頻 ????} ????//?Update?is?called?once?per?frame ????void?Update() ????{ ????????if?(VideoPlayer.isPlaying) ????????{ ????????????//視頻正在播放時,如果播放完畢或者點擊屏幕,則停止播放。 ????????????if?(VideoPlayer.clip.name?==?"StartCartoon"?&&?(ulong)VideoPlayer.frame?>=?VideoPlayer.frameCount)? ????????????{ ????????????????//判斷是否播放完畢 ????????????????VideoPlayer.Stop();?//停止播放 ????????????} ????????????if?(Input.GetMouseButtonDown(0)) ????????????{ ????????????????//點擊鼠標(biāo)左鍵(觸摸屏幕) ????????????????VideoPlayer.Stop(); ????????????} ????????} ????} ????private?void?EndReached(VideoPlayer?source) ????{ ????????//todo:?在此處寫視頻播放完畢后的處理代碼 ????} }
3.最后將Video Player拖入腳本的VideoPlayer對象。
預(yù)覽
這樣開場動畫就制作完成了,下面展示下我預(yù)覽的截圖
附件
轉(zhuǎn)載請注明出處:http://blog.csdn.net/klo220/article/details/79248985
【Unity 2017.3 制作安卓2D單機手游】——媲美愛