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

下載本文檔

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

文檔簡介

1、LOGO2022-4-11第三講:第三講:Unity引擎入門篇引擎入門篇 2游戲開發(fā)技術(shù)游戲開發(fā)技術(shù)2022-4-12二、二、腳本語言簡介腳本語言簡介三、腳本開發(fā)基礎(chǔ)三、腳本開發(fā)基礎(chǔ)本講提綱本講提綱一、一、創(chuàng)建基本游戲場景創(chuàng)建基本游戲場景四、討論四、討論2022-4-13一、創(chuàng)建基本游戲場景一、創(chuàng)建基本游戲場景2022-4-141.1 攝像機(jī)攝像機(jī) 游戲場景中至少有一臺(tái)攝像機(jī),也可游戲場景中至少有一臺(tái)攝像機(jī),也可以有多臺(tái)攝像機(jī)。以有多臺(tái)攝像機(jī)。 多臺(tái)攝像機(jī)可以創(chuàng)建雙人分屏效果或高級(jí)多臺(tái)攝像機(jī)可以創(chuàng)建雙人分屏效果或高級(jí)的自定義效果。的自定義效果。 Unity中支持兩種類型的攝像機(jī)中支持兩種類型的

2、攝像機(jī)(Projection): Perspective 透視攝像機(jī)透視攝像機(jī) Orthographic 正交攝像機(jī)正交攝像機(jī)2022-4-15攝像機(jī)類型攝像機(jī)類型 Perspective透視攝像機(jī)透視攝像機(jī) 四棱臺(tái):近大遠(yuǎn)小四棱臺(tái):近大遠(yuǎn)小 適合適合3D游戲游戲2022-4-16攝像機(jī)類型攝像機(jī)類型 Orthographic正交攝像機(jī)正交攝像機(jī) 長方體:大小一樣長方體:大小一樣 適合適合2D游戲游戲2022-4-17攝像機(jī)設(shè)置攝像機(jī)設(shè)置 剔除掩碼剔除掩碼 culling mask Layers設(shè)置設(shè)置2022-4-18攝像機(jī)設(shè)置攝像機(jī)設(shè)置 畫中畫畫中畫2022-4-19攝像機(jī)設(shè)置攝像機(jī)設(shè)置

3、多相機(jī)切換多相機(jī)切換 按數(shù)字鍵按數(shù)字鍵1,2,3即可進(jìn)行攝像機(jī)的即可進(jìn)行攝像機(jī)的切換。切換。 通過通過【腳本控制腳本控制】2022-4-1101.2 光源光源 Unity提供了提供了4種類型的光源,在合理種類型的光源,在合理設(shè)置的基礎(chǔ)上可以模擬自然界中任何設(shè)置的基礎(chǔ)上可以模擬自然界中任何的光源。的光源。 1、Directional light:方向光源:方向光源 該類型光源可以被放置在無窮遠(yuǎn)出,可以影該類型光源可以被放置在無窮遠(yuǎn)出,可以影響場景的一切游戲?qū)ο箜憟鼍暗囊磺杏螒驅(qū)ο? 類似于自然界中的日光的照明效果。類似于自然界中的日光的照明效果。 方向光源是最不耗費(fèi)圖形處理器資源的光源方向光源是

4、最不耗費(fèi)圖形處理器資源的光源類型。類型。2022-4-1111.2 光源光源 2、Point light:點(diǎn)光源:點(diǎn)光源 點(diǎn)光源可從一個(gè)位置向四面八方發(fā)出光線,點(diǎn)光源可從一個(gè)位置向四面八方發(fā)出光線,影響其范圍內(nèi)的所有對象影響其范圍內(nèi)的所有對象; 類似于燈泡的照明效果類似于燈泡的照明效果; 點(diǎn)光源的陰影是較耗費(fèi)圖形處理器資源的光點(diǎn)光源的陰影是較耗費(fèi)圖形處理器資源的光源類型。源類型。 3、Spotlight 聚光燈聚光燈 燈光從一點(diǎn)發(fā)出,在一個(gè)方向按照一個(gè)錐形燈光從一點(diǎn)發(fā)出,在一個(gè)方向按照一個(gè)錐形的范圍照射,處于錐形區(qū)域內(nèi)的對象受到光的范圍照射,處于錐形區(qū)域內(nèi)的對象受到光線照射;線照射; 類似射燈

