Unity設(shè)計與應(yīng)用教程_第1頁
Unity設(shè)計與應(yīng)用教程_第2頁
Unity設(shè)計與應(yīng)用教程_第3頁
Unity設(shè)計與應(yīng)用教程_第4頁
Unity設(shè)計與應(yīng)用教程_第5頁
已閱讀5頁,還剩648頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第一章Unity基礎(chǔ)與開發(fā)環(huán)境配置第頁1.1初識Unity游戲開發(fā)引擎第頁1.1.1

Unity簡介:·

Unity是由丹麥Unity公司推出的一個開發(fā)工具,作為一款跨平臺的開發(fā)工具,其從一開始就被設(shè)計成易于使用的產(chǎn)品,支持包括iOS、Android、PC、Web、PS3、Xbox等多個平臺的發(fā)布。1.1.2

Unity的誕生與發(fā)展2005年6月,Unity

1.0發(fā)布2009年3月,Unity

2.5加入了對Windows的支持2009年10月,Unity

2.6獨立版開始免費2010年9月,Unity

3.0支持多平臺2012年2月,Unity

3.5發(fā)布2012年11月,Unity

4.0版本正式推出2013年11月,Unity

4.3版本發(fā)布2014年11月,Unity

4.6版本發(fā)布2015年3月,Unity

5.0在GDC2015上正式發(fā)布2017年3月,Unity2017.1版本發(fā)布,它進行了大范圍的優(yōu)化,增加更多的功能,Unity承諾將進一步面向非程序員。2018年5月,Unity2018.1版本發(fā)布,新版本帶來了一系列很酷且驚人的新功能,是有史以來最大規(guī)模的一次更新。1.1初識Unity游戲開發(fā)引擎1.1.3

Unity的特色:綜合編輯圖形引擎著色器地形編輯器物理特效音頻和視頻集成2D游戲開發(fā)工具第頁1.2

Unity集成開發(fā)環(huán)境的搭建(1)首先進入到Unity的官方網(wǎng)站/cn/,官網(wǎng)如圖1-2所示。然后點擊網(wǎng)站中的黃色按鈕“獲取Unity”即可進入到Unity集成開發(fā)環(huán)境的選擇頁面。Unity集成開發(fā)環(huán)境分為個人版和專業(yè)版,開發(fā)人員需要根據(jù)自身的需求進行選擇,選擇頁面如圖1-3所示。圖1-2

Unity官網(wǎng)界面圖1-3

Unity集成開發(fā)環(huán)境選擇頁面第頁1.2

Unity集成開發(fā)環(huán)境的搭建(2)在5.0版本之后,個人版的Unity集成開發(fā)環(huán)境開始提供免費下載,與專業(yè)版的Unity集成開發(fā)環(huán)境功能大致相同,非常適合獨立游戲開發(fā)者使用。本書將以個人版的下載和安裝為準。所示。點擊“試用個人版”就會自動下載最新版本的Unity,如圖1-4所示。圖1-4

Unity集成開發(fā)環(huán)境下載頁面第頁1.2

Unity集成開發(fā)環(huán)境的搭建(4)選擇合適的使用平臺,點擊上方的“下載安裝程序”按

鈕,就會跳轉(zhuǎn)頁面并彈出下載

提示窗口,可以使用各種主流

的下載平臺進行下載,如迅雷、旋風等等。此時下載下來的是

Unity官方的軟件下載器,如圖

1-6所示。接下來打開下載器,開始下載Unity集成開發(fā)環(huán)境。1-6

Unity下載器第頁1.2

Unity集成開發(fā)環(huán)境的搭建(5)打開下載器后會彈出安裝界面,如圖1-7所示,點擊Next進行下一步。下一個界面是對Unity游戲開發(fā)引擎的一些相關(guān)條款和聲明。1-7Unity安裝界面1第頁1.2

Unity集成開發(fā)環(huán)境的搭建(6)第三個界面用來選擇需要下載的文件,如圖1-9所示。其中包括Unity集成開發(fā)環(huán)境、

Web插件、標準資源包、示例工程、和2017版的VisualStudio代碼編輯軟件,可根據(jù)需要自行調(diào)整。完成后點擊Next按鈕進入下一界面。圖1-9

Unity安裝界面3第頁1.2

Unity集成開發(fā)環(huán)境的搭建(7)下一個界面用來設(shè)置文件下載路徑和文件安裝路徑,如圖1-10所示。在窗口的上半部分可以設(shè)置下載的方式,一種是指定下載路徑,另一種是在Unity集成開發(fā)環(huán)境下載安裝完成后,刪除所有下載的文件安裝包,下半部分用來設(shè)置Unity集成開發(fā)環(huán)境的安裝路徑。圖1-10

Unity安界面4第頁1.2

Unity集成開發(fā)環(huán)境的搭建(8)下一般情況下勾選下面的復(fù)選框點擊Next進入到下一界面即可,下一界面就是下載界面了,如圖1-12所示圖1-12

Unity安裝界面5第頁1.2

Unity集成開發(fā)環(huán)境的搭建(9)安裝完成后就會在桌面生成一個Unity集成開發(fā)環(huán)境的快捷方式,雙擊快捷方式即可進入到

Unity集成開發(fā)環(huán)境中的綜合編輯界面。為了能夠?qū)С鯝ndroid安裝包,還需要為其掛載Android的

SDK,點擊菜單欄中Edit→

Preferences打開配置窗口,如圖

1-13所示。第頁1.2

Unity集成開發(fā)環(huán)境的搭建點擊左側(cè)的External

Tools,右側(cè)就會打開相應(yīng)的設(shè)置面板,在下方的SDK處選擇SDK文件所在的路徑,如圖1-14所示。還可以根據(jù)需要掛載JDK和NDK。MAC

OS

X平臺下的Unity集成開發(fā)環(huán)境的安裝和前面介紹的

Windows平臺下Unity集成開發(fā)環(huán)境的安裝過程完全一樣圖1-14掛載Android

SDK文件第頁第頁1.3

Unity集成開發(fā)環(huán)境的配置1.3.1 Unity集成開發(fā)環(huán)境的整體布局Unity集成開發(fā)環(huán)境,其整體布局包含菜單欄、工具欄、場景設(shè)計面板、游戲預(yù)覽面板、游戲組成對象列表面板、項目資源列表面板、屬性查看器窗口,每個窗口顯示了編輯器的某一部分細節(jié),如圖1-15所示圖1-15

