切換
舊版
前往
大廳
主題

資策會Unity課程「Untiy入門」Day1

冰劍士-冰雪飛 | 2014-10-01 22:04:23 | 巴幣 34 | 人氣 3807

從9/29開始報到開訓典禮,9/30正式上課,此篇則為9/30所教的課程

往後我盡量發表我當天所學到的部分,以供未來有人可能會看資策會的課程做參考

也順便複習下課程的內容
========================================================================
這堂課為「Unity入門」,簡單來講就是介面操作上的入門

往後還有C#專門的課程,不過這堂有先介紹點簡單基礎的Unity API的程式語法

基本上個人在進到課堂前有稍微接觸過Unity3D,所以這堂課大部分都還算熟悉

不過一些小細節的部分倒是真的不知道,也順便放上來給大家看
========================================================================
因為本人30天試用期已過,所以已從Pro版轉為Free版

所以畫面才會正麼白,這點事先說明一下

未來再看看專題製作會不會用到Pro版的功能在考慮購買

暫時先用官方的範例當介面的介紹

首先要建立一個專案,File>New Project...
選好你要建立的專案所在資料夾名稱
在下面的Setup defaults for:裡面有兩個選項為3D 2D
這是決定你遊戲設計的環境為3D還是2D,而範例所使用的是2D
當然你也可以使用3D的環境匯入2D的專案,這其實沒有影響

Window>Asset Store則可以在線上選擇你要使用的各種素材等
甚至一些好用的簡單工具也可從這入手,官方範例檔也是從這弄來並匯入使用
有些免費有些則需要$$,使用後可以讓你製作遊戲簡化許多

下方Project介面區有Assets的部分是你遊戲製作所用的素材
裡面包含Sprite(圖片)、Audio(音頻)、Script(腳本)等許多
這些都會實際在Unity程式外產生資料夾,以方便從外部匯入進去

順帶一提,你要編輯遊戲,必須開啟一個Scene(場景)
這概念像是一個地圖區塊的,各個地圖區塊都會有不同的物件事件等

Console是編譯結果,使否有程式撰寫上的Bug都會在這顯示出

Hierarchy內所放的是GameObject(遊戲物件,場景內的所有資源模組等)
應該有人有注意到那些GameObject有些是藍字
那是因為這些GameObject被回存放到Assets內當作一個模組來用
(只要將你要存的GameObject整個拖曳至Assets內的任何位置既可儲存)
就很像你要寫很多雜魚,你不可能把同個雜魚一直重複撰寫
而且要修改也不可能在一大群內一個一個改,所以把它模組化後就可以不斷地丟上去
而且只要在Assets內把它打開來做一次性的修改,其他放上去的也會順便改好

而GameObject內部的Component(元件,遊戲物件的任何狀態效果)編輯在右方的Inspector介面區
話說自己所撰寫好的Script也是放在這裡,才能讓Script去操作GameObject
========================================================================
稍微簡單介紹一點Component的各類效果
Transform:座標系統,Position(位置)、Rotation(旋轉方式)、Scale(縮放比例)
Physics2D>Rigidbody 2D:2D角色物理行為
Physics2D>Box Collider 2D:2D箱形碰撞判定
Physics2D>Circle Collider 2D:2D圓形碰撞判定
Physics2D>Edge Collider 2D:2D線性碰撞判定
Physics2D>Polygon Collider 2D:2D多邊形碰撞判定
Rendering>Camera:攝影機畫面,在遊戲中所顯示的畫面區塊
========================================================================
C#的語法稍微簡單帶入一點,沒做多少深入

Unity內建的程式撰寫工具是MonoDevelop
聽說最近好像有讓Unity直接開啟Visual Studio來撰寫C#腳本的東西
畢竟C#是微軟開發出來的還是使用Vistual Studio會比較好
課堂上沒有用出來也不敢確定是否真的有用

using UnityEngine;
使用預先寫好的程式,這是Unity事先幫你寫好的程式,讓你省去大部分的麻煩

void Start()
這段函式內部所要放的是初始化的值

void Update()
每秒程式會讀取這段來不斷更新遊戲內部的狀態,FPs(更新次數/秒)就是指這裡

先提一下可能會常犯的一個錯誤
當你使用float的類型請務必將數字後加個f or F,不然程式會搞不懂你是寫float還是double

簡單的改GameObject座標程式碼
transform.position = new Vector3(x,y,z);
x y z為任意數值

Instantiate()動態產生實體
========================================================================
個人目前盡可能地去把課堂上的內容,以個人的認知稍微說明些
可能有重要的地方漏掉或錯誤的部分請見諒,也請留言提醒

繼續努力研讀Unity3D,也請期待我所製作的作品

創作回應

健一
文章Virtual Studio 應該是Visual
2014-10-02 01:53:01
冰劍士-冰雪飛
感謝糾正
2014-10-02 07:38:18
悠浪貓
有一些地方稍微補充一下 [e12]

Instantiate 功能是動態"複製"一個實體

需要事先在場上準備一個實體,或者製作Prefab物件讓他能複製


如果只是要動態產生一個空殼實體,直接用 new GameObject() 就可以了

只是內部的 Component 都得要自己去 AddComponent<T>()

或者 new GameObject ( "名字", Component陣列 )

但是最基本的Transform 元件是本來就會有的,這也是唯一不能被拔除的Componrnt


不過當然啦,除非你有需要這麼做

不然一般用編輯器製作一個Prefab放在資源庫內用複製的當然比較輕鬆直觀囉~[e12]
2014-10-02 08:23:48
Ultimater
學弟你好!
2014-10-03 04:27:56
Ultimater
10/9我們要發表專題了,記得要來看唷! 哈哈
2014-10-03 04:29:58
冰劍士-冰雪飛
當然,我一定會去
2014-10-03 19:20:07

更多創作