5、的照明效果。類似射燈的照明效果。2022-4-1121.2 光源光源 4、Area light:區(qū)域光:區(qū)域光/面光源面光源 該類似光源無法應(yīng)用于實(shí)時(shí)光照,僅適用于該類似光源無法應(yīng)用于實(shí)時(shí)光照,僅適用于光照貼圖烘焙。光照貼圖烘焙。2022-4-1131.3 創(chuàng)建角色創(chuàng)建角色 角色控制資源包角色控制資源包 Assets-Import Package-Character Controller2022-4-114角色預(yù)設(shè)體角色預(yù)設(shè)體 第一人稱第一人稱 第三人稱第三人稱2022-4-1151.4 天空盒天空盒 天空盒資源包天空盒資源包 Assets-Import Package-Skyboxes 資源

6、包中包含資源包中包含9個(gè)天空盒個(gè)天空盒2022-4-116創(chuàng)建天空盒創(chuàng)建天空盒 1)首先,準(zhǔn)備)首先,準(zhǔn)備6張紋理(前、后、左、張紋理(前、后、左、右、上、下等右、上、下等6個(gè)面);個(gè)面); 2)然后,創(chuàng)建一個(gè)材質(zhì)資源:)然后,創(chuàng)建一個(gè)材質(zhì)資源:Assets-Create-Material 3)選中該材質(zhì),在)選中該材質(zhì),在Inspector視圖中,視圖中,單擊單擊Shader-RenderFX-Skybox 4)對天空盒材質(zhì)賦予)對天空盒材質(zhì)賦予6張紋理張紋理2022-4-117設(shè)置天空盒設(shè)置天空盒 在在Unity中,天空盒的使用方法有兩種:中,天空盒的使用方法有兩種: 1、渲染設(shè)置、渲染設(shè)

7、置 edit-Render Settings 2、為攝像機(jī)對象添加天空盒組件、為攝像機(jī)對象添加天空盒組件 Component-Rendering-Skybox2022-4-1181.5 霧效霧效 在在unity中,開啟霧效的方法非常簡單:中,開啟霧效的方法非常簡單: Edit-Render Settings項(xiàng)項(xiàng)2022-4-119二、腳本語言簡介二、腳本語言簡介2022-4-1202.1 腳本介紹腳本介紹 游戲吸引人的地方在于它的游戲吸引人的地方在于它的可交互性可交互性。 在在Unity中,游戲交互通過中,游戲交互通過腳本編程腳本編程來來實(shí)現(xiàn)。實(shí)現(xiàn)。 那什么是那什么是腳本腳本呢?呢? 腳本可以

8、理解為附加在腳本可以理解為附加在GameObject(游(游戲?qū)ο螅┥系挠糜诙x游戲?qū)ο笮袨榈闹笐驅(qū)ο螅┥系挠糜诙x游戲?qū)ο笮袨榈闹噶畲a。令代碼。 通過腳本,開發(fā)者可以控制每一個(gè)游戲?qū)νㄟ^腳本,開發(fā)者可以控制每一個(gè)游戲?qū)ο蟮膭?chuàng)建、銷毀以及對象在各種情況下的象的創(chuàng)建、銷毀以及對象在各種情況下的行為,進(jìn)而實(shí)現(xiàn)預(yù)期的交互效果。行為,進(jìn)而實(shí)現(xiàn)預(yù)期的交互效果。2022-4-1212.2 Unity腳本語言腳本語言 Unity支持支持3種腳本語言:種腳本語言: JavaSript C# Boo Unity的的3種腳本語言實(shí)際上在功能和種腳本語言實(shí)際上在功能和運(yùn)行速度上都是一樣的,區(qū)別主要體運(yùn)行速度上都是

