Unity3D課程學(xué)習筆記(一)
1.解釋游戲?qū)ο螅℅ameObjects)和資源(Assets)的區(qū)別與聯(lián)系
官方文檔對Assets的解釋:An asset is representation of any item that can be used in your game or project. An asset may come from a file created outside of Unity, such as a 3D model, an audio file, an image, or any of the other types of file that Unity supports. There are also some asset types that can be created within Unity, such as an Animator Controller, an Audio Mixer or a Render Texture.
官方文檔對GameObjects的解釋:GameObjects are the fundamental objects in Unity that represent characters, props and scenery. They do not accomplish much in themselves but they act as containers for Components, which implement the real functionality.
解釋區(qū)別與聯(lián)系:對象一般是一些資源的集合體,是資源整合的具體表現(xiàn),而資源可以被多個對象使用。游戲?qū)ο笠话銥橥婕遥瑪橙耍h(huán)境等,而資源可組成游戲中所有的對象,一般包括聲音,腳本,材質(zhì)等,資源可以被多個對象使用,資源作為模版,可實例化游戲中具體的對象。
2.下載幾個游戲案例,分別總結(jié)資源、對象組織的結(jié)構(gòu)(指資源的目錄組織結(jié)構(gòu)與游戲?qū)ο髽涞膶哟谓Y(jié)構(gòu))
游戲:Beat-Plane:如下圖所示結(jié)構(gòu),資源中可以放置圖像、聲音、腳本等。
3.編寫一個代碼,使用 debug 語句來驗證 MonoBehaviour 基本行為或事件觸發(fā)的條件
測試代碼如下所示:
則該代碼運行后在Console中顯示如下所示:
MonoBehaviour 基本行為或事件觸發(fā)的條件(按執(zhí)行順序):
Awake() : 當前控制腳本實例被裝載的時候調(diào)用。一般用于初始化整個事例使用。(建議少用,此刻物體還未實例化出來,會影響程序的執(zhí)行順序)
Start() : 當前控制腳本第一次執(zhí)行Update之前調(diào)用。
Update() : 每幀都執(zhí)行一次,是最常用的時間函數(shù)。
FixedUpdate() : 每固定幀繪制時執(zhí)行一次,和Update不同的是FixedUpdate是渲染幀執(zhí)行,如果你的渲染效率底下的時候FixedUpdate的調(diào)用次數(shù)就會下降。FixedUpdate比較適用于物理引擎的計算,因為是跟每幀渲染有關(guān),而Update比較適合做控制。(放置游戲基本物理行為的代碼,在Update之后執(zhí)行)
LateUpdate() : 在每幀執(zhí)行完畢調(diào)用,他在所有Update結(jié)束后才調(diào)用,比較適合于命令腳本的執(zhí)行。官網(wǎng)上例子是攝像機的跟隨,都是在所有Update操作完才跟進攝像機,不然就有可能出現(xiàn)攝像機已經(jīng)推進了,但是視角里還未有角色的空幀出現(xiàn)。
OnEnable() : 當對象變?yōu)榭捎没蚣せ顮顟B(tài)時此函數(shù)被調(diào)用,OnEnable不能用于協(xié)同程序。(物體啟動時被調(diào)用)
OnDisable() : 當對象變?yōu)椴豢捎没蚍羌せ顮顟B(tài)時此函數(shù)被調(diào)用。當物體銷毀時它被調(diào)用,并且可用于任意清理代碼。當腳本編譯完成之后被重新加載時,OnDisable將被調(diào)用,OnEnable在腳本被載入后調(diào)用。(物體被禁用時調(diào)用)
OnGUI() : 繪制GUI時候觸發(fā)。一般在這個函數(shù)里繪制GUI菜單。(GUI顯示函數(shù)只能在OnGUI中調(diào)用)
4.查找腳本手冊,了解GameObject,Transfrom,Component對象
4.1.分別翻譯官方對三個對象的描述(Description)
GameObject :GameObjects are the fundamental objects in Unity that represent characters, props and scenery. They do not accomplish much in themselves but they act as containers for Components, which implement the real functionality.
翻譯:游戲?qū)ο笫荱nity中表示游戲角色,游戲道具和游戲場景的基本對象。他們自身無法完成許多功能,但是他們構(gòu)成了那些給予他們實體功能的組件的容器。
Transform :The Transform component determines the Position, Rotation, and Scale of each object in the scene. Every GameObject has a Transform.
翻譯: 轉(zhuǎn)換組件決定了游戲場景中每個游戲?qū)ο蟮奈恢茫D(zhuǎn)和縮放比例。每個游戲?qū)ο蠖加修D(zhuǎn)換組件。
Component :Components are the nuts & bolts of objects and behaviors in a game. They are the functional pieces of every GameObject.
翻譯: 組件是游戲中對象和行為的細節(jié)。它是每個游戲?qū)ο蟮墓δ懿糠帧?/p>
4.2.描述下圖中 table 對象(實體)的屬性、table 的 Transform 的屬性、 table 的部件
Table對象的屬性:Tag屬性用于區(qū)分游戲中不同類型的對象,Tag可以理解為一類元素的標記,可用GameObject.FindWithTag()來查詢對象。GameObject.FindWithTag()只返回一個對象,如果想獲取多個Tag為某值的對象,應(yīng)該用GameObject.FindGameObjectsWithTag()。第一個選擇框是activeSelf屬性。Layer屬性默認是Default。
Table的Transform屬性:Position、Rotation、Scale
Table的部件:Mesh Filter、Box Collider、Mesh Renderer
4.3.用UML圖描述三者的關(guān)系:
UML圖如下所示:
5.整理相關(guān)學(xué)習資料,編寫簡單代碼驗證以下技術(shù)的實現(xiàn):
查找對象:
通過名字查找:
public static GameObject Find(string name)
通過標簽查找單個對象:
public static GameObject FindWithTag(string tag)
通過標簽查找多個對象:
public static GameObject[] FindGameObjectsWithTag(string tag)
添加子對象:
public static GameObect CreatePrimitive(PrimitiveTypetype)
遍歷對象樹:
foreach (Transform child in transform) { Debug.Log(child.gameObject.name); }
清除所有子對象:
foreach (Transform child in transform) { Destroy(child.gameObject); }
6.資源預(yù)設(shè)(Prefabs)與 對象克隆 (clone)
6.1.預(yù)設(shè)(Prefabs)有什么好處?
預(yù)設(shè)類似于一個模板,通過預(yù)設(shè)可以創(chuàng)建相同屬性的對象,這些對象和預(yù)設(shè)關(guān)聯(lián)。一旦預(yù)設(shè)發(fā)生改變,所有通過預(yù)設(shè)實例化的對象都會產(chǎn)生相應(yīng)的變化(適合批量處理)。
6.2.預(yù)設(shè)與對象克隆 (clone or copy or Instantiate of Unity Object) 關(guān)系?
對象克隆不受克隆本體的影響,因此A對象克隆的對象B不會因為A的改變而相應(yīng)改變。
6.3.制作 table 預(yù)制,寫一段代碼將 table 預(yù)制資源實例化成游戲?qū)ο?br/>
7.嘗試解釋組合模式(Composite Pattern / 一種設(shè)計模式)。使用 BroadcastMessage()方法向子對象發(fā)送消息
組合模式允許用戶將對象組合成樹形結(jié)構(gòu)來表現(xiàn)”部分-整體“的層次結(jié)構(gòu),使得客戶以一致的方式處理單個對象以及對象的組合。組合模式實現(xiàn)的最關(guān)鍵的地方是——簡單對象和復(fù)合對象必須實現(xiàn)相同的接口。這就是組合模式能夠?qū)⒔M合對象和簡單對象進行一致處理的原因。
子類對象方法:
void recallMessage() { print("Hello!"); }
父類對象方法:
void Start () { this.BroadcastMessage("recallMessage"); }
8.編程實踐,井字棋小游戲
井字棋小游戲其實只是一個2D游戲,具體實現(xiàn)過程并不是很難,主要是要掌握GUI的一些API的使用
本次作業(yè)主要用到GUI的一些API,GUI是指Graphic User Interface,是圖形用戶接口,主要提供可視化界面方面的接口
具體代碼實現(xiàn)如下:
游戲的UI如下所示:
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
網(wǎng)站題目:Unity3D課程學(xué)習筆記-創(chuàng)新互聯(lián)
本文來源:http://newbst.com/article22/doodcc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、網(wǎng)站建設(shè)、營銷型網(wǎng)站建設(shè)、企業(yè)建站、服務(wù)器托管、網(wǎng)站營銷
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容