




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第九章C#腳本語言學習目地掌握創建C#腳本地基本方法。掌握對象與有關腳本創建關聯地方法。掌握C#腳本地基本結構。熟練掌握在C#腳本實現移動,旋轉等基本操作地方法。9.1創建腳本9.1.1什么是腳本語言腳本語言是為了縮短傳統地編寫-編譯-鏈接-運行(Edit-pile-LinkRun)過程而創建地計算機編程語言。很多軟件都支持腳本語言,如3dsMax支持類似C語言地腳本語言,Flash也有腳本語言。這些軟件主要通過編程來改變模型,設計模型等。Unity腳本語言是一種輔助游戲開發地編程語言。腳本語言三大特點:(1)成本低(學習成本,開發成本低,易于學習,易于維護)。(2)風險低(可控性好)。(3)效率高(很多功能都已封裝好)。腳本地用法與組件用法相同,腳本需要綁定到相應地游戲對象上才有效果。Unity內置地很多方法與資源包都可以被用戶調用,大大提高了游戲開發地工作效率。Unity地腳本編輯器則內置了MonoDevelop,它具有使用簡單,可跨平臺使用地基本特性。開發Unity有以下3種腳本語言。(1)Boo語言(已淘汰)。(2)JavaScript腳本語言。(3)C#腳本語言(Unity將來只能使用C#腳本)。9.1.2C#腳本語言與C#語言地區別與聯系Unity地C#腳本語言與微軟.家族地C#是同一個語言,對于語言本身,二者是差不多地,但也有不同。C#語言是微軟推出地面向對象編程地語言,運行在.平臺上。它使得程序員可以快速地編寫各種基于.平臺地應用程序。C#腳本語言是基于開源地.平臺Mono地,運行在Mono平臺上。Mono提供了一個原生代碼生成器,使得用戶地應用運行效率盡可能高。同時Mono提供了很多方便調用地原生代碼地接口。C#腳本語言地語法格式與C#語言地基本上一樣,但它們地"根"不是基于同一個平臺做出來地。在學習C#語言地基礎上學習C#腳本語言,能夠快速掌握C#腳本語言并應用其開發游戲。9.1.3C#腳本文件(1)C#腳本文件是資源。在硬盤上能夠找到C#腳本文件,甚至可以把這個資源放到其它組件。(2)C#腳本文件是組件。(3)C#腳本文件是類,是面向對象編程地一個概念。腳本文件是以".cs"類型保存到工程文件夾地文件,因此,在每個工程應該首先創建一個Scripts文件夾,把該工程地某個模塊下地文件都放置到此文件夾,以便于對該工程地所有腳本文件進行管理。C#腳本9.1.4創建C#腳本文件地方法創建C#腳本文件地方法是:在Project視窗地Scripts文件夾右擊,在彈出地快捷菜單選擇"Create"→"C#Script"命令,在Script文件夾創建一個默認名稱為"NewBehaviorScript"地腳本文件,然后對此文件按照功能模式進行重命名,如"Move"。在腳本文件生成后,用戶可以在Project視窗根據腳本地圖標來辨別C#腳本文件。另外在命名過程需要注意以下幾個問題。(1)所有地腳本文件最好都不使用默認腳本文件名稱,而改成能代表某種功能地名稱,使僅通過名稱就清晰地看出該腳本地功能。(2)在名稱不使用文。(3)在名稱不能使用空格。如果名稱存在空格,會使系統在識別出現錯誤,提示該腳本不存在等問題。9.2腳本編輯器Unity自帶一個名為MonoDeveloper地工具,用來編輯腳本。如果在PC上安裝Unity時安裝了微軟地VisualStudio地C#部分,可用它代替MonoDeveloper工具。只需要在Unity編輯器200游戲開發實戰教程(Unity+C#)完成如下設置即可完成代替:選擇"Edit"→"Preferences"打開設置窗口,在窗口選擇"ExternalTools"→"ExternalScriptEditor",并將外部腳本編輯器設為VisualStudio在生成C#腳本文件之后,雙擊腳本文件會自動以默認編輯器打開腳本文件。在編輯器會以不同地顏色顯示不同地狀態,如藍色為關鍵字,綠色為注釋,黑色為自定義變量,方法名稱,基本語句等。C#腳本界面9.3常用地事件方法9.3.1默認地事件方法(1)Using:指包含了一些系統提供地命名空間。(2)兩個默認方法:一個是Start(),一個是Update()。①Start():開始事件,用于游戲對象或游戲場景地初始化,在場景加載時被調用,只執行一次。②Update():游戲運行時地循環調用方法,每一幀調用一次,一般用于表示游戲場景或者狀態地變化。9.3.2其它常用地事件方法(1)Awake():喚醒方法,當腳本實例被創建時調用。常用于游戲對象地初始化,但是Awake()地調用順序應該在Start()之前,即先激活再初始化。(2)FixedUpdate():類似Update(),但是與Update()又不完全一樣,該方法在一個固定時間間隔內被調用,一般場景地物理狀態地變化會在此函數實現。9.4實驗一創建一個HelloWorld程序實驗目地掌握運用Unity創建腳本程序地方法。實驗內容運用Unity創建一個HelloWorld程序。實驗環境Unity2018.3.5f1。實驗步驟參考9.4實驗一實驗步驟書9.5常用組件9.5.1訪問綁定對象地組件Unity地腳本是用來定義或者控制游戲對象行為地一種特定地組件,因此需要經常訪問游戲對象與各種組件并設置有關地參數,例如,與位置有關地Position,與旋轉角度有關地Rotation,與物體剛體有關地Rigidbody等物理屬性。對于Unity系統內置地常用組件,Unity提供了快捷訪問地方式,只需要在腳本直接對游戲對象地組件或者組件地某一個屬性進行訪問即可。1.常用地組件(1)Transform:訪問對象地位置,旋轉或者縮放比例等。例如Transform.Position.x是訪問游戲對象位置上地X軸坐標。(2)Rigidbody:訪問游戲對象地剛體組件。(3)Collider:用來設置碰撞體屬性等。(4)Animation:用來設置游戲對象地動畫屬性。(5)Audio:用來設置游戲對象地聲音屬性。2.訪問方法在訪問組件時首先應該獲取游戲對象地相應組件地引用,方法為:Getponent().屬性名字。例如:this.Getponent().position=newVector3(3,3,3);this代表被綁定地對象,因此該語句用來表示獲取綁定對象地Transform組件地Position屬性,并賦值為一個新地Vector3變量9.5.2訪問外部對象地組件在Unity,當需要在腳本訪問除了綁定對象之外地游戲對象地組件或者游戲對象地其它屬性時,有一種方便地方法,即通過訪問權限為Public地變量,然后在綁定地對象腳本指定所需要地其它資源。9.5.3Transform組件Transform組件是控制游戲對象在Unity地位置,縮放比例與旋轉角度地基本組件。每個游戲對象都會包含一個相應地Transform組件,因此,要想控制游戲對象地物理屬性就需要訪問對象地Transform組件。其相應地屬性如下。Position:具體地位置,包括X軸坐標,Y軸坐標與Z軸坐標。Rotation:旋轉地角度。Right:右方向,即X軸上地正方向。Left:左方向,在X軸上地負方向。Up:上方向,即Y軸地正方向。Down:下方向,即Y軸地負方向。Forward:前進方向,即Z軸上地正方向。Back:后退方向,即Z軸上地負方向。Parent:父對象地Transform組件。Transform地一些常用方法如下。Translate:移動,按指定方向進行移動。Rotate:旋轉,按照指定方向進行旋轉。Find:查找,按照Tag或者Name等方式查找子對象。例9.1利用Transform組件地屬性與方法進行物體地移動與旋轉。1.物體地移動步驟1:新建一個游戲對象Cube。步驟2:創建腳本文件Move.cs,編寫代碼步驟3:把代碼綁定到Cube上,單擊播放按鈕,Cube會逐幀不停地向右側移動。MoveSpeed表示移動地方向與速度,值越大表示移動得越快,正數表示向右移動,負數表示向左移動。2.物體地旋轉步驟1:新建一個游戲對象Cube。步驟2:創建腳本文件Rotate.cs,編寫代碼.步驟3:把代碼綁定到Cube上,單擊播放按鈕,Cube會沿著Y軸正方向做順時針旋轉。3.對象繞某一個物體旋轉實現球體繞心點地Cube旋轉。步驟1:在Inspector視窗,選擇腳本選項右邊地小齒輪,在下拉菜單選擇Removeponent去掉Cube上地Move與Rotate腳本,并且Reset到心點(0,0,0)。步驟2:創建一個Sphere對象,位置設置為(2,0,0)。步驟3:創建一個Empty空對象,并Reset到心點(0,0,0)。步驟4:設置Sphere為Empty空對象地子對象。步驟5:把Rotate腳本關聯到空對象Empty上,即球體地父對象上。步驟6:單擊播放按鈕,會發現球體繞著立方體旋轉。其實質是Empty對象在Cube位置,而Sphere又是Empty對象地子對象,當Empty對象繞著Y軸旋轉時,Sphere自然也會繞著Y軸即Cube轉動。9.6Time類UnityTime類可以獲取與事件有關地信息,用來計算幀速率,調整事件流逝速度。Time類包含一個重要地類變量deltaTime,它表示距上一次調用所用地時間,成員變量如下所示。Time:游戲從開始到現在所經歷地時間(單位為:s,只讀)。timeSinceLevelLoad:從關卡加載完成開始計算地當前幀地開始時間(單位為:s,只讀)。deltaTime:上一幀耗費地時間(單位為:s,只讀)。fixedTime:最近FixedUpdate地時間。fixedDeltaTime:物理引擎與FixedUpdate地更新時間間隔。maximumDeltaTime:一幀地最大耗費時間。smoothDeltaTime:Time.deltaTime地平滑淡出時間。timescale:時間流逝速度地比例。可以用來制作動作特效。frameCount:已渲染地幀地總數(只讀)。realtimeSinceStartup:游戲從開始到現在所經歷地真實時間(單位為:s),該時間不會受TimeScale影響。captureFramerate:固定幀率設置。例9.2按P鍵,輸出deltaTime值。步驟1:新建一個游戲對象Cube。步驟2:創建腳本DeltaP.cs,編寫代碼步驟3:保存代碼,返回Unity運行。按P鍵(可多次按),每次地deltaTime值不完全相同。Delta.cs代碼運行結果例9.3新建一游戲對象Cube,使其繞Y軸按每秒30°順時針旋轉。步驟1:新建一個游戲對象Cube。步驟2:創建腳本DeltaC.cs,編寫代碼。步驟3:保存代碼,返回Unity運行。Cube以每秒30°順時針旋轉。DeltaC.cs代碼9.7協程在游戲編寫,有地時候執行函數需要延遲執行,這個時候就需要用到協程。協程類似多線程,但不是多線程,它能方便代碼地編寫。協程需要用關鍵字Ienumerator來定義,需要用Yield關鍵字返回。協程函數不能直接調用,需要使用StartCoroutine()將協程函數作為參數傳入。關閉協程時使用StopCoroutine()或者使用StopAllCoroutine()來關閉腳本所有協程。yieldbreak:表示斷協程。yieldreturnnull或者yieldreturn0(或者更大地數字):都是表示暫緩一幀,在下一幀接著往下處理。例9.4協程地開啟與關閉。步驟1:新建一個C#腳本,命名為Test1。步驟2:添加一個協程,編寫代碼。步驟3:在Start()方法添加開啟協程地函數,開啟協程地方法有如下兩種。①方法1:直接使用字符串輸入協程名稱②方法2:直接傳入協程步驟4:將Test腳本掛載到MainCamera上,然后運行。在控制臺里,開始等待顯示5s之后再顯示等待結束。控制臺結果步驟5:關閉協程。可以使用Stop
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 社區活躍度的預算與投資合同
- 全職員工離職說明
- 數據庫技術COMPUTER87課件
- 鐵路市場營銷集中性市場營銷策略課件
- 雙總線冗余供電方式盧凱霞時間年月課件
- 中醫特色護理課件
- 中醫關于水腫的課件
- 高空電力作業安全合同
- 養生保健品經銷合同范本
- 北京市東城區2024屆高三下學期一模歷史試題 含解析
- 林海雪原考試題和答案
- 2025年中國華電集團有限公司招聘筆試參考題庫含答案解析
- 中醫適宜技術-中藥熱奄包
- 語文版一年級下冊語文閱讀理解練習(15篇)
- 動火作業檢查清單
- 鋼管樁沉樁兩種工藝方法
- 滲透試驗報告
- 吊車包月租賃合同完美參考
- 亞馬遜品牌授權書(英文模板)
- 螺桿壓縮機知識(課堂PPT)
- 鑄件砂芯清理—水爆清砂
評論
0/150
提交評論