第3講 Unity引擎入門篇-2_第1頁
第3講 Unity引擎入門篇-2_第2頁
第3講 Unity引擎入門篇-2_第3頁
第3講 Unity引擎入門篇-2_第4頁
第3講 Unity引擎入門篇-2_第5頁
已閱讀5頁,還剩67頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

2023/2/11第三講:Unity引擎入門篇2游戲開發(fā)技術(shù)2023/2/12Games二、腳本語言簡介三、腳本開發(fā)基礎(chǔ)本講提綱一、創(chuàng)建基本游戲場景四、討論2023/2/13一、創(chuàng)建基本游戲場景2023/2/141.1攝像機游戲場景中至少有一臺攝像機,也可以有多臺攝像機。多臺攝像機可以創(chuàng)建雙人分屏效果或高級的自定義效果。Unity中支持兩種類型的攝像機(Projection):Perspective透視攝像機Orthographic正交攝像機2023/2/15攝像機類型Perspective透視攝像機四棱臺:近大遠小適合3D游戲2023/2/16攝像機類型Orthographic正交攝像機長方體:大小一樣適合2D游戲2023/2/17攝像機設(shè)置剔除掩碼cullingmaskLayers設(shè)置2023/2/18攝像機設(shè)置畫中畫2023/2/19攝像機設(shè)置多相機切換按數(shù)字鍵1,2,3即可進行攝像機的切換。通過【腳本控制】2023/2/1101.2光源Unity提供了4種類型的光源,在合理設(shè)置的基礎(chǔ)上可以模擬自然界中任何的光源。1、Directionallight:方向光源該類型光源可以被放置在無窮遠出,可以影響場景的一切游戲?qū)ο?類似于自然界中的日光的照明效果。方向光源是最不耗費圖形處理器資源的光源類型。2023/2/1111.2光源2、Pointlight:點光源點光源可從一個位置向四面八方發(fā)出光線,影響其范圍內(nèi)的所有對象;類似于燈泡的照明效果;點光源的陰影是較耗費圖形處理器資源的光源類型。3、Spotlight聚光燈燈光從一點發(fā)出,在一個方向按照一個錐形的范圍照射,處于錐形區(qū)域內(nèi)的對象受到光線照射;類似射燈的照明效果。2023/2/1121.2光源4、Arealight:區(qū)域光/面光源該類似光源無法應(yīng)用于實時光照,僅適用于光照貼圖烘焙。2023/2/1131.3創(chuàng)建角色角色控制資源包Assets->ImportPackage->CharacterController2023/2/114角色預(yù)設(shè)體第一人稱第三人稱2023/2/1151.4天空盒天空盒資源包Assets->ImportPackage->Skyboxes資源包中包含9個天空盒2023/2/116創(chuàng)建天空盒1)首先,準備6張紋理(前、后、左、右、上、下等6個面);2)然后,創(chuàng)建一個材質(zhì)資源:Assets->Create->Material3)選中該材質(zhì),在Inspector視圖中,單擊Shader->RenderFX->Skybox4)對天空盒材質(zhì)賦予6張紋理2023/2/117設(shè)置天空盒在Unity中,天空盒的使用方法有兩種:1、渲染設(shè)置edit->RenderSettings2、為攝像機對象添加天空盒組件Component->Rendering->Skybox2023/2/1181.5霧效在unity中,開啟霧效的方法非常簡單:Edit->RenderSettings項2023/2/119二、腳本語言簡介2023/2/1202.1腳本介紹游戲吸引人的地方在于它的可交互性。在Unity中,游戲交互通過腳本編程來實現(xiàn)。那什么是腳本呢?腳本可以理解為附加在GameObject(游戲?qū)ο螅┥系挠糜诙x游戲?qū)ο笮袨榈闹噶畲a。通過腳本,開發(fā)者可以控制每一個游戲?qū)ο蟮膭?chuàng)建、銷毀以及對象在各種情況下的行為,進而實現(xiàn)預(yù)期的交互效果。2023/2/1212.2Unity腳本語言Unity支持3種腳本語言:JavaSriptC#BooUnity的3種腳本語言實際上在功能和運行速度上都是一樣的,區(qū)別主要體現(xiàn)在語言特性上。2023/2/1222.2Unity腳本語言三種腳本開發(fā)語言的對比JavaScript相對來說語法較為簡單,比較容易入門,Unity官方示例中的腳本基本都是用JavaScript寫的。C#對于有C/C++基礎(chǔ)的讀者來說很容易學(xué)習(xí),C#本身有很多強大的語言特性,比JavaScript更適合進行深入開發(fā)。大多數(shù)的Unity第三方插件都是用C#寫的,商業(yè)游戲項目基本上都是使用C#進行開發(fā)。2023/2/1232.3JavaScript基本語法Unity使用的JavaScript和網(wǎng)頁開發(fā)中常用的JavaScript一樣嗎?不一樣它經(jīng)過編譯后運行速度很快語法方面也有不少區(qū)別。也有人將其成為UnityScript。2023/2/124變量JavaScript里變量需要先定義后才能使用。聲明一個變量的方法為:var變量名:變量類型例如:2023/2/125變量變量前面可以添加訪問修飾符,如:public、protected、private來修飾。Public的變量可以在Inspector視圖中查看和編輯,不添加訪問修飾符則默認為public.2023/2/126變量JavaScript常用的變量類型:2023/2/127數(shù)組JavaScript里可以使用兩種數(shù)組:內(nèi)建數(shù)組速度最快;可以在Inspector視圖里編輯;不能動態(tài)調(diào)整大小Array數(shù)組Array數(shù)組可以調(diào)整大小;提供了常用的合并、排序等功能;不能在Inspector視圖里編輯;速度較內(nèi)建素組慢;2023/2/128數(shù)組內(nèi)建數(shù)組2023/2/129數(shù)組Array數(shù)組2023/2/130數(shù)組內(nèi)建數(shù)組和Array數(shù)組可以很方便的轉(zhuǎn)換:2023/2/131運算、比較、邏輯操作符運算操作符2023/2/132運算、比較、邏輯操作符比較操作符2023/2/133運算、比較、邏輯操作符條件操作符2023/2/134語句JavaScript的所有語句均要以分號(;)結(jié)尾。語句的注釋支持單行注釋//支持多行注釋/**/。1、條件語句支持if、if-else條件判斷以及if-else嵌套使用。

