1. 程式人生 > >暑假開發過程及開發收穫

暑假開發過程及開發收穫

開發過程:

       7月20日、7月21日 討論大作業的專案型別及確定專案型別(unity3d-遊戲)和專案以及組長分配各組員的任務。
       7月22日  下載相關軟體(unity3d、visual studio)及瞭解學習自己的任務及為明確接下一個月的學習及開發計劃。
       7月23日、7月24日、 7月25日   在siki學院網站通過學習打磚塊( http://www.sikiedu.com/course/77)一個簡單的小遊戲及進入unity開發的奇幻世界(

https://pan.baidu.com/s/1R9ay7ERAAq-DXf5r1L_krQ 密碼:78c4)來學習unity3d的基礎知識。

       7月26日、7月27日  學習c#的入門知識(http://www.sikiedu.com/course/83/tasks

       7月28日 匯入專案相關素材及搭建專案環境——家及建立修煉場。

       7月29日、7月30號 學習Unity3d四種光的使用並將其運用給環境新增燈光效果。

       7月31日、8月1日 根據MonoBehaviour解析器的OntriggerEnter、OnTriggerStay、OnTriggerExit函式及Time類來進行修煉場的計時程式碼編寫。

       8月2日、8月3日、8月4日、8月5日 學習GameObject、Component的常用操作以及GUITexture和GUIText,對遊戲新增技能圖片顯示及文字顯示。

       8月6日、8月7日 搭建水資源及小橋場景。

       8月8日、8月9日 優化遊戲場景。

       8月10日   總結開發過程及開發收穫。

開發收穫:

       1.unity四種燈光                  

              (1)Directional light(平行光{模擬太陽光})
                                color  光的顏色
                                Intensity  光照強度
                                shadow type  影子型別(None無  Hard硬  soft軟-效能耗費比較大一點,看著柔和一些)

              (2) point light (點光源 {模擬燈泡})
                                 range   光照範圍(球半徑)

              (3) spot light
                                 range  光照長短
                                 spot angle:光照半徑,範圍   

             (4)Area Light (區域光源)

       2.C#指令碼入門學習總結

                指令碼執行(指令碼必須掛載在Companent上)

               共同變數(會顯示在Inspector面板上,我們可以在Inspector面板上修改它的屬性,以Inspector面板上的值優先)

               私有變數

               靜態變數(在環境中只有一份)

               指令碼訪問 (可以訪問到這個指令碼所在的GameObject上的Camera,GUILayer,transform)

               元件之間訪問

                       (1)//this.transform//可以訪問到這個指令碼所在的GameObject上的transform元件

                          使用這個this物件可以訪問到父類(MonBehavirou)裡面的一些預設的系統元件(這個元件不存在的話,)

                       (2)第二種訪問其他元件的方式是通過定義一個public變數,然後在inspector面板中選擇或者手動拖放指定

                    (3)第三種訪問其他元件的方式

                             Transform t = cube1.GetComponent<Trasnsform>();

                             print(t.position);

                         首先得到元件所在的GameObject,然後通過GetGomponent方法獲得這個GameObect上的元件

         3.MonoBehavlour解析

              GameObject Component

                    (1)  事件方法: Awake     Start    Update    FlxedUpdate    OnGUI

                    (2)方法執行順序:Awake>Start>Update>FixedUpdate>LateUpdate;

                    (3)void Awake()  //甦醒方法,呼叫指令碼的時候執行。

                    (4)  void Start()  //比Awake 晚一點  開始執行,和Awake一樣 執行一次

                    (5)void Update()  // 更新   每間隔一段時間呼叫一次 執行時間不固定,每一次執行的時間不一樣。所以每一幀執行的時  間不一樣,如果這針時間長,下一針執行的時間就會晚一點

                    (6)void FixedUpdte()  // 固定執行,沒針執行。不會延遲下一針的執行時間。

                    (7)void LateUpdate() // 最後執行的。執行時間不固定

         4.Unity中的GameObject和常見操作

                     (1)GameObject

                               屬性 (a)tag

                                               if (other.gameObject.tag == "Player")

                                        (b)name

                               方法 

                                         SetActive設定GameObject是否是活躍(它的父節點不是活躍的子節點都是不活躍的)

                      (2)如何查詢GameObject

                            (a)直接拖拽賦值(在類中宣告public變數,拖拽)

                            (b)查詢

                                   例: GameObject.Find(find by name)

                                            GameObject.FindGameObjectsWithTag(find by tag)

                                            GameObject.FindWithTag(find by tag)

        5.Unity中Componet和常用操作

                  (1)//得到遊戲物體

                                 GameObject go ;

                          //得到Transform元件

                                Transform tran = gc.transform;

                         //進行物體的移動

                                GetComponet如果不為空返回一個元件型別的GameObject//可以在一個GameObject上呼叫go.GetComponet  也可以在一個指令碼物件(元件物件)上呼叫 transform.GetComponent,查詢的範圍都是這個GameObject上掛在的所有指令碼(元件)。

         6.OnGUI
                (1)unity中的gui也是按照幀繪製的,OnGUI方法就是按照幀來繪製,按照幀來執行輸入檢測和按鍵檢測 
                (2)OnGUI在執行的時候才可以看到效果,OnGUI是直接繪製到螢幕上的ui元素,跟3d環境是分離的 
                (3)可以繪製文字,圖片, 按鈕,單選按鈕,滑動條 
                        a)static void Label(Rect position, string text); 繪製文字 
                        b)static bool Button(Rect position, string text); 繪製按鈕 
                        c)按鈕的按鍵檢測 
                        d)使用Screen.width Screen.height獲取螢幕的高度和寬度 

         但GUI並不顯示在3D環境中而是時刻顯示在螢幕上比如頭像顯示狀態顯示,狀態列像是,小地圖顯示 (GUITexture;GUIText),而座標的值是按照螢幕的比例來進行計算,座標原點位於螢幕的左下角向右為x軸,想上為y軸,z軸越大顯示在最上方。