9、一樣的,區(qū)別主要體現(xiàn)在語言特性上?,F(xiàn)在語言特性上。2022-4-1222.2 Unity腳本語言腳本語言 三種腳本開發(fā)語言的對比三種腳本開發(fā)語言的對比 JavaScript相對來說語法較為簡單,比較容易入相對來說語法較為簡單,比較容易入門,門,Unity官方示例中的腳本基本都是用官方示例中的腳本基本都是用JavaScript寫的。寫的。 C#對于有對于有C/C+基礎(chǔ)的讀者來說很容易學(xué)習(xí),基礎(chǔ)的讀者來說很容易學(xué)習(xí),C#本身有很多強(qiáng)大的語言特性,比本身有很多強(qiáng)大的語言特性,比JavaScript更適合進(jìn)行深入開發(fā)。大多數(shù)的更適合進(jìn)行深入開發(fā)。大多數(shù)的Unity第三方插第三方插件都是用件都是用C#寫

10、的,商業(yè)游戲項(xiàng)目基本上都是使寫的,商業(yè)游戲項(xiàng)目基本上都是使用用C#進(jìn)行開發(fā)。進(jìn)行開發(fā)。2022-4-1232.3 JavaScript基本語法基本語法 Unity使用的使用的JavaScript和網(wǎng)頁開發(fā)中和網(wǎng)頁開發(fā)中常用的常用的JavaScript一樣嗎?一樣嗎? 不一樣不一樣 它經(jīng)過編譯后運(yùn)行速度很快它經(jīng)過編譯后運(yùn)行速度很快 語法方面也有不少區(qū)別。語法方面也有不少區(qū)別。 也有人將其成為也有人將其成為UnityScript。2022-4-124變量變量 JavaScript里變量需要先定義后才能里變量需要先定義后才能使用。使用。 聲明一個(gè)變量的方法為:聲明一個(gè)變量的方法為: var 變量名變

11、量名:變量類型變量類型 例如:例如:2022-4-125變量變量 變量前面可以添加訪問修飾符,如:變量前面可以添加訪問修飾符,如:public、protected、private來修飾。來修飾。 Public的變量可以在的變量可以在Inspector視圖中查視圖中查看和編輯,不添加訪問修飾符則默認(rèn)為看和編輯,不添加訪問修飾符則默認(rèn)為public.2022-4-126變量變量 JavaScript常用的變量類型:常用的變量類型:2022-4-127數(shù)組數(shù)組 JavaScript里可以使用兩種數(shù)組:里可以使用兩種數(shù)組: 內(nèi)建數(shù)組內(nèi)建數(shù)組 速度最快;速度最快; 可以在可以在Inspector視圖里編

12、輯;視圖里編輯; 不能動(dòng)態(tài)調(diào)整大小不能動(dòng)態(tài)調(diào)整大小 Array 數(shù)組數(shù)組 Array數(shù)組可以調(diào)整大小;數(shù)組可以調(diào)整大小; 提供了常用的合并、排序等功能;提供了常用的合并、排序等功能; 不能在不能在Inspector視圖里編輯;視圖里編輯; 速度較內(nèi)建素組慢;速度較內(nèi)建素組慢;2022-4-128數(shù)組數(shù)組 內(nèi)建數(shù)組內(nèi)建數(shù)組2022-4-129數(shù)組數(shù)組 Array 數(shù)組數(shù)組2022-4-130數(shù)組數(shù)組 內(nèi)建數(shù)組和內(nèi)建數(shù)組和Array 數(shù)組可以很方便的數(shù)組可以很方便的轉(zhuǎn)換:轉(zhuǎn)換:2022-4-131運(yùn)算、比較、邏輯操作符運(yùn)算、比較、邏輯操作符 運(yùn)算操作符運(yùn)算操作符2022-4-132運(yùn)算、比較、邏輯

