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