Unity集成開發(fā)環(huán)境的整體布局第頁1.3

Unity集成開發(fā)環(huán)境的配置1.3.1 Unity集成開發(fā)環(huán)境的整體布局點擊工具欄中最右方的菜單還可以創(chuàng)建并保存習慣用的布局,如圖1-16所示。單擊該圖標可以彈出可用的下拉列表,如圖1-17所示。圖1-16保布局圖1-17下拉列表第頁1.3

Unity集成開發(fā)環(huán)境的配置1.3.2 Unity菜單欄File(文件)菜單:打開和保存場景、項目以及創(chuàng)建游戲。Edit(編輯)菜單:普通的復(fù)制和粘貼功能,以及修改Unity部分屬性的設(shè)置。Assets(資源)菜單:與資源創(chuàng)建、導(dǎo)入、導(dǎo)出以及同步相關(guān)的所有功能。GameObject(游戲?qū)ο螅┎藛危簞?chuàng)建、顯示游戲?qū)ο笠约盀槠鋭?chuàng)建父子關(guān)系。Component(組件)菜單:為游戲?qū)ο筇砑有碌慕M件或?qū)傩?。Window(窗口)菜單:顯示特定視圖(例如,項目資源列表或游戲組成對象列表)。Help(幫助)菜單:包含到手冊、社區(qū)論壇以及激活許可證的鏈接。圖1-18菜單欄第頁1.3

Unity集成開發(fā)環(huán)境的配置1.3.3 Unity工具欄Transform(變換)工具:在場景設(shè)計面板中用來控制和操控對象。按照從左到右的次序,它們分別是Hand(移動)工具、Translate(平移)工具、Rotate(旋轉(zhuǎn))工具和Scale(縮放)工具。Transform

Gizmo(變換Gizmo)切換:改變場景設(shè)計面板中Translate工具的工作方式。Play(播放)控件:用來在編輯器內(nèi)開始或暫停游戲的測試。Layers(分層)下拉列表:控制任何給定時刻在場景設(shè)計面板中顯示那些特定的對象。Layout(布局)下拉列表:改變窗口和視圖的布局,并且可以保存所創(chuàng)建的任意自定義布局。圖1-19工具欄1.3

Unity集成開發(fā)環(huán)境的配置1.3.4 Unity場景設(shè)計面板場景設(shè)計面板是游戲世界以及關(guān)卡的一個可視化表示,如圖1-20所示。場景設(shè)計面板還包含一個名為Persp的特殊工具,如圖1-20右上角標志所示。這一特殊工具可以使開發(fā)人員迅速地切換觀察場景的角度。單擊Persp上的每個箭頭都會改變觀察場景的角度,使其沿著一個不同的正交或是二維方向變換,還可以通過快捷鍵對場景進行操作。圖1-20場景設(shè)計面板第頁1.3

Unity集成開發(fā)環(huán)境的配置第頁1.3.4 Unity場景設(shè)計面板Tumble(旋轉(zhuǎn),Alt+鼠標左鍵):攝像機會以任意軸為中心進行旋轉(zhuǎn),從而旋轉(zhuǎn)視圖。Track(移動,Alt+鼠標中鍵):在場景中把攝像機向左、向右、向上和向下移動。Zoom(縮放,Alt+鼠標右鍵或是鼠標滑輪):在場景中縮小或放大攝像機視角。Center(居中,選擇游戲?qū)ο蟛碏鍵):攝像機會放大并把選中的對象居中顯示在視野中1.3

Unity集成開發(fā)環(huán)境的配置1.3.5 游戲預(yù)覽面板圖1-21游戲預(yù)覽面板第頁第頁1.3

Unity集成開發(fā)環(huán)境的配置1.3.6 Unity項目資源列表項目資源列表中列出了項目中的所有文件,包括腳本、貼圖、模型、場景等文件,并且這些文件都組織到一個Assets(資源)文件夾中。Assets文件夾包含創(chuàng)建或?qū)氲乃形募Y源,如圖1-22所示.圖1-22項目資源列表第頁1.3

Unity集成開發(fā)環(huán)境的配置器1.3.7 Unity屬性查看單擊Plane對象,其所有組件的詳細屬性就會顯示在屬性查看器中,如圖1-23-1所示。這些組件是按照添加的先后順序進行排列,在某個組件上面右擊,在彈出的列表中根據(jù)選項對組件屬性進行修改,如圖1-23-2所示。在屬性查看器的頂端是這個對象的名稱,然后是該對象各個方面的一個列表圖1-23-1屬性查看器圖1-23-2改變組件位置參數(shù)第頁1.3

Unity集成開發(fā)環(huán)境的配置1.3.8 Unity狀態(tài)欄與控制臺狀態(tài)欄總是出現(xiàn)在編輯器的底部??梢酝ㄟ^菜單Window→Console或按Ctrl+Shit+C快捷鍵打開控制臺,也可以單擊狀態(tài)欄來打開控制臺。圖1-24狀態(tài)欄與控制欄第頁1.3

Unity集成開發(fā)環(huán)境的配置1.3.9 菜單欄1.文件(File)“New

Scene”菜單功能為新建場景,即新建一個游戲場景,每一個新創(chuàng)建的游戲場景包含了一個Main

Camera(主攝像機)和一個DirectionalLight(平行光光源)?!癘pen

Scene”菜單功能為打開場景,即打開以前所保存的場景,當單擊Open

Scene后,會彈出一個Load

Scene對話框,選擇所要打開的場景文件(后綴為“.unity”的文件)即可。“SaveScene”菜單功能為保存場景,即保存當前所搭建的場景。如果是第一次保存當前場景,會彈出一個Save

Scene對話框,在文件名處輸入文件名稱,單擊保存即可,否則直接保存當前場景。圖1-25

File菜單1.3

Unity集成開發(fā)環(huán)境的配置1.3.9 菜單欄1.文件(File)“BuildSettings...”字菜單功能為發(fā)布設(shè)置,即在發(fā)布游戲前,一些準備工作的設(shè)置。當點擊菜單Build