13、操作符運(yùn)算、比較、邏輯操作符 比較操作符比較操作符2022-4-133運(yùn)算、比較、邏輯操作符運(yùn)算、比較、邏輯操作符 條件操作符條件操作符2022-4-134語句語句 JavaScript的所有語句均要以分號(hào)的所有語句均要以分號(hào)(;)結(jié)尾。結(jié)尾。 語句的注釋支持單行注釋語句的注釋支持單行注釋/ 支持多行注釋支持多行注釋/* */。 1、條件語句、條件語句 支持支持if、if-else條件判斷以及條件判斷以及if-else嵌套嵌套使用。使用。 2022-4-135語句語句 2、循環(huán)語句、循環(huán)語句 支持支持while、do-while、for、for-in的循的循環(huán)操作。環(huán)操作。 2022-4-13

14、6語句語句 3、switch語句語句 Switch語句用來進(jìn)行語句用來進(jìn)行多條件判斷,可以替多條件判斷,可以替代冗長的代冗長的if-else嵌套嵌套語句語句 2022-4-137函數(shù)函數(shù) JavaScript里的函數(shù)格式為:里的函數(shù)格式為: function 函數(shù)名函數(shù)名(參數(shù)參數(shù)1:參數(shù)類型,參數(shù)類型, 參數(shù)參數(shù)2:參數(shù)類型參數(shù)類型 ):返回值類型返回值類型 2022-4-138函數(shù)函數(shù) JavaScript中函數(shù)均可以視為中函數(shù)均可以視為Function類型的對象,可以像變量一樣進(jìn)行賦類型的對象,可以像變量一樣進(jìn)行賦值比較等操作。值比較等操作。2022-4-139JavaScript腳本腳

15、本 對于對于JavaScript腳本,腳本,Unity會(huì)自動(dòng)地會(huì)自動(dòng)地為腳本添加一個(gè)與腳本文件名同名的為腳本添加一個(gè)與腳本文件名同名的類,并類,并自動(dòng)自動(dòng)地繼承于地繼承于MonoBehaviour。 如果使用如果使用C#語言來開發(fā),則需要在腳語言來開發(fā),則需要在腳本里本里顯式顯式地寫出類名和繼承關(guān)系。地寫出類名和繼承關(guān)系。2022-4-1402.4 C#基本語法基本語法 函數(shù)函數(shù) C#變量聲明方式為:變量聲明方式為: 變量類型變量類型 變量名變量名; 例如:例如:2022-4-141函數(shù)函數(shù) 變量前面可以添加訪問修飾符變量前面可以添加訪問修飾符public、protected、private

16、其中其中public的變量可以在的變量可以在Inspector視圖視圖中查看和編輯,中查看和編輯,不添加訪問修飾符則默認(rèn)不添加訪問修飾符則默認(rèn)為為private(在(在JavaScript中默認(rèn)為中默認(rèn)為public)。)。2022-4-142數(shù)組數(shù)組 在在C#中只能使用內(nèi)建數(shù)組中只能使用內(nèi)建數(shù)組2022-4-143數(shù)組數(shù)組 雖然不能使用雖然不能使用Array數(shù)組,但是可以使數(shù)組,但是可以使用用ArrayList、List等容器來達(dá)到同樣等容器來達(dá)到同樣的目的。的目的。2022-4-144函數(shù)函數(shù) C#里的函數(shù)格式為:里的函數(shù)格式為: 例如:例如:2022-4-145函數(shù)函數(shù) 函數(shù)參數(shù)前可以使

