Udemy線上課程 從零開始的 Unity 魔法學堂 講師:Neilian Aryan 影音教學 中文發音 中文版(DVD版)
製作這套教程的初衷,是想以一種有趣而獨特的形式(或者說一套以比喻構成的外殼),來代替常規編程學習中令新手們困惑的專業概念和名詞,以達到降低學習難度、提高學習興趣的目的。
很高興課程得到了很多朋友的肯定和支持,但在製作、發佈的過程中,也有一些小夥伴表示,這套以魔法概念構成的比喻,反而給自己的學習帶來了一些困擾(這樣的困擾主要集中在有一些基礎的小夥伴身上),如果你在學習過程中也產生了這樣的困惑,非常抱歉,我很希望可以幫助大家,你可以加入課程的交流群中隨時提問,我會一一解答你的困惑。
出於提高學習效率的目的(這也是課程製作的初衷),我在課程進度過半時,補充了這篇序言,這篇文章不會涉及任何魔法比喻,而是以通俗的語言和例子,講解編程的基本思想,乃至Unity開發的一些思想,希望能消除理解障礙,幫助你更好地接受課程的概念,再次對產生困惑的朋友們表示歉意。
程序是什麼?
程序是對數據進行加工處理的一組操作,計算機專業的同學可能更熟悉這種表述:程序 = 算法 + 數據結構,很凝練,但可能不太好懂。
就拿計算器軟體來說,“數據”便是用戶輸入的數字,以及用戶選擇的加減乘除等運算符,“加工處理”則是用戶按下等於號後,程序內根據數字、運算符,進行的一系列計算,最終計算得到的結果會顯示給用戶。
這個例子比較極端,因為計算器就是做數據處理的軟體,現在來看看你可能更熟悉的聊天軟體,“數據”除了用戶輸入的文本內容,還有存儲在設備上的通訊錄(當然就通訊錄模塊來說,聯繫人也是由用戶輸入的數據),“加工處理”則是按下發送按鈕後,聯繫人和內容被打包發送給服務器的一系列操作。
再進一步,對於一箇角色扮演遊戲來說,角色的信息、用戶的操作、場景的物件,都是“數據”,而角色和場景中其他角色的交互、角色的成長、裝備的獲取和升級等等數據的變化,則都屬於數據的“加工處理”,只是對於遊戲這種大規模的程序來說,數據和加工要遠遠比計算器複雜,因此要將數據進行分類整理,組成比單個數字更結構化的數據,這也是“數據結構”和“面向對象”解決的問題。
稍微夠點規模的程序,必然要拆分成多箇模塊,各司其職,比如聊天軟體的數據收發模塊,通訊錄模塊,文本編輯界面模塊等等。
這樣做有很多好處,比如在開發各個模塊時,只需要考慮當前模塊如何將接收到的數據處理成符合要求的結果,而不用考慮別的模塊怎麼運作,當一箇模塊出現BUG時,也只需要專心修復這個模塊,另外這些模塊也可以從程序中提取出來,放進別的有相同需求的程序裏,就像搭積木一樣,比如聊天軟體的文本編輯模塊也可以放在備忘錄軟體裏。
遊戲引擎是什麼?
如果把各種遊戲比作一箇個積木搭建的大廈,想想看,其實很多遊戲的“積木”都是一樣或者非常類似的,比如模型、貼圖渲染,音頻播放,物理系統等等,遊戲開發者當然沒必要每次開發新遊戲時,都把這些模塊重新開發一遍,就像造汽車沒必要重新造輪胎,直接採購現成的就好啦(這也是程序員常說的“造輪子”的出處)。
遊戲引擎就是一箇樣式齊全、整理有序的積木套裝,除了現成的積木塊兒,還提供了扳手錘子鋸子螺絲刀,供你DIY積木塊。
嚴謹一些說,遊戲引擎提供了各種常用模塊的代碼庫,可以讓你在自己的代碼中調用,此外還提供了一套人性化的操作界面,讓你可以靠點擊鼠標的方式完成很多傳統軟體行業靠寫代碼才能完成的工作,這也是為什麼一些簡單的遊戲可以不寫代碼就做出來。
根據遊戲引擎的設計,一箇遊戲被分成一箇個場景,每個場景又包含很多物體,不同物體上掛載著不同的組件,而組件則可以執行不同的功能。
遊戲開發者可以使用引擎提供的組件,也可以自己寫代碼,並作為組件掛載在物體上。
面向對象是什麼?
模塊既然是各司其職的,那就可能會存儲數據,並提供一系列與當前模塊和數據相關的操作。
但模塊這個詞可能會讓你聯想到手錶裏的零件:各有各的功能,各不相同,不過實際情況稍有不同,雖然很多模塊確實是各不相同的,但也有很多模塊是可重複的。
還是以角色扮演遊戲為例,如果程序中有一箇“角色模塊”,那麼這個模塊應當存儲著角色的姓名、等級、人物模型、裝備列表等等信息,並提供諸如“走路”、“攻擊”、“死亡”之類的操作,玩家、怪物、NPC都應當具備這樣的模塊,但你不必為每個角色都寫一套角色模塊,只需寫一箇模版,然後用模版來建立一箇個實際的模塊即可。
當各個角色都有了角色模塊,那麼想要知道某個角色的信息,或者對它進行什麼操作,只需要拿到它身上的角色模塊,然後“按下上面的按鈕”就好啦!
這種思想就是面向對象,當然面向對象的思想還包含著一些別的東西,你將在之後深入學習。
所謂“模塊”就是“對象”,而模塊的“模版”被稱作“類”,類中規定了對象可以存儲什麼數據,執行什麼操作。
場景中物體上掛載的各種組件,其實就是一箇個對象,但反過來,對象不一定是組件,組件只是引擎為了方便開發者使用,所提供的一種特殊的對象存在形式。
類裏有什麼?
類規定了對象可以存儲什麼數據,以及可以執行什麼操作,數據存儲在“變量”裏,而操作存儲在“方法”裏,無論是變量還是方法,都稱作類的“成員”,類裏主要的東西就是變量和方法,一旦定義完成,你就可以通過類建立對象,然後通過對象存取數據,或者調用方法來執行操作(也就是按按鈕)。
方法
方法的本質就是處理數據的一組操作,你可以把它想象成一箇超小型的程序(實際上某些方法完全可以比肩早期的計算機程序),方法規定了自己可以接收什麼類型的輸入(即方法的參數),以及輸出什麼類型的結果,方法內部就是具體的執行語句。
執行語句可以是變量之間的運算,比如兩個數的加法,也可以是其他方法的調用,比如執行某個“玩家對象”的“死亡”方法,或者其他一些可執行語句,為了提高效率,可以通過“控制流”來改變語句的執行流程。
控制流
執行語句一行一行執行,就叫做順序執行;按照某個條件,滿足則執行,不滿足則執行別的或者不執行,這種方式就叫做條件分支;如果滿足某個條件則一直執行某些語句,直到不滿足為止,這種方式叫做循環。
順序、條件分支、循環,是各種編程語言都會具備的控制流,也許你在高中的數學課上也學過這些概念(程序流程圖)。
變量
變量是用來存數據的,數據都有什麼呢?簡單來說,有數字、文字、布爾邏輯(真或假)等等,複雜的話,還可以存不同的對象,因此變量在定義時,也要規定它的類型,之後就可以根據類型存入數字、文字或某種對象。
總結
場景 -> 物體 -> 類與對象/組件 -> 方法 -> 控制流 -> 變量,我們從頂到底、從主幹到末梢,簡單梳理了遊戲編程的大概思路,希望能幫助你建立基本的知識體系認知,並在之後的學習過程中,可以將具體的知識填充到對應的骨架上。
祝你學習順利,早日實現自己的夢想,再次感謝你的支持!
01 - 基本入門
001 魔法師學徒 - 準備工作.mp4
002 世界的構成 - 基本架構.mp4
003 初識魔法書 - Unity界面.mp4
004 提線木偶戲 - 基本工作流程.mp4
005 最初的魔法 - Hello world!.mp4
02 - C# 初級
001 魔力的來源 - 變量.mp4
002 陰與陽之道 - 二進制與類型等.mp4
003 因子的反應 - 運算符.mp4
004 術式的流動 - 控制流.mp4
005 因與果之術 - 方法.mp4
006 連續的魔晶 - 數組.mp4
007 虛妄的名字 - 枚舉.mp4
008 以因鑄造因 - 結構體.mp4
009 魔法見習生 - 階段總結.mp4
03 - C# 高級
001 因子凝成靈 - 類.mp4
002 靈子的繁衍 - 繼承.mp4
003 靈術的傳承 - 多態.mp4
004 術式的烙印 - 抽象與接口.mp4
005 無瑕的咒語 - 屬性與異常.mp4
006 靈子的反應 - 運算符重載與索引器.mp4
007 聰明的魔晶 - 泛型與集合.mp4
008 萬物驅動者 - 委托.mp4
009 低階魔法師 - 階段總結.mp4
04 - Unity 初級
001 組織的力量 - 命名空間與生命周期.mp4
002 三位成一體 - Transform組件.mp4
003 游玩者之眼 - 渲染與相機.mp4
004 神說要有光 - 光照.mp4
005 萬物的理論 - 碰撞與觸發.mp4
006 堅固的部件 - 剛體與關節.mp4
007 看不見的線 - 射線、標簽與層.mp4
008 遺落神殿上 - 課外實戰設計.mp4
009 遺落神殿下 - 課外實戰實現.mp4
05 - Unity 中級
001 發號施令者 - Action與UnityEvent.mp4
002 勇者的視野 - UI系統.mp4
003 鼠跡追蹤者 - Input系統.mp4
004 世界的律動 - 動畫系統.mp4
005 星火與線條 - 特效系統.mp4
006 腳下的路途 - 導航系統.mp4
007 聲光的藝術 - 多媒體.mp4
008 少女作戰上 - 課外實戰設計.mp4
009 少女作戰下 - 課外實戰實現.mp4
06 - Unity 高級
001 時間的切片 - 協程與多線程.mp4
002 空間的區塊 - 場景切換與LOD.mp4
003 用時再登場 - 預制體與對象池.mp4
004 萬維支援者 - 網絡請求.mp4
005 文字捕獲咒 - Json解析與正則表達式.mp4
006 不朽的文字 - IO與存檔.mp4
007 絕密的檔案 - 存檔加密.mp4
008 次元落成時 - 打包.mp4
009 魔法師結業.mp4
|
|