Settings...,就會立刻彈出

Build

Settings對話框,如圖

1-26所示。在Platform下選擇該項目發(fā)布后所要運行的平臺,同時可以點擊“Player

Setting...”按鈕,在Inspector面板中修改參數(shù)。第頁1.3

Unity集成開發(fā)環(huán)境的配置第頁1.3.9 菜單欄2.編輯(Edit)單擊Edit菜單,會彈出一個下拉菜單,每個子菜單及其對應(yīng)的快捷鍵如圖1-27所示?!癋rame

Selected”菜單功能為居中并最大化顯示當前選中的物體,即若要在場景設(shè)計面板中近距離觀察所選中的GameObject,便可單擊

Frame

selected菜單,快捷鍵為F,可以方便地切換觀察視角?!癙references...”菜單功能為偏好設(shè)置,即對Unity集成開發(fā)環(huán)境的相應(yīng)參數(shù)進行設(shè)置。當單擊Preferences...菜單后,會立刻彈出一個UnityPreferences對話框,在該對話框可進行屬性的相關(guān)設(shè)置。“ProjectSettings”菜單功能為工程設(shè)置,即對工程進行相應(yīng)的設(shè)置。當選中菜單Project

Settings,就會彈出其子菜單,如圖1-28所示,其選項是對工程的具體設(shè)置。第頁1.3

Unity集成開發(fā)環(huán)境的配置1.3.9 菜單欄2.編輯(Edit)圖1-27-1

Edit菜單1圖1-27-2

Edit菜單2圖1-28設(shè)置參數(shù)1.3

Unity集成開發(fā)環(huán)境的配置1.3.9 菜單欄3.資源(Assets)圖1-29資源菜單第頁圖1-30-1

Create菜單1圖1-30-2

Create菜單21.3

Unity集成開發(fā)環(huán)境的配置第頁1.3.9 菜單欄3.資源(Assets)“Create”菜單的功能為創(chuàng)建Unity內(nèi)置的資源,其子菜單為Unity內(nèi)置的各個資源,如圖1-30所示。所創(chuàng)建的任何資源都會出現(xiàn)在項目資源列

表中。“Show

in

Explorer”菜單的功能為在資源管理器中顯示資源文件。“Import

Package”菜單的功能為導(dǎo)入工程所需要的Unity資源包。單擊“Import

Package”菜單下屬的“Custom

Package”子菜單就會彈出Import

Package對話框,找到資源導(dǎo)入即可?!癊xportPackage...”菜單的功能為將所需要的資源導(dǎo)出資源包。選中需要導(dǎo)出的資源文件,單擊“Export

Package...”菜單即可導(dǎo)出資源包。第頁1.3

Unity集成開發(fā)環(huán)境的配置1.3.9 菜單欄4.游戲?qū)ο螅℅ameObject)在Unity集成環(huán)境中,單擊GameObject菜單會彈出一個下拉菜單,如圖1-31所示,單擊Component菜單彈出一個下拉列表,如圖1-32所示。圖1-31

GameObject菜單圖1-32

Component菜單第頁1.3

Unity集成開發(fā)環(huán)境的配置1.3.9 菜單欄4.游戲?qū)ο螅℅ameObject)“CreateEmpty”為創(chuàng)建空游戲?qū)ο?,空游戲?qū)ο缶褪遣粠в腥魏谓M件的游戲?qū)ο?。當單擊菜單“Create

Empty”,或按下快捷鍵Ctrl+Shift+N就會在場景中創(chuàng)建一個空游戲?qū)ο??!?D

Object”下屬的子菜單的功能是創(chuàng)建3D游戲?qū)ο蟆F湎聦俚淖硬藛畏謩e為Cube、Sphere、Capsule、Cylinder、Plane、Quad、Ragdoll...、Terrain、Tree、Wind

Zone和3DText?!癓igth”下屬的子菜單的功能是創(chuàng)建光源對象。其下屬的子菜單分別為Directional

Ligth、Point

Ligth、Spotligth、Area

Light、Reflection

Probe和Light

Probe

Group?!癆udio”下子菜單的功能是創(chuàng)建與聲音有關(guān)的游戲組件。其下屬的子菜單分別為AudioSource和Audio

Reverb

Zone,Audio

Source菜單的功能為創(chuàng)建聲音源?!癠I”下屬的子菜單的功能是創(chuàng)建與搭建UI界面有關(guān)的游戲?qū)ο?。其下屬的子菜單分別為Panel、Button、Text、Image、Raw

Image、Slider、Scrollbar、Toggle、Input

Field、Canvas和Event

System等。第頁1.3

Unity集成開發(fā)環(huán)境的配置1.3.9 菜單欄5.窗口(Windows)在Unity集成環(huán)境中,單擊Window菜單,會彈出一個下拉菜單,每個子菜單及其對應(yīng)的快捷鍵如圖1-33、1-34所示。圖1-33

Windows菜單1圖1-34

Windows菜單21.3

Unity集成開發(fā)環(huán)境的配置第頁1.3.9 菜單欄5.窗口(Windows)“NextWindow”菜單的功能為將當前的視圖轉(zhuǎn)換到下一個窗口。當單擊菜單Next

Window,當前的視圖會自動切換到下一個窗口,實現(xiàn)在不同的窗口視角下觀察同一物體,有助于修改?!癆nimation”菜單的功能為打開動畫設(shè)計面板。當單擊菜單“Animation”,或是單擊快捷鍵Ctrl+6,即可打開動畫設(shè)計面板。“Profiler”菜單的功能為對Unity開發(fā)環(huán)境中各個功能選項的使用情況以及CPU的利用率進行檢查?!癓ighting”菜單的功能為打開光照設(shè)置面板。當單擊菜單“Lighting”,即可打開光照設(shè)置面板。第二章Unity腳本程序基礎(chǔ)知識第頁2.1

Unity腳本概述?第頁Unity中的腳本分為不同的方法,不同的方法在特定的情況下被回調(diào)會實現(xiàn)特定的功能。Start方法:這個方法在游戲場景加載時被調(diào)用,在該方法內(nèi)可以寫一些游戲場景初始化之類的代碼。Update方法:這個方法會在每一幀渲染之前被調(diào)用,大部分游戲代碼在這里執(zhí)行,除了物理部分的代碼。FixedUpdate方法:這個方法會在固定的物理時間步調(diào)調(diào)用一次。這里也是基本物理行為代碼執(zhí)行的地方。2.2