17、用關(guān)鍵字函數(shù)參數(shù)前可以使用關(guān)鍵字out實(shí)現(xiàn)返實(shí)現(xiàn)返回多個(gè)數(shù)值?;囟鄠€(gè)數(shù)值。 例如:例如:2022-4-146三、腳本開發(fā)基礎(chǔ)三、腳本開發(fā)基礎(chǔ)2022-4-1473.1 創(chuàng)建腳本創(chuàng)建腳本 Assets - Create - JavaScript (C# Script)2022-4-1483.1 創(chuàng)建腳本創(chuàng)建腳本2022-4-1493.1 創(chuàng)建腳本創(chuàng)建腳本C# ScriptJavaScript2022-4-1503.2 腳本必然事件腳本必然事件 必然事件必然事件 在在Unity的腳本中,可以定義一些特定的的腳本中,可以定義一些特定的函數(shù),這些函數(shù)會(huì)在滿足某些條件時(shí)由函數(shù),這些函數(shù)會(huì)在滿足某些條件時(shí)

18、由Unity自動(dòng)調(diào)用,它們被稱為必須事件。自動(dòng)調(diào)用,它們被稱為必須事件。2022-4-1513.3 MonoBehaviour類類 MonoBehaviour是是Unity中一個(gè)非常中一個(gè)非常重要的類,它定義了基本的腳本行為,重要的類,它定義了基本的腳本行為,所有的腳本類均需要從它直接或者間所有的腳本類均需要從它直接或者間接地繼承。接地繼承。 腳本必然事件就是從腳本必然事件就是從MonoBehaviour繼繼承而來。承而來。 除了必然事件,除了必然事件, MonoBehaviour定義了定義了對各種特定事件(例如鼠標(biāo)在模型上單擊,對各種特定事件(例如鼠標(biāo)在模型上單擊,模型碰撞等)的響應(yīng)函數(shù),這

19、些函數(shù)名稱模型碰撞等)的響應(yīng)函數(shù),這些函數(shù)名稱均以均以O(shè)n作為開頭。作為開頭。2022-4-1523.3 MonoBehaviour類類2022-4-1533.4 訪問組件訪問組件 一個(gè)一個(gè)GameObject游戲組件可能由若干游戲組件可能由若干組件構(gòu)成。組件構(gòu)成。 例如,在場景中新建一個(gè)立方體后,在例如,在場景中新建一個(gè)立方體后,在Inspector視圖中可以看到一個(gè)簡單的立方視圖中可以看到一個(gè)簡單的立方體包含了體包含了4個(gè)組件:個(gè)組件: Transform 用于定義對象在場景中的位置、用于定義對象在場景中的位置、角度、縮放參數(shù)角度、縮放參數(shù) Mesh Filter 用來從資源文件中讀取模型

20、用來從資源文件中讀取模型 Box Collider 用來為立方體添加碰撞效果用來為立方體添加碰撞效果 Mesh Render 用來在場景中渲染立方體模型用來在場景中渲染立方體模型2022-4-1543.4 訪問組件訪問組件 如何訪問游戲?qū)ο蟮母鞣N組件并設(shè)置組如何訪問游戲?qū)ο蟮母鞣N組件并設(shè)置組件參數(shù)?件參數(shù)? 對于系統(tǒng)內(nèi)置的常用組件,對于系統(tǒng)內(nèi)置的常用組件,Unity提供了非提供了非常便利的訪問方式,只需要在腳本里直接常便利的訪問方式,只需要在腳本里直接訪問組件對應(yīng)的成員變量即可,這些成員訪問組件對應(yīng)的成員變量即可,這些成員變量定義在變量定義在MonoBehaviour中并被腳本中并被腳本繼承了

