第一阶段unity基础
第一階段unity基礎
引言
注意:
1.重點:1.適用性(什么時候用,怎么用)<記腦子里>??2.作用(能夠解決什么問題)?3.定義??4.操作/語法
2.每天練習必須會獨立完成
3.形成筆記保存下來
4.課下抓緊練,不懂馬上問
2D游戲:視角完全鎖定,二維坐標
3D游戲:視角可以隨意變化,三維坐標
在移動平臺,Unity幾乎成為3D游戲開發的標準工具
Virtual?Reality
虛擬?????現實
Augmented?Reality
增強????????現實
游戲引擎:程序的框架,一款游戲最最核心的代碼。
*使用游戲引擎,開發者可以重用已有的核心技術,將精力集中在游戲邏輯和設計上,從而簡單快速的創建游戲。
包含以下系統:渲染引擎、物理引擎、碰撞檢測系統、音效、腳本引擎、動畫系統、人工智能、網絡引擎以及場景管理。
U3D特點:
1.簡單易用???2.開發效率高???3.價格便宜???4.新手居多????5.跨平臺(23個平臺間自由遷移,出色的部署,完全的覆蓋)
C#(C?sharp):微軟推出的編程語言
?
Unity引擎基礎
-Unity環境搭建?
-C#?語言基礎
-Unity?API
-3D數學基礎
-物理引擎1
-UGUI
Unity小技巧
如果編輯器意外崩潰了,但場景未保存,這時可以打開工程目錄,找到/Temp/_Backupscenes/文件夾,可以看到有后綴名為.Backup的文件,將該文件的后綴名改為.Unity拖拽到項目視圖,即可還原編輯器崩潰前的場景。
好不容易才調好的坐標,結果發現是在運行模式下,如果退出運行模式就還原了怎么辦?可以在檢視面板右鍵點擊組件名,在彈出界面中選擇copy?Component,然后退出運行模式后同樣右鍵點擊組件名,在彈出界面中選擇paste?Component?Values即可。
分別按鍵盤鍵q、w、e、r、t可以依次切換界面上的小工具,除此之外,按數字鍵2或3還可以切換場景為2d模式或3d模式
所有數值類型的字段,都支持在檢視面板中直接輸入簡單的數值表達式
右鍵點擊檢視面板下方的預覽窗口即可讓預覽窗口跳出來,然后自己選擇合適的地方???#xff0c;這樣切換模型查看就不會影響到其它面板。想讓預覽窗口回到原位,只需右鍵點擊窗口,在彈出菜單中選擇close?Tab即可。
在層次視圖的搜索框中輸入完整的腳本或組件名稱,即可找到所有綁定了該腳本或組件的對象?;蛘咴谒阉骺蛑休斎雝:加上某個類別如light,即可找到使用同類組件的對象。
可以借助編輯器自帶的標記功能為腳本分類,在檢視面板中點擊腳本圖標下方的小三角,即可為腳本設置顏色或選擇圖標。
第一章?:Unity環境搭建
所用軟件:Unity?5.4.0f3?(64-bit)
assets文件夾最重要
Scene場景面板
常用快捷鍵
1.按下鼠標滾輪拖動場景(或者拖動小手),滑動滾輪縮放場景
2.選擇十字標,選定物體,按下F:居中,ALT+鼠標左鍵:圍繞旋轉??ALT+鼠標右鍵:縮放=滑動滾輪
3.右鍵加ASDWQE?場景漫游?
4.按下十字標,選定物體,拖動軸:往前走=向著Z軸正方向,向右走=X軸正方向,向上走=Y軸正方向:反之負方向。拖動面:沿面移動。
5.按下雙曲箭頭標,是按軸旋轉。
6.按下方框和四個箭頭的標,是放大縮小,拖動中間白色小方框是整體按比例放大縮小。
inspector:檢視面板(檢查監視)?顯示的屬性可能不準,在右上角static上邊的小三杠選擇Debug可以查看隱藏屬性,在里面找到要修改的屬性的真正名稱
transform?變換組件????reset?重置
Position?:位置??X?0?Y?0?Z?0?????unity世界原點
Rotation?:角度?X?0?Y?0?Z?0?????角度同世界一致
Scale:?????比例?(一般?X?1???Y?1???Z?1)
unity世界物體都是由小三角組成,物體越細膩小三角越多。
頂點吸附:按下V同時按下左鍵拖動,實現頂點吸附
視覺停留效應:0.02S以內視覺感受不到更新
2D視角:ISO?正交模式?3D視角:Persp??透視模式
?
基礎概念
坐標
世界坐標:整個場景的固定坐標,不隨物體旋轉而改變
本地坐標:物體自身坐標,隨旋轉而改變
?
場景scene
一組相關聯的游戲對象的集合,通常游戲中每個關卡就是一個場景,用于展現當前關卡中的所有物體。
?
游戲對象?gameobject
-運行時出現在場景中的游戲物體。-是一種容器,可以掛載組件。
組件?component(例:transform版塊)
-是游戲對象的功能模塊
網格過濾器:過濾形狀??????網格渲染器:顯示形狀
Ctrl+S?保存場景
Ctrl+D?復制物體
為物體添加顏色等要為物體的MeshRenderer下的material添加材質,默認材質無法修改。
?
Ctrl+1??切換到scene視圖??Ctrl+2切換到Game視圖???Ctrl+3切換到Inspector視圖??Ctrl+4切換到Hierarchy視圖
?
在播放模式下,用戶對游戲場景做的所有修改都是臨時的,所有的修改在退出游戲預覽模式后都會被還原。
?
(*重要)project(項目)包含很多scene(場景),scene包含很多gameobject(游戲對象),gameobject包含很多component(組件)<開發重點>
?
打組,一般先創建一個空物體(empty),然后再創建子物體。位置角度比例都是相對父的。
?
mesh??renderer??更改渲染????初始粉紫色,名為材質丟失
metallic?金屬的????albedo?反射系數
material?材質:物體的質地,指色彩、紋理、光滑度、透明度、反射率、折射率、發光度等。實際就是shader(著色)的實例。簡單來說是物體的外觀。
?
透明要把渲染模式rendering?medo改為transparent(透明),再調albedo(反射率)里的A
漸變要把渲染模式改為fade(漸變),再調albedo里的A
去底鏤空要把渲染模式改為cut?out(鏤空),再調albedo里的A?????
??????RGBA圖片可使用CUT?OUT去底,RGB不可以
?
shader著色器:專門用來渲染3D圖形的技術,可以使紋理以某種方式展現。??
?????材質相當于shader的面板,shader是程序。
texture紋理:附加到物體表面的貼圖。
(*重要)shader-->material-->MeshRenderer(網格渲染)?????meterial-->texture紋理
?????????????????????-->color
?
shader要借助material才能作用到物體
攝像機
天空盒skybox
圍繞整個場景的包裝器,用于模擬天空的材質。
?
windos-->lighting燈光-->environment?lighting環境燈光(scene會受到skybox的影響)
Tag標簽??layer層????作用:分類
攝像機可以選擇看見哪個層或者不看見哪個層,層也可以自己添加。
?
游戲是3D還是2D需要設置攝像機的視角為透視perspective或正交orthogonality
攝像機的far是視野范圍
viewport?rect??:?W,H調整屏幕寬和高???X,Y調整屏幕在水平豎直方向的位置。
若兩個攝像機視野重疊,則depth深度值,大的蓋住小的
?
選中攝像機,按Ctrl+Shift+F,可快速讓攝像機定位到當前位置,并且角度同視角一致。也可以定位別的物體。(要把輸入法關閉)
讓攝像機跟著模型走:創建一個空物體player,然后把模型model和攝像機作為player的子物體,并且務必把模型的transform重置,同player一致。
創建小地圖:在天空放置一個攝像機向下看,然后設置該攝像機深度值depth大于模型攝像機,然后設置成2D(orthogonality)
做人物標記:在人物頭頂創建一個平面,然后載入三角圖片。由于主攝像機不能看見三角平面標記,則給該平面設置一個層,給攝像機設置成不看見這個層。
把攝像機屬性skybox更改為depth?only?,則只顯示攝像機看得見的,其余部分會消失。
instantOC(面試重點)
:一個插件,包括occlusion?culling?和LOD
包括一、渲染管線,二、occlusion?culling,三、LOD
一、渲染管線?
????????渲染管線:圖形數據在GPU上經過運算處理,最后輸出到屏幕的過程。
????繪制調用Draw?Call:每次引擎(CPU)準備數據并通知GPU的過程。通俗講:每幀調用顯卡渲染物體的次數。(在starts里Batches后邊顯示的數字)
???CPU準備數據??????????? 頂點處理:中間有坐標系的轉換
游戲-->圖形API-->CPU(決定視錐以內哪些物體需要渲染)à)與GPU(顯卡)分界線-->頂點處理-->圖元裝配(連接相鄰的點組成三角面)-->光柵化(計算三角面上的像素)-->像素處理(對每個像素區域進行著色)-->緩存(一個存儲像素數據的內存塊,最重要的是幀緩存(常在顯卡中)與深度緩存z-buffer(物體距離攝像機的距離)。)
一個物體不渲染,CPU與GPU性能都會提高。物體越多、物體精度越高,CPU與GPU性能越低。
二、occlusion?culling
???????即時遮擋剔除occlusion?culling:在物體被渲染前,將攝像機視角內看不見的物體進行剔除,從而減少了每幀渲染數據量,提高渲染性能。(筆試考)
????默認:攝像機視錐內物體都會被渲染,即使看不見也會被渲染。
插件samples:每幀攝像機發射的射線數目,數量多會導致CPU性能降低,通常在150-500之間。
FOV?:視場<-->攝像機中filed?of?view??????????View視野<-->攝像機中far???
hide?delay延遲隱藏:射線發射次數。建議50幀-100幀之間。??PreCull?Check,建議勾選。
遮擋剔除同時,要為物體設置一個盒子碰撞器(綠色物理邊界)。為物體加一個組件-->box?collider。
注意:不設置碰撞器射線射不到。
遮擋剔除優點:減少渲染量。??(功能上沒有損失)??缺點:CPU(射線)需要消耗額外性能。
場景里物體較多且分布較密集(被遮擋的物體多)時使用遮擋剔除。
?
三、LOD
????LOD(Level?of?Detail多細節層次):指根據物體模型的節點在顯示環境中所處的位置和重要度,決定物體渲染的資源分配,降低非重要物體的面數和細節度,從而獲得高效率的渲染運算。
????不會降低draw?call
優點:降低非重要物體的面數與精度,從而獲得高效率的渲染運算???
???缺點:CPU總需要判斷距離,變換模型
適用性:1.場景中需要存在高精度模型??2.距離需要變化
步驟:1.創建層
????2.創建空物體并將模型添加到其中,模型命名:Lod_0,Lod_1,Lod_2(精度由高到低)
????3.為父物體指定層與標簽
????4.父物體或子物體添加碰撞器組件
????5.攝像機附加腳本IOCcam
Lod1?distance:攝像機到物體距離小于當前距離時,使?用Lod_0模型。
Lod2?distance:攝像機到物體距離大于Lod1且小于當前?距離時,使用Lod_1模型,大于當前值使用Lod_2模型。
?
?
光照系統
????GI(Global?illumination),即全局光照。能夠計算直接光、間接光、環境光(ambient)以及反射光(reflection)的光照系統。通過GI算法可以使渲染出來的光更加真是豐富。
直接光照
????直接光照:directional平行光和位置無關和角度有關。point點光源相當于一個燈泡,range:范圍。sport聚光燈:由一個點像一個椎體照射,相當于手電筒。
物體陰影在光源選項組件里。硬陰影性能比軟陰影好。陰影很消耗性能,所以需要陰影剔除。
????shadow?distance(陰影距離):如果等于40則等于距離攝像機40米以內渲染陰影,40米以外不渲染陰影。
選中個別物體,可以在組件中選擇關閉陰影
環境光照
??環境光照ambient?source:所有物體都能感受到的光照。
作用于場景內所有物體的光照,通過Environment?Lighting?中Ambient?控制。
?Ambient?Source?環境光源
--Skybox?通過天空盒顏色設置環境光照
--Gradient?梯度顏色
Sky?天空顏色、Equator?地平線顏色、Ground?地面顏色
--Ambient?Color?純色
?Ambient?Intensity?環境光強度
?Ambient?GI??環境光GI模式
--Realtime實時更新,環境光源會改變選擇此項。
--Backed?烘焙,環境光源不會改變選擇此項。
反射光照
??反射光照resolution?source:從天空盒中取色。
根據天空盒或立方體貼圖計算的作用于所有物體的反射效果,通過Environment?Lighting?中Reflection?控制。
?Reflection?Source?反射源
--Skybox?天空盒
Resolution?分辨率Compression?是否壓縮
--Custom?自定義
Cubemap立方體貼圖
?Reflection?Intensity?反射強度
?Reflection?Bounces?使用Reflection?Probe?后允許不同游?戲對象間來回反彈的次數。
間接光照
???間接光照:物體表面在接受光照后反彈出來的光。(特別消耗性能)
通過Light?組件中Bounce?Intensity?反彈強度控制。
可以通過Scene?面板Irradiance?模式查看間接光照。
注意:只有標記Lightmaping?Static的物體才能產生間接光。
實時GI
一、Realtime?GI?實時GI:在運行期間任意修改光源,效果實時更新。(需要預計算)
?實時GI在手游里慎用,太消耗性能。
1.把場景里不動的物體標記為Static(靜態的)?
2.勾選precomputed(預計算)?Realtime?GI??
3.調整好物體點擊Build(取消勾選Auto)
烘焙GI
二、烘焙GI(Baked?GI)將光照效果做成圖片貼到物體上。
????當場景包含大量物體時,實時光照和陰影對游戲性能有很大影響。使用烘焙技術,可以將光線效果預渲染成貼圖再作用到物體上模擬光影,從而提高性能。???適用于在性能較低的設備上運行程序。
????需要把不動的物體設置為靜態,只烘焙不動的物體。
步驟:
1.?游戲對象設置為LightmapingStatic。
2.?設置Light組件Baking屬性。
3.?啟用Lighting?面板的Baked?GI。
4.?點擊Build按鈕。(在Lightling-->Scene中)(如果勾選Auto?編輯器會自動檢測場?景的改動修復光照效果)
Light?組件Baking?屬性:烘焙模式
--Realtime僅實時光照時起作用。
--Baked僅烘焙時起作用。
--Mixed?混合,烘焙與實時光照都起作用。
可以通過Scene?面板Baked?模式查看光照貼圖。
光源偵測
三、光源偵測
由于LightMapping只能作用于static?物體,所以導致運?動的物體與場景中的光線無法融合在一起,顯得非常不真?實。而Light?Probes?組件可以通過Probe?(偵測)收集光影信息,?然后對運動物體鄰近的幾個Probe?進行插值運算,最后將?光照作用到物體上。
probe不宜太少也不宜太多,太少有光變化的地方偵測不到,太多消耗性能。在光有明暗變化的地方必須要有probe探針。?
?
聲音
聲音分為2D、3D兩類
????3D聲音:有空間感,近大遠小。
????2D聲音:適合背景音樂。
·?在場景中產生聲音,主要依靠兩個重要組件:
Audio?Listener?音頻監聽器:接收場景中音頻源Audio?Source(音頻源)發出的聲音,通過計算機的揚聲器播放聲音。
Audio?Source?音頻源
音頻監聽器在攝像機組件中,場景中只能有一個音頻監聽器。如果有多個攝像機,那只能留一個,要把別的攝像機的音頻監聽器組件移除remove。
?
一般游戲里聲音都放在一個sounds文件夾里面。
聲音組件中要勾選play?on?awake?(運行時播放)啟用聲音
3D?sound?settings??3D聲音的設置
音量衰減?linear線性曲線(常用)????X軸:單位?米。Y軸:音量
min?distance?:最小距離(距離之內無衰減)??max?distance:最大距離(超過距離就沒有聲音)
總結
以上是生活随笔為你收集整理的第一阶段unity基础的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Unity笔记(正版全阶段)目录
- 下一篇: 用word发CSDN blog,免去插图