Unity中C#腳本的注意事項第頁繼承自MonoBehaviour類。類名字必須匹配文件名。Unity腳本中協(xié)同程序有不同的語法規(guī)則。只有滿足特定情況變量才能顯示在屬性查看器中。盡量避免使用構(gòu)造函數(shù)2.3

Unity腳本的基礎(chǔ)語法第頁2.3.1位移與旋轉(zhuǎn)位移與旋轉(zhuǎn):在Unity中對游戲?qū)ο蟮牟僮鞫际峭ㄟ^腳本來修改游戲?qū)ο蟮腡ransform(變換屬性)與Rigidbody(剛

體屬性)參數(shù)來實現(xiàn)的。這些參數(shù)的修改是通過腳本編程來實現(xiàn)的。具體開發(fā)流程如下。創(chuàng)建Cube對象。點擊GameObject→3D

Object→Cube,創(chuàng)建一個Cube對象作為本案例案例對象,可以在左側(cè)面板點擊Cube查看其相關(guān)屬性。編寫腳本。在Assets面板點擊Create→C#script,創(chuàng)建一個C#腳本,并將其命名為BUNTrans,然后編寫腳本。掛載腳本。腳本開發(fā)完成后,將這個腳本掛載到游戲?qū)ο笊稀?.3

Unity腳本的基礎(chǔ)語法第頁2.3.1位移與旋轉(zhuǎn)//重寫Update方法//繞x軸每幀旋轉(zhuǎn)2°usingUnityEngine;usingSystem.Collections;

//引入系統(tǒng)包public

class

BNUTransR:MonoBehaviour{//聲明類void

Update(){this.transform.Rotate(2,0,0);}}//引入系統(tǒng)包//聲明類//重寫Update方法//物體每幀沿z軸移動1個單位長度usingUnityEngine;usingSystem.Collections;public

class

BNUTransT

:

MonoBehaviour{void

Update(){this.transform.Translate(0,

0,

1);}}2.3

Unity腳本的基礎(chǔ)語法第頁2.3.2記錄時間記錄時間需要用到Time類,Time類中比較重要的變量為deltaTime它指的是從最近一次調(diào)用Update或者

FixedUpdate方法到現(xiàn)在的時間具體開發(fā)流程如下。創(chuàng)建Cube對象。點擊GameObject→3DObject→Cube編寫腳本。在Assets面板點擊Create→C#script。掛載腳本。腳本開發(fā)完成后,將這個腳本掛載到游戲?qū)ο笊稀?.3

Unity腳本的基礎(chǔ)語法第頁2.3.2記錄時間using

UnityEngine;using

System.Collections;//引入系統(tǒng)包public

class

BNUTime:MonoBehaviour{//聲明類void

Update(){ //重寫Update方法this.transform.Rotate(10

*

Time.deltaTime,

0,0); //繞x軸均勻旋轉(zhuǎn)6

}}2.3

Unity腳本的基礎(chǔ)語法第頁2.3.3訪問游戲?qū)ο蠼M件在Unity中組件屬于游戲?qū)ο?,組件(Component)其實是用來綁定到游戲?qū)ο螅℅ameObject)上的一組相關(guān)屬性。本質(zhì)上每個組件是一個類的實例。常見的組件有:MeshFilter、MeshCollider、Renderer、Animation等等。組件名稱變量名稱組件名稱變量名稱TransformtransformRigidbodyrigidbodyRendererrendererCameraCamera(只在攝像機對象有效)LightLight(只在光源對象有效)AnimationanimationCollidercollider2.3

Unity腳本的基礎(chǔ)語法第頁2.3.3訪問游戲?qū)ο蠼M件using

UnityEngine;using

System.Collections;public

class

BNUComponent

:

MonoBehaviour

{//引入系統(tǒng)包//聲明類//重寫Update方法//沿x軸移動一個void

Update(){transform.Translate(1,

0,

0);GetComponent<Transform>().Translate(1,0,0);//沿x軸移動一個單7

}}2.3

Unity腳本的基礎(chǔ)語法第頁2.3.4訪問其它游戲?qū)ο?、通過屬性查看器指定參數(shù)2、確定對象的層次關(guān)系3、通過名字或標簽獲取游戲?qū)ο?、通過組件名稱獲取游戲?qū)ο?.3

Unity腳本的基礎(chǔ)語法2.3.5向量3D游戲開發(fā)中經(jīng)常需要用到向量和向量的運算,比如上述介紹的物體的位移和旋轉(zhuǎn)等,Unity中提供了完整的用來表示二維向量的

Vector2類和表示三維向量的Vector3類。Vector3類可以在實例化時進行賦值,也可以實例化后給x、y、z分別進行賦值。具體的代碼實現(xiàn)如下。//引入系統(tǒng)包//聲明類//找到子對象“hand”,使其沿ztransform.parent.

Translate(0,

0,

1);//找到父對象,使其按z軸移動usingUnityEngine;usingSystem.Collections;public

class

BNUpractice

:

MonoBehaviour{void

Update(){transform.Find("hand").Translate(0,0,1);動6第頁

7

}}2.3

Unity腳本的基礎(chǔ)語法Vector3類中常量的值第頁常量值常量值Vector3.zeroVector(0,0,0)Vector3.oneVector(1,1,1)Vector3.forwardVector(0,0,1)Vector3.upVector(0,1,0)Vector3.rigthVector(1,0,0)2.3

Unity腳本的基礎(chǔ)語法2.3.5向量方法作用Lerp兩個向量之間的線性插值。Slerp在兩個向量之間進行球形插值。OrthoNormalize使向量規(guī)范化并且彼此相互垂直。MoveTowards從當前的位置移向目標。RotateTowards當前的向量轉(zhuǎn)向目標。Scale兩個矢量組件對應(yīng)相乘。Cross兩個向量的交叉乘積。Dot兩個向量的點乘積。Reflect沿著法線反射向量。Distance返回兩點之間的距離。Project投影一個向量到另一個向量。Angle返回兩個向量的夾角。Min返回兩個向量中長度較小的向量。Max返回兩個向量中長度較大的向量。operator