21、下來。繼承了下來。2022-4-1553.4 訪問組件訪問組件 常用的組件及其對應(yīng)的變量常用的組件及其對應(yīng)的變量 注意:如果游戲?qū)ο笊喜淮嬖谀辰M件,則該組件對注意:如果游戲?qū)ο笊喜淮嬖谀辰M件,則該組件對應(yīng)變量的值將為空值應(yīng)變量的值將為空值null2022-4-1563.5 訪問游戲?qū)ο笤L問游戲?qū)ο?在在Unity中,用戶可以通過如下幾種方中,用戶可以通過如下幾種方式來訪問游戲?qū)ο?。式來訪問游戲?qū)ο蟆?1、通過名稱來查找、通過名稱來查找 使用函數(shù)使用函數(shù)GameObject.Find 如果場景中存在指定名稱的游戲?qū)ο螅敲捶等绻麍鼍爸写嬖谥付Q的游戲?qū)ο?,那么返回該對象的引用,否則返回回該對象

22、的引用,否則返回null。 如果存在多個(gè)重名的對象,那么返回第一個(gè)對如果存在多個(gè)重名的對象,那么返回第一個(gè)對象的引用。象的引用。2022-4-1573.5 訪問游戲?qū)ο笤L問游戲?qū)ο?2、通過標(biāo)簽來查找、通過標(biāo)簽來查找 使用函數(shù)使用函數(shù)GameObject.FindWithTag 如果場景中存在指定標(biāo)簽的游戲?qū)ο?,那么返如果場景中存在指定?biāo)簽的游戲?qū)ο螅敲捶祷卦搶ο蟮囊?,否則返回回該對象的引用,否則返回null。 如果存在多個(gè)游戲?qū)ο笫褂猛粯?biāo)簽,那么返如果存在多個(gè)游戲?qū)ο笫褂猛粯?biāo)簽,那么返回第一個(gè)對象的引用。回第一個(gè)對象的引用。 GameObject.Find和和.FindWithTag

23、是比較耗時(shí)的函數(shù)調(diào)是比較耗時(shí)的函數(shù)調(diào)用,因此不建議在用,因此不建議在Update函數(shù)中調(diào)用它們,而是應(yīng)該在初始化函數(shù)中調(diào)用它們,而是應(yīng)該在初始化中查找一次以后保持到變量中。中查找一次以后保持到變量中。2022-4-1583.5 訪問游戲?qū)ο笤L問游戲?qū)ο?3、通過訪問權(quán)限為、通過訪問權(quán)限為public的變量,然的變量,然后將要訪問的組件或者對象賦值給該變后將要訪問的組件或者對象賦值給該變量,就可以在腳本中通過變量來訪問組量,就可以在腳本中通過變量來訪問組件或?qū)ο罅?。件或?qū)ο罅恕?022-4-1593.6 常用腳本常用腳本API Transform組件組件 Transform組件決定了游戲?qū)ο蟮奈?/p>

24、置、組件決定了游戲?qū)ο蟮奈恢?、方向和縮放比例。方向和縮放比例。 在游戲中如果想更新玩家位置,設(shè)置相機(jī)在游戲中如果想更新玩家位置,設(shè)置相機(jī)觀察角度都免不了要和觀察角度都免不了要和Transform組件打組件打交道。交道。2022-4-160Transform組件組件 Transform組件的成員變量組件的成員變量2022-4-161Transform組件組件 Transform組件的成員函數(shù)組件的成員函數(shù)2022-4-162Transform組件組件 應(yīng)用示例應(yīng)用示例 1) 向前方移動(dòng)向前方移動(dòng) 2) 繞自身坐標(biāo)軸繞自身坐標(biāo)軸Y旋轉(zhuǎn)旋轉(zhuǎn)2022-4-163Transform組件組件 應(yīng)用示例應(yīng)用示例 3) 繞世界坐標(biāo)的繞世界坐標(biāo)的Y軸旋轉(zhuǎn)軸旋轉(zhuǎn) 4) 使相機(jī)觀察方向跟隨物體移動(dòng)使相機(jī)觀察方向跟隨物體移動(dòng)2022-4-164Time類類 在在Unity中可以通過中可以通過Time類用來獲取類用來獲取和時(shí)間有關(guān)的信息(可以用來計(jì)算幀和時(shí)間有關(guān)的信

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論