2023/2/135語句2、循環(huán)語句支持while、do-while、for、for-in的循環(huán)操作。

2023/2/136語句3、switch語句Switch語句用來進行多條件判斷,可以替代冗長的if-else嵌套語句

2023/2/137函數(shù)JavaScript里的函數(shù)格式為:

function函數(shù)名(參數(shù)1:參數(shù)類型,參數(shù)2:參數(shù)類型…):返回值類型{}2023/2/138函數(shù)JavaScript中函數(shù)均可以視為Function類型的對象,可以像變量一樣進行賦值比較等操作。2023/2/139JavaScript腳本對于JavaScript腳本,Unity會自動地為腳本添加一個與腳本文件名同名的類,并自動地繼承于MonoBehaviour。如果使用C#語言來開發(fā),則需要在腳本里顯式地寫出類名和繼承關(guān)系。2023/2/1402.4C#基本語法函數(shù)C#變量聲明方式為:

變量類型變量名;例如:2023/2/141函數(shù)變量前面可以添加訪問修飾符public、protected、private其中public的變量可以在Inspector視圖中查看和編輯,不添加訪問修飾符則默認為private(在JavaScript中默認為public)。2023/2/142數(shù)組在C#中只能使用內(nèi)建數(shù)組2023/2/143數(shù)組雖然不能使用Array數(shù)組,但是可以使用ArrayList、List等容器來達到同樣的目的。2023/2/144函數(shù)C#里的函數(shù)格式為:例如:2023/2/145函數(shù)函數(shù)參數(shù)前可以使用關(guān)鍵字out實現(xiàn)返回多個數(shù)值。例如:2023/2/146三、腳本開發(fā)基礎(chǔ)2023/2/1473.1創(chuàng)建腳本Assets->Create->JavaScript(C#Script)2023/2/1483.1創(chuàng)建腳本2023/2/1493.1創(chuàng)建腳本C#ScriptJavaScript2023/2/1503.2腳本必然事件必然事件在Unity的腳本中,可以定義一些特定的函數(shù),這些函數(shù)會在滿足某些條件時由Unity自動調(diào)用,它們被稱為必須事件。2023/2/1513.3MonoBehaviour類MonoBehaviour是Unity中一個非常重要的類,它定義了基本的腳本行為,所有的腳本類均需要從它直接或者間接地繼承。腳本必然事件就是從MonoBehaviour繼承而來。除了必然事件,MonoBehaviour定義了對各種特定事件(例如鼠標在模型上單擊,模型碰撞等)的響應(yīng)函數(shù),這些函數(shù)名稱均以O(shè)n作為開頭。2023/2/1523.3MonoBehaviour類2023/2/1533.4訪問組件一個GameObject游戲組件可能由若干組件構(gòu)成。例如,在場景中新建一個立方體后,在Inspector視圖中可以看到一個簡單的立方體包含了4個組件:Transform用于定義對象在場景中的位置、角度、縮放參數(shù)MeshFilter用來從資源文件中讀取模型BoxCollider用來為立方體添加碰撞效果MeshRender用來在場景中渲染立方體模型2023/2/1543.4訪問組件如何訪問游戲?qū)ο蟮母鞣N組件并設(shè)置組件參數(shù)?對于系統(tǒng)內(nèi)置的常用組件,Unity提供了非常便利的訪問方式,只需要在腳本里直接訪問組件對應(yīng)的成員變量即可,這些成員變量定義在MonoBehaviour中并被腳本繼承了下來。2023/2/1553.4訪問組件常用的組件及其對應(yīng)的變量注意:如果游戲?qū)ο笊喜淮嬖谀辰M件,則該組件對應(yīng)變量的值將為空值null2023/2/1563.5訪問游戲?qū)ο笤赨nity中,用戶可以通過如下幾種方式來訪問游戲?qū)ο蟆?、通過名稱來查找使用函數(shù)GameObject.Find如果場景中存在指定名稱的游戲?qū)ο螅敲捶祷卦搶ο蟮囊?,否則返回null。如果存在多個重名的對象,那么返回第一個對象的引用。2023/2/1573.5訪問游戲?qū)ο?、通過標簽來查找使用函數(shù)GameObject.FindWithTag如果場景中存在指定標簽的游戲?qū)ο螅敲捶祷卦搶ο蟮囊茫駝t返回null。如果存在多個游戲?qū)ο笫褂猛粯撕?,那么返回第一個對象的引用。GameObject.Find和.FindWithTag是比較耗時的函數(shù)調(diào)用,因此不建議在Update函數(shù)中調(diào)用它們,而是應(yīng)該在初始化中查找一次以后保持到變量中。2023/2/1583.5訪問游戲?qū)ο?、通過訪問權(quán)限為public的變量,然后將要訪問的組件或者對象賦值給該變量,就可以在腳本中通過變量來訪問組件或?qū)ο罅恕?023/2/1593.6常用腳本APITransform組件Transform組件決定了游戲?qū)ο蟮奈恢谩⒎较蚝涂s放比例。在游戲中如果想更新玩家位置,設(shè)置相機觀察角度都免不了要和Transform組件打交道。2023/2/160Transform組件Transform組件的成員變量2023/2/161Transform組件Transform組件的成員函數(shù)2023/2/162Transform組件應(yīng)用示例1)向前方移動

2)繞自身坐標軸Y旋轉(zhuǎn)2023/2/163Transform組件應(yīng)用示例3)繞世界坐標的Y軸旋轉(zhuǎn)

4)使相機觀察方向跟隨物體移動2023/2/164Time類在Unity中可以通過Time類用來獲取和時間有關(guān)的信息(可以用來計算

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論