+兩個向量相加operator

-兩個向量相減operator

*兩個向量相乘operator

/兩個向量相除operator

==兩個向量是否相等operator

!=兩個向量是否不相等ClampMagnitude返回向量的長度,最大不超過SmoothDamp隨著時間的推移,逐漸改變一個第頁2.3

Unity腳本的基礎(chǔ)語法第頁2.3.6

成員變量和靜態(tài)成員變量定義在方法體外的變量是成員變量,可以在屬性查看器看到,讀者可以隨時在屬性查看器中修改它的值。通過private創(chuàng)建的變量是私有變量,這些在屬性查看器中就不會顯示該變量2.3

Unity腳本的基礎(chǔ)語法第頁2.3.6成員變量和全局變量//引入系統(tǒng)包//聲明類//聲明一個公有Transform組件//聲明一個私有Transform組件//重新Start方法//為priTrans賦值//重寫Update方法usingUnityEngine;usingSystem.Collections;public

class

BNUPubvar

:

MonoBehaviour{public

Transform

pubTrans;private

Transform

priTrans;void

Start(){priTrans

=

this.transform;8

}void

Update(){if

(Vector3.Distance(pubTrans.position,

priTrans.position)

<

10){//如果ren和transform的距離小于10Debug.Log(pubTrans.position);

//打印pubTrans的位置1112

}}}2.3

Unity腳本的基礎(chǔ)語法第頁2.3.7實例化游戲?qū)ο骍nity中如果想創(chuàng)建游戲?qū)ο?,可以通過創(chuàng)建游戲?qū)ο蟛藛卧趫鼍爸羞M行,(這些游戲?qū)ο笤趫鼍?/p>

加載的時候被創(chuàng)建出來),如果想創(chuàng)建很多相同

的物體(例如射擊出去的子彈,保齡球瓶等)時也可以在腳本中動態(tài)地創(chuàng)建游戲?qū)ο蟆?梢酝ㄟ^

實例化(Instantiate)快速實現(xiàn)。2.3

Unity腳本的基礎(chǔ)語法第頁2.3.7實例化游戲?qū)ο髐sing

UnityEngine;using

System.Collections;public

class

BNUIns

:

