版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
2023/2/11第三講:Unity引擎入門(mén)篇2游戲開(kāi)發(fā)技術(shù)2023/2/12Games二、腳本語(yǔ)言簡(jiǎn)介三、腳本開(kāi)發(fā)基礎(chǔ)本講提綱一、創(chuàng)建基本游戲場(chǎng)景四、討論2023/2/13一、創(chuàng)建基本游戲場(chǎng)景2023/2/141.1攝像機(jī)游戲場(chǎng)景中至少有一臺(tái)攝像機(jī),也可以有多臺(tái)攝像機(jī)。多臺(tái)攝像機(jī)可以創(chuàng)建雙人分屏效果或高級(jí)的自定義效果。Unity中支持兩種類(lèi)型的攝像機(jī)(Projection):Perspective透視攝像機(jī)Orthographic正交攝像機(jī)2023/2/15攝像機(jī)類(lèi)型Perspective透視攝像機(jī)四棱臺(tái):近大遠(yuǎn)小適合3D游戲2023/2/16攝像機(jī)類(lèi)型Orthographic正交攝像機(jī)長(zhǎng)方體:大小一樣適合2D游戲2023/2/17攝像機(jī)設(shè)置剔除掩碼cullingmaskLayers設(shè)置2023/2/18攝像機(jī)設(shè)置畫(huà)中畫(huà)2023/2/19攝像機(jī)設(shè)置多相機(jī)切換按數(shù)字鍵1,2,3即可進(jìn)行攝像機(jī)的切換。通過(guò)【腳本控制】2023/2/1101.2光源Unity提供了4種類(lèi)型的光源,在合理設(shè)置的基礎(chǔ)上可以模擬自然界中任何的光源。1、Directionallight:方向光源該類(lèi)型光源可以被放置在無(wú)窮遠(yuǎn)出,可以影響場(chǎng)景的一切游戲?qū)ο?類(lèi)似于自然界中的日光的照明效果。方向光源是最不耗費(fèi)圖形處理器資源的光源類(lèi)型。2023/2/1111.2光源2、Pointlight:點(diǎn)光源點(diǎn)光源可從一個(gè)位置向四面八方發(fā)出光線(xiàn),影響其范圍內(nèi)的所有對(duì)象;類(lèi)似于燈泡的照明效果;點(diǎn)光源的陰影是較耗費(fèi)圖形處理器資源的光源類(lèi)型。3、Spotlight聚光燈燈光從一點(diǎn)發(fā)出,在一個(gè)方向按照一個(gè)錐形的范圍照射,處于錐形區(qū)域內(nèi)的對(duì)象受到光線(xiàn)照射;類(lèi)似射燈的照明效果。2023/2/1121.2光源4、Arealight:區(qū)域光/面光源該類(lèi)似光源無(wú)法應(yīng)用于實(shí)時(shí)光照,僅適用于光照貼圖烘焙。2023/2/1131.3創(chuàng)建角色角色控制資源包Assets->ImportPackage->CharacterController2023/2/114角色預(yù)設(shè)體第一人稱(chēng)第三人稱(chēng)2023/2/1151.4天空盒天空盒資源包Assets->ImportPackage->Skyboxes資源包中包含9個(gè)天空盒2023/2/116創(chuàng)建天空盒1)首先,準(zhǔn)備6張紋理(前、后、左、右、上、下等6個(gè)面);2)然后,創(chuàng)建一個(gè)材質(zhì)資源:Assets->Create->Material3)選中該材質(zhì),在Inspector視圖中,單擊Shader->RenderFX->Skybox4)對(duì)天空盒材質(zhì)賦予6張紋理2023/2/117設(shè)置天空盒在Unity中,天空盒的使用方法有兩種:1、渲染設(shè)置edit->RenderSettings2、為攝像機(jī)對(duì)象添加天空盒組件Component->Rendering->Skybox2023/2/1181.5霧效在unity中,開(kāi)啟霧效的方法非常簡(jiǎn)單:Edit->RenderSettings項(xiàng)2023/2/119二、腳本語(yǔ)言簡(jiǎn)介2023/2/1202.1腳本介紹游戲吸引人的地方在于它的可交互性。在Unity中,游戲交互通過(guò)腳本編程來(lái)實(shí)現(xiàn)。那什么是腳本呢?腳本可以理解為附加在GameObject(游戲?qū)ο螅┥系挠糜诙x游戲?qū)ο笮袨榈闹噶畲a。通過(guò)腳本,開(kāi)發(fā)者可以控制每一個(gè)游戲?qū)ο蟮膭?chuàng)建、銷(xiāo)毀以及對(duì)象在各種情況下的行為,進(jìn)而實(shí)現(xiàn)預(yù)期的交互效果。2023/2/1212.2Unity腳本語(yǔ)言Unity支持3種腳本語(yǔ)言:JavaSriptC#BooUnity的3種腳本語(yǔ)言實(shí)際上在功能和運(yùn)行速度上都是一樣的,區(qū)別主要體現(xiàn)在語(yǔ)言特性上。2023/2/1222.2Unity腳本語(yǔ)言三種腳本開(kāi)發(fā)語(yǔ)言的對(duì)比JavaScript相對(duì)來(lái)說(shuō)語(yǔ)法較為簡(jiǎn)單,比較容易入門(mén),Unity官方示例中的腳本基本都是用JavaScript寫(xiě)的。C#對(duì)于有C/C++基礎(chǔ)的讀者來(lái)說(shuō)很容易學(xué)習(xí),C#本身有很多強(qiáng)大的語(yǔ)言特性,比JavaScript更適合進(jìn)行深入開(kāi)發(fā)。大多數(shù)的Unity第三方插件都是用C#寫(xiě)的,商業(yè)游戲項(xiàng)目基本上都是使用C#進(jìn)行開(kāi)發(fā)。2023/2/1232.3JavaScript基本語(yǔ)法Unity使用的JavaScript和網(wǎng)頁(yè)開(kāi)發(fā)中常用的JavaScript一樣嗎?不一樣它經(jīng)過(guò)編譯后運(yùn)行速度很快語(yǔ)法方面也有不少區(qū)別。也有人將其成為UnityScript。2023/2/124變量JavaScript里變量需要先定義后才能使用。聲明一個(gè)變量的方法為:var變量名:變量類(lèi)型例如:2023/2/125變量變量前面可以添加訪問(wèn)修飾符,如:public、protected、private來(lái)修飾。Public的變量可以在Inspector視圖中查看和編輯,不添加訪問(wèn)修飾符則默認(rèn)為public.2023/2/126變量JavaScript常用的變量類(lèi)型:2023/2/127數(shù)組JavaScript里可以使用兩種數(shù)組:內(nèi)建數(shù)組速度最快;可以在Inspector視圖里編輯;不能動(dòng)態(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運(yùn)算、比較、邏輯操作符運(yùn)算操作符2023/2/132運(yùn)算、比較、邏輯操作符比較操作符2023/2/133運(yùn)算、比較、邏輯操作符條件操作符2023/2/134語(yǔ)句JavaScript的所有語(yǔ)句均要以分號(hào)(;)結(jié)尾。語(yǔ)句的注釋支持單行注釋//支持多行注釋/**/。1、條件語(yǔ)句支持if、if-else條件判斷以及if-else嵌套使用。
2023/2/135語(yǔ)句2、循環(huán)語(yǔ)句支持while、do-while、for、for-in的循環(huán)操作。
2023/2/136語(yǔ)句3、switch語(yǔ)句Switch語(yǔ)句用來(lái)進(jìn)行多條件判斷,可以替代冗長(zhǎng)的if-else嵌套語(yǔ)句
2023/2/137函數(shù)JavaScript里的函數(shù)格式為:
function函數(shù)名(參數(shù)1:參數(shù)類(lèi)型,參數(shù)2:參數(shù)類(lèi)型…):返回值類(lèi)型{}2023/2/138函數(shù)JavaScript中函數(shù)均可以視為Function類(lèi)型的對(duì)象,可以像變量一樣進(jìn)行賦值比較等操作。2023/2/139JavaScript腳本對(duì)于JavaScript腳本,Unity會(huì)自動(dòng)地為腳本添加一個(gè)與腳本文件名同名的類(lèi),并自動(dòng)地繼承于MonoBehaviour。如果使用C#語(yǔ)言來(lái)開(kāi)發(fā),則需要在腳本里顯式地寫(xiě)出類(lèi)名和繼承關(guān)系。2023/2/1402.4C#基本語(yǔ)法函數(shù)C#變量聲明方式為:
變量類(lèi)型變量名;例如:2023/2/141函數(shù)變量前面可以添加訪問(wèn)修飾符public、protected、private其中public的變量可以在Inspector視圖中查看和編輯,不添加訪問(wèn)修飾符則默認(rèn)為private(在JavaScript中默認(rèn)為public)。2023/2/142數(shù)組在C#中只能使用內(nèi)建數(shù)組2023/2/143數(shù)組雖然不能使用Array數(shù)組,但是可以使用ArrayList、List等容器來(lái)達(dá)到同樣的目的。2023/2/144函數(shù)C#里的函數(shù)格式為:例如:2023/2/145函數(shù)函數(shù)參數(shù)前可以使用關(guān)鍵字out實(shí)現(xiàn)返回多個(gè)數(shù)值。例如:2023/2/146三、腳本開(kāi)發(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ù)會(huì)在滿(mǎn)足某些條件時(shí)由Unity自動(dòng)調(diào)用,它們被稱(chēng)為必須事件。2023/2/1513.3MonoBehaviour類(lèi)MonoBehaviour是Unity中一個(gè)非常重要的類(lèi),它定義了基本的腳本行為,所有的腳本類(lèi)均需要從它直接或者間接地繼承。腳本必然事件就是從MonoBehaviour繼承而來(lái)。除了必然事件,MonoBehaviour定義了對(duì)各種特定事件(例如鼠標(biāo)在模型上單擊,模型碰撞等)的響應(yīng)函數(shù),這些函數(shù)名稱(chēng)均以O(shè)n作為開(kāi)頭。2023/2/1523.3MonoBehaviour類(lèi)2023/2/1533.4訪問(wèn)組件一個(gè)GameObject游戲組件可能由若干組件構(gòu)成。例如,在場(chǎng)景中新建一個(gè)立方體后,在Inspector視圖中可以看到一個(gè)簡(jiǎn)單的立方體包含了4個(gè)組件:Transform用于定義對(duì)象在場(chǎng)景中的位置、角度、縮放參數(shù)MeshFilter用來(lái)從資源文件中讀取模型BoxCollider用來(lái)為立方體添加碰撞效果MeshRender用來(lái)在場(chǎng)景中渲染立方體模型2023/2/1543.4訪問(wèn)組件如何訪問(wèn)游戲?qū)ο蟮母鞣N組件并設(shè)置組件參數(shù)?對(duì)于系統(tǒng)內(nèi)置的常用組件,Unity提供了非常便利的訪問(wèn)方式,只需要在腳本里直接訪問(wèn)組件對(duì)應(yīng)的成員變量即可,這些成員變量定義在MonoBehaviour中并被腳本繼承了下來(lái)。2023/2/1553.4訪問(wèn)組件常用的組件及其對(duì)應(yīng)的變量注意:如果游戲?qū)ο笊喜淮嬖谀辰M件,則該組件對(duì)應(yīng)變量的值將為空值null2023/2/1563.5訪問(wèn)游戲?qū)ο笤赨nity中,用戶(hù)可以通過(guò)如下幾種方式來(lái)訪問(wèn)游戲?qū)ο蟆?、通過(guò)名稱(chēng)來(lái)查找使用函數(shù)GameObject.Find如果場(chǎng)景中存在指定名稱(chēng)的游戲?qū)ο?,那么返回該?duì)象的引用,否則返回null。如果存在多個(gè)重名的對(duì)象,那么返回第一個(gè)對(duì)象的引用。2023/2/1573.5訪問(wèn)游戲?qū)ο?、通過(guò)標(biāo)簽來(lái)查找使用函數(shù)GameObject.FindWithTag如果場(chǎng)景中存在指定標(biāo)簽的游戲?qū)ο?,那么返回該?duì)象的引用,否則返回null。如果存在多個(gè)游戲?qū)ο笫褂猛粯?biāo)簽,那么返回第一個(gè)對(duì)象的引用。GameObject.Find和.FindWithTag是比較耗時(shí)的函數(shù)調(diào)用,因此不建議在Update函數(shù)中調(diào)用它們,而是應(yīng)該在初始化中查找一次以后保持到變量中。2023/2/1583.5訪問(wèn)游戲?qū)ο?、通過(guò)訪問(wèn)權(quán)限為public的變量,然后將要訪問(wèn)的組件或者對(duì)象賦值給該變量,就可以在腳本中通過(guò)變量來(lái)訪問(wèn)組件或?qū)ο罅恕?023/2/1593.6常用腳本APITransform組件Transform組件決定了游戲?qū)ο蟮奈恢?、方向和縮放比例。在游戲中如果想更新玩家位置,設(shè)置相機(jī)觀察角度都免不了要和Transform組件打交道。2023/2/160Transform組件Transform組件的成員變量2023/2/161Transform組件Transform組件的成員函數(shù)2023/2/162Transform組件應(yīng)用示例1)向前方移動(dòng)
2)繞自身坐標(biāo)軸Y旋轉(zhuǎn)2023/2/163Transform組件應(yīng)用示例3)繞世界坐標(biāo)的Y軸旋轉(zhuǎn)
4)使相機(jī)觀察方向跟隨物體移動(dòng)2023/2/164Time類(lèi)在Unity中可以通過(guò)Time類(lèi)用來(lái)獲取和時(shí)間有關(guān)的信息(可以用來(lái)計(jì)算
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 復(fù)工安全課件
- 宿遷蘑菇培訓(xùn)課件查找
- 開(kāi)學(xué)收心課件小學(xué)生
- 三年級(jí)品德與社會(huì)下冊(cè)第一單元在愛(ài)的陽(yáng)光下第三課來(lái)自社會(huì)的愛(ài)教案新人教版
- 三年級(jí)數(shù)學(xué)上冊(cè)8分?jǐn)?shù)的初步認(rèn)識(shí)1分?jǐn)?shù)的初步認(rèn)識(shí)第2課時(shí)比較幾分之一的大小教學(xué)設(shè)計(jì)新人教版
- 三年級(jí)科學(xué)上冊(cè)第五單元人與空氣12空氣教案首師大版1
- 《網(wǎng)絡(luò)廣告價(jià)格參考》課件
- 小學(xué)生防火溺水講座課件
- 《結(jié)腸鏡操作法》課件
- 小學(xué)生自學(xué)生字課件圖片
- 藥品集中采購(gòu)教育培訓(xùn)
- 2023年有色金屬分選機(jī)行業(yè)研究報(bào)告
- 《攝影入門(mén)基礎(chǔ)知識(shí)》課件
- 門(mén)禁系統(tǒng)施工規(guī)范
- 《如何調(diào)節(jié)情緒》課件
- 2024年中國(guó)石油集團(tuán)招聘筆試參考題庫(kù)含答案解析
- 護(hù)士血標(biāo)本采集不合格原因分析品管圈魚(yú)骨圖柏拉圖
- 內(nèi)分泌科糖尿病“一病一品”
- 隨班就讀評(píng)價(jià)表
- 房產(chǎn)中介操作手冊(cè)范本
- 《醫(yī)學(xué)人文課件》
評(píng)論
0/150
提交評(píng)論