MonoBehaviour{//引入系統(tǒng)包//聲明類//定義公有的對象//重寫Awake方法//定義計數(shù)標志位//重復(fù)5次public

Transform

prefab;public

void

Awake(){int

i

=

0;while

(i

<

5){8Instantiate(prefab,

new

Vector3(i

*

2.0F,

0,

0),Quaternion.identity);//實例化對象//標志位自加910i++;}}}2.3

Unity腳本的基礎(chǔ)語法第頁2.3.8協(xié)同程序和中斷協(xié)同程序,即在主程序運行時同時開啟另一段邏輯處理,來協(xié)同當前程序的執(zhí)行。但它與多線程程序不同,所有的協(xié)同程序都是在主線程中運行的,它還是一個

單線程程序。在Unity中可以通過StartCoroutine方法來啟動一個協(xié)同程序。終止一個協(xié)同程序可以使用StopCoroutine(stringmethodName),而使用StopAllCoroutines()是用來

終止所有可以終止的協(xié)同程序,但這兩個方法都只能終止該MonoBehaviour中的協(xié)同程序。2.3

Unity腳本的基礎(chǔ)語法第頁2.3.8協(xié)同程序和中斷using

UnityEngine;using

System.Collections;public

class

BNUCoroutine

:

MonoBehaviour{//引入系統(tǒng)包//聲明類//重寫Start方法//開啟協(xié)同程序//等待1s//中斷協(xié)同程序//開始循環(huán)//打印提示信息IEnumerator

Start(){StartCoroutine("DoSomething",

2.0F);yield

return

new

WaitForSeconds(1);StopCoroutine(“DoSomething”);

}IEnumerator

DoSomething(float

someParameter){//聲明DoSomething方法while

(true){print("DoSomething

Loop");yield

return

null;

}}}2.3

Unity腳本的基礎(chǔ)語法2.3.9一些重要的類MonoBehaviour類MonoBehaviour類是C#腳本的基類,其繼承自

Behaviour類。在C#腳本中,必須直接或間接的繼承

MonoBehaviour類Transform類場景中的每一個物體都有一個Transform組件,它就是Transform類實例化的對象。用于儲存并操控物體的位置、旋轉(zhuǎn)和縮放。每一個Transform可以有一個父級,允許分層次應(yīng)用位置、旋轉(zhuǎn)和縮放??梢栽?/p>

Hierarchy面板查看層次關(guān)系。Transform類中包含第頁了很多的成員變量2.3

Unity腳本的基礎(chǔ)語法第頁2.3.9一些重要的類Rigidbody類Rigidbody組件可以模擬物體在物理效果下的狀態(tài),它就是Rigidbody類實例化的對象。它可以讓物體接受力和扭矩,讓物體相對真實地移動。如果一個物體想被重力所約束,其必須含有Rigidbody組件。Rigidbody類中包含了很多的成員變量CharacterController類角色控制器是CharacterController類的實例化對象,用于第三人稱或第一人稱游戲角色控制。它可以根據(jù)碰撞檢測判斷是否能夠移動,而不必添加剛體和碰撞器。而且角色控制器不會受到力的影響。CharacterController類包含了很多的成員變量2.3

Unity腳本的基礎(chǔ)語法第頁2.3.10性能優(yōu)化1.緩存組件查詢當通過GetComponent獲取一個組件時,Unity必須從游戲物體里查找目標組件,如果是在Update方法中進行查找,就會影響運行速度。此時可以設(shè)置一個私有變量去儲存這個組件。2.3

Unity腳本的基礎(chǔ)語法第頁2.3.10性能優(yōu)化using

UnityEngine;using

System.Collections;public

class

BNUyh1

:

MonoBehaviour

{//引入系統(tǒng)包//聲明類//聲明靜態(tài)變量//重寫Start方法//為靜態(tài)變量賦值//重寫Update方法private

Transform

m_transform;void

Start

()

{m_transform

=

this.transform;7

}void

Update

()

{m_transform.Translate(new

Vector3(1,0,0));//沿x軸每幀移動一米10}}2.3

Unity腳本的基礎(chǔ)語法第頁2.3.10性能優(yōu)化2.使用內(nèi)建數(shù)組我們在開發(fā)的過程中不可避免的使用到數(shù)組,雖然

ArrayList和Array使用起來容易并且方便,但是相比較內(nèi)建數(shù)組而言,前者和后者的速度還是有很大的差異。內(nèi)建數(shù)組直接嵌入struct數(shù)據(jù)類型存入第一緩沖區(qū)里,不需要其他類型信息或者其他資源,因此用作緩存遍歷更加快捷。所以我們在開發(fā)的過程中應(yīng)該盡量的使用內(nèi)建數(shù)組。2.3

Unity腳本的基礎(chǔ)語法第頁2.3.10性能優(yōu)化3.盡量少調(diào)用函數(shù)干最少的工作實現(xiàn)最大的效益也是性能優(yōu)化中非常重要的一點。上文中也提到了,Unity中Update函數(shù)每一幀都在運行,所以減少Update函數(shù)里面的工作量,可以簡單有效地提高運行效率。這就需要開發(fā)者編程開發(fā)的技巧達成,比如在通過協(xié)調(diào)程序或者加入標志位實現(xiàn)。注意:在實際開發(fā)中,一般把標志位檢查放在函數(shù)外面,這樣就無需每一幀都檢查標志位,減少了設(shè)備性能的消耗。2.3

Unity腳本的基礎(chǔ)語法第頁2.3.11腳本編譯腳本的具體編譯需要以下4步。所有在Standard

Assets,Pro

Standard

Assets,Plugins中的腳本被首先編譯。在這些文件夾之內(nèi)的腳本不能直接訪問這些文件夾以外的腳本。不能直接引用類或它的變量,但是可以使用GameObject.SendMessage與他們通信。所有在Standard

Assets/Editor,Pro

StandardAssets/Editor,Plugins/Editor中的腳本接著被編譯。如果你想要使用UnityEditor命名空間,你必須放置你的腳本到這些文件夾。然后所有在Assets/Editor外面的,并且不在(1)、(2)中的腳本文件被編譯。所有在Assets/Editor中的腳本,最后被編譯。第三章Unity3D圖形用戶界面基礎(chǔ)第頁3.1

GUI圖形用戶界面系統(tǒng)3.1.1

Button控件Button控件用于在界面上創(chuàng)建一個按鈕。當用戶點擊時會觸發(fā)相應(yīng)的功能,在游戲中通常用于界面、游戲功能、游戲設(shè)置的開關(guān)。1

static

function

Button

(position

:

Rect,

text

:

String)

:

boolstatic

function

Button

(position

:

Rect,

image

:Texture)

:

boolstatic

function

Button

(position

:Rect,content

:

GUIContent)

:

boolstatic

function

Button

(position

:

Rect,

text

:String,

style

:GUIStyle)

:

bool第頁3.1

GUI圖形用戶界面系統(tǒng)第頁3.1.1

Button控件·

12·

13if

(GUI.Button(new

Rect(Screen.width/9,Screen.height/4,Screen.height/5,Screen.height/10),"按鈕")){//通過第一種方法實現(xiàn)Button控件·

14 Debug.Log("static

function

Button

(position

:

Rect,

text

:String)

:

bool");}if

(GUI.Button(new

Rect(Screen.width

/

3,

Screen.height

/

4,·

15·

16·

17Screen.height

/

5,

Screen.height

/

5),

test)){//通過第二種方法實現(xiàn)Button控件第·頁·

18 Debug.Log("static

function

Button

(position

:

Rect,

image

:Texture)

:

bool");19

}3.1

GUI圖形用戶界面系統(tǒng)3.1.1

Button控件if

(GUI.Button(new

Rect(Screen.width

/

2,

Screen.height

/

4,·

20·

21Screen.height

/

5,

Screen.height

/

10),

guiContent)){//通過第三種方法實現(xiàn)Button控件·

22 Debug.Log("static

function

Button

(position

:

Rect,

contentGUIContent)

:

bool");}if

(GUI.Button(new

Rect(Screen.width

/

1.5f,

Screen.height

23·

24·

25Screen.height/5,Screen.height/5),"按鈕4",guiStyle)){ //通過第四種方法實現(xiàn)Button控件·

26 Debug.Log("static

function

Button

(position

:

Rect,

text

:String,

style

:

GUIStyle)

:

bool");第·頁

27

}}}3.1

GUI圖形用戶界面系統(tǒng)3.1

GUI圖形用戶界面系統(tǒng)static

function

Label

(position

:

Rect,

text

:

string)

:

void

static

function

Label

(position

:

Rect,

image

:

Texture)

:

voidstatic

function

Label

(position

:

Rect,

content

:GUIContent)

:

voidstatic

function

Label

(position

:

Rect,

content

:

GUIContent,

style

:

GUIStyle)3.1.2

Label控件Label控件是在設(shè)備的屏幕上創(chuàng)建文本標簽或紋理標簽,一般用于提示用戶一些信息。1234void第頁3.1

GUI圖形用戶界面系統(tǒng)第頁3.1.2

Label控件·

13

GUI.Label(new

Rect(Screen.width/8.5f,Screen.height/7,

//創(chuàng)建僅有文字的Label控件14 Screen.height/1.5f,Screen.height/8),"繪制只有文字的Label控件!");15

GUI.Label(new

Rect(Screen.width/8.5f,Screen.height/4.5f,

//創(chuàng)建具有紋理圖片的Label控件Screen.height

/

1.5f,Screen.height

/

8),

texture);·

16·

17

GUI.Label(new

Rect(Screen.width

/

8.5f,

Screen.height

/

2.5f,//使用Conten的Label控件Screen.height

/

1.5f,Screen.height

/

8),

guiContent);·

18·

19

GUI.Label(new

Rect(Screen.width/8.5f,Screen.height/1.7f,

//使用Conten和Style的Label控件·

20Screen.height

/

1.5f,

Screen.height

/

8),

guiContent2,

guiStyle);3.1

GUI圖形用戶界面系統(tǒng)第頁3.1

GUI圖形用戶界面系統(tǒng)3.1.3

DrawTexture控件DrawTexture控件用于繪制紋理圖片,在使用GUI系統(tǒng)創(chuàng)建DrawTexture控件的時候,會有如下靜態(tài)方法供開發(fā)人員調(diào)用,沒有返回值。1

static

function

DrawTexture

(position,image,

scaleMode,

alphaBlend,imageAspect)

:

void第頁3.1

GUI圖形用戶界面系統(tǒng)3.1.3

DrawTexture控件第頁3.1.3

DrawTexture控件11

GUI.DrawTexture(new

Rect(Screen.width/

9,//使用ScaleAndCrop模式繪制的圖片12

Screen.height/

4,Screen.height

/

5,

Screen.height

/

7),13

texture,ScaleMode.ScaleAndCrop,true,0.0f);14

GUI.DrawTexture(new

Rect(Screen.width/

3.5f,//使用ScaleToFit模式繪制的圖片15

Screen.height/

4,Screen.height

/

5,

Screen.height

/

7),16

texture,

ScaleMode.ScaleToFit,

true,

0.0f);3.1

GUI圖形用戶界面系統(tǒng)第頁3.1.3

DrawTexture控件

17

GUI.DrawTexture(new

Rect(Screen.width/2,//使用StretchToFill模式繪制的圖片18 Screen.height

/

4,Screen.height

/

5,

Screen.height

/

7),19

texture,

ScaleMode.StretchToFill,

true,

0.0f);20

GUI.DrawTexture(new

Rect(Screen.width/2, //關(guān)閉混合通道效果21 Screen.height

/

2,Screen.height

/

5,

Screen.height

/

7),22 texture2,

ScaleMode.StretchToFill,

false,

0.0f);23 GUI.DrawTexture(new

Rect(Screen.width/4,//開啟混合通道效果24 Screen.height

/

2,Screen.height

/

5,

Screen.height

/

7),25 texture2,

ScaleMode.StretchToFill,

true,

0.0f);3.1

GUI圖形用戶界面系統(tǒng)第頁3.1

GUI圖形用戶界面系統(tǒng)3.1.4

Box控件·

Box控件用于繪制圖形化的盒子,在使用GUI系統(tǒng)創(chuàng)建Box控件的時候,會有如下部分靜態(tài)方法供開發(fā)人員調(diào)用,沒有返回值?!?/p>

1234staticfunction

Box

(position

:

Rect,

text

:

string)

:

voidstatic

function

Box

(position

:

Rect,

image

:

Texture)

:

voidstatic

function

Box

(position

:

Rect,

content

:

GUIContent)

:

voidstatic

function

Box

(position

:

Rect,

text

:

string,

style

:

GUIStyle)

:

void第頁3.1

GUI圖形用戶界面系統(tǒng)3.1.4

Box控件第頁3.1.4

Box控件GUI.Box(new

Rect(Screen.width

/

8.5f,

Screen.height

/

7,·

12·

13 Screen.height/5,Screen.height/5),"圖形化盒子!");//使用第一種方法實現(xiàn)控件GUI.Box(new

Rect(Screen.width

/

4,

Screen.height

/

7,·

14·

15 Screen.height

/

5,

Screen.height

/

5),

texture);使用第二種方法實現(xiàn)控件GUI.Box(new

Rect(Screen.width

/

8.5f,

Screen.height

/

2.5f,·

16·

17Screen.height

/

5,

Screen.height

/

5),

guiContent);//使用第三種方法實現(xiàn)控件·

18GUI.Box(new

Rect(Screen.width/4,Screen.height/2.5f,

//使用第四種方法實現(xiàn)控件·

19 Screen.height/5,Screen.height/5),"這是一個使用GUIStyle的圖形化盒子!",guiStyle);3.1

GUI圖形用戶界面系統(tǒng)第頁3.1

GUI圖形用戶界面系統(tǒng)3.1.5

TextField控件·

TextField控件用于創(chuàng)建單行文本編輯框,在其中可以編輯字符串。在使用GUI系統(tǒng)創(chuàng)建TextField控件的時候,會有如下四個靜態(tài)方法供開發(fā)人員調(diào)用,每當用戶編輯字符串時會返回被編輯的字符串。static

function

TextField

(position

:

Rect,

text

:

String)

:

Stringstaticfunction

TextField

(position

:

Rect,

text

:

String,

maxLength

:

int)

:

Ststatic

function

TextField

(position

:

Rect,

text

:

String,

style

:

GUIStyle)

:

1234static

function

TextField

(position

:

Rect,

text

:

String,

maxLength

:

int,

styGUIStyle):

String第頁3.1

GUI圖形用戶界面系統(tǒng)3.1.5

TextField控件第頁3.1.5

TextField控件·

10Rect(·

11stringDemo1

=

GUI.TextField(new//使用第一種方法創(chuàng)建的TextFieldScreen.width

/

8.5f,Screen.height

/

9.5f,·

12Screen.height

/

1.5f,

Screen.height

/

8),stringDemo1);·

13Rect(·

14stringDemo2

=

GUI.TextField(new//使用第二種方法創(chuàng)建的TextFieldScreen.width

/

8.5f,Screen.height

/

3.9f,·

15Screen.height

/

1.5f,

Screen.height

/

8),stringDemo2,

30);3.1

GUI圖形用戶界面系統(tǒng)第頁3.1.5

TextField控件·

16 stringDemo3=GUI.TextField(new

Rect( //使用第三種方法創(chuàng)建的TextField·17Screen.width

/

8.5f,Screen.height

/

2.5f,·18Screen.height

/

1.5f,

Screen.height

/

8),

stringDemo3,guiStyle);·

19 stringDemo4=GUI.TextField(new

Rect( //使用第四種方法創(chuàng)建的TextField·20Screen.width

/

8.5f,Screen.height

/

1.8f,·21 Screen.height

/

1.5f,

Screen.height

/

8),

stringDemo4,

30,guiStyle);·22}}3.1

GUI圖形用戶界面系統(tǒng)第頁3.1

GUI圖形用戶界面系統(tǒng)3.1.6

PasswordField控件PasswordField控件用于創(chuàng)建一個用于編輯密碼的文本編輯區(qū)。1

static

function

PasswordField

(position

:

Rect,

password

:

String,

maskChar

:

char)

:Stringstatic

function

PasswordField

(position

:

Rect,

password

:

String,

maskChar

:

char,

maxLength

:

int)

:

Stringstatic

function

PasswordField

(position

:

Rect,

password

:

String,

maskChar

:

char,

style

:

GUIStyle)

:

String第頁3.1

GUI圖形用戶界面系統(tǒng)3.1.6

PasswordField控件第頁3.1.6

PasswordField控件public

class

Demo

:

MonoBehaviour

{

4 private

string

stringDemo="Hello

World!"; //聲明字符串用于儲存密碼字段

5 void

OnGUI(){ //重寫OnGUI方法,用于控件的繪制6 stringDemo=

GUI.PasswordField(new

Rect(Screen.width

/

8.5f, Screen.height

/

9.5f,7 Screen.height

/

1.5f,

Screen.height

/

8),

stringDemo,"&",

25//通過第二種靜態(tài)方法創(chuàng)建控件8

}}3.1

GUI圖形用戶界面系統(tǒng)第頁3.1

GUI圖形用戶界面系統(tǒng)3.1.7

TextArea控件TextArea控件用于創(chuàng)建一個多行的文本編輯區(qū),用于文字編輯。static

function

TextArea

(position

:

Rect,

text

:

String)

:

Stringstatic

function

TextArea

(position

:

Rect,

text

:

String,

maxLength

:

int,

style

:GUIStyle)

:

String第頁3.1

GUI圖形用戶界面系統(tǒng)3.1.7

TextArea控件第頁3.1.7

TextArea控件public

class

Demo

:

MonoBehaviour

{

4 public

string

stringDemo; //聲明字符串,用于儲存編輯的字符串·

6void

OnGUI(){stringDemo=GUI.TextArea(new

Rect(Screen.width/8.5f,//使用第一種靜態(tài)方法創(chuàng)建編輯區(qū)

7 Screen.height

/

9.5f,Screen.height

/

1.5f,

Screen.height

/

5)stringDemo);8

}}3.1

GUI圖形用戶界面系統(tǒng)第頁3.1

GUI圖形用戶界面系統(tǒng)3.1.8

Toggle控件Toggle控件用于繪制一個開關(guān),通過控制開關(guān)的閉合來執(zhí)行一些具體的操作。Toggle控件用于繪制通過控制開關(guān)的閉合來執(zhí)行一些具體的操作按鈕,類似于單選按鈕。123static

function

Toggle

(position

:

Rect,

value

:

bool,

text

:

String)

:

boolstatic

function

Toggle

(position

:

Rect,

value

:

bool,

image

:

Texture)

:

boolstatic

function

Toggle

(position

:

Rect,

value

:

bool,

content

:

GUIContent,style

:

GUIStyle)

:

bool第頁3.1

GUI圖形用戶界面系統(tǒng)3.1.8

Toggle控件第頁3.1.8

Toggle控件·7void

OnGUI(){//重寫OnGUI方法,用于控件繪制·8if

(!texture){//判斷圖片是否添加·9Debug.LogWarning("請?zhí)砑右粡垐D片");//如果沒有添加就打印警告,提示用戶添加·10return;·11}12

textBool=GUI.Toggle(new

Rect(Screen.width/8.5f,//使用第一種靜態(tài)方法創(chuàng)建13 Screen.height/7,Screen.height/5,Screen.height/5),textBool,"開關(guān)控件");14

textureBool=GUI.Toggle(new

Rect(Screen.width/4,//使用第二種靜態(tài)方法創(chuàng)建15 Screen.height

/

7,

Screen.height

/

5,

Screen.height

/

5),

textureBool,

texture);3.1

GUI圖形用戶界面系統(tǒng)第頁3.1

GUI圖形用戶界面系統(tǒng)3.1.9

SelectionGrid控件SelectionGrid控件用于創(chuàng)建一個網(wǎng)格按鈕。指定創(chuàng)建的按鈕的數(shù)量以及每一排放置的個數(shù),控件就會自動調(diào)整按鈕的大小以及布局。1

static

function

SelectionGrid

(position

:

Rect,

selected

:

int,

texts

:

String[xCount

:

int)

:

intstatic

function

SelectionGrid

(position

:

Rect,

selected

:

int,

images

:

TexturxCount

:

int)

:

intstatic

function

SelectionGrid

(position

:

Rect,

selected

:

int,

images

:

TexturxCount

:

int,

style

:

GUIStyle)

:

int第頁3.1

GUI圖形用戶界面系統(tǒng)3.1.9

SelectionGrid控件第頁3.1.9

SelectionGrid控件4 public

Texture[]texture;

//聲明紋理數(shù)組5

private

string[]textStrings=new

string[]{"按鈕一","按鈕二","按鈕三","鈕四"};//聲明字符串數(shù)組//第一個控件的索引//第二個控件的索引private

int

index;private

int

deindex;void

OnGUI(){·

9index

=

GUI.SelectionGrid(new

Rect(Screen.width

/

40,Screen.height

/7,Screen.width

/

5,·

10Screen.height/4),index,textStrings,2);

//使用第一種靜態(tài)方法,創(chuàng)建2*2的按鈕網(wǎng)格11

deindex

=

GUI.SelectionGrid(new

Rect(Screen.width

/

4,

Screen.height

/

7,Screen.width/5,12 Screen.height/4),deindex,texture,2);

//使用第二種靜態(tài)方法,創(chuàng)建2*2的按鈕網(wǎng)格3.1

GUI圖形用戶界面系統(tǒng)第頁3.1

GUI圖形用戶界面系統(tǒng)3.1.10

HorizontalScrollbar控件與VerticalScrollbar控件HorizontalScrollbar控件用于創(chuàng)建一個水平滾動條。VerticalScrollbar控件用于創(chuàng)建一個垂直滾動條。水平(垂直)滾動條控件,用戶都可以為其設(shè)定閾值。用戶可以在最大值與最小值之間移動。1

static

function

HorizontalScrollbar

(position

:

Rect,

value

:

float,

size

:

float,

leftValue

:

float,rightValue

:

float)

:

float2

static

function

HorizontalScrollbar

(position

:

Rect,

value

:

float,

size

:

float,

leftValue

:

float,rightValue

:

float,

style

:

GUIStyle)

:

float3

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論