2016年8月1日 星期一

7月進度表【已完成事項】

Unity研究
一 、 script
  • 多點觸控、長點擊、一般點擊( click & touch )
  • scene轉換機制
  • 物體碰撞/旋轉/移動
  • follow camera
  • button on click
  • 解析度調整
二、素材製作
  • 背景  10%
  • 音樂素材  50%
  • 角色  0%
  • UI  0% ( 待重做)

2016年7月28日 星期四

【劇本】Para背景概要

(待繼續更新)

Unity筆記整理:NGUI Button事件(二)

這節將介紹3種監聽button的方式,如下:

  • 直接監聽Button事件
  • 透過SendMessage的方式,一次監聽多個
  • 使用UIListener,實現更彈性的監聽

一、透過SendMessage的方式,一次監聽多個
1.建立一個空物體並命名為Event Controller,讓他來一次監聽多個按鈕事件。
2.把 Button 移動至 Event Controller 下。
3.建立一個 ButtonMsg.cs 腳本












4.從Component->NGUI->Interaction新增Button Message並設置如下,完成。


二、使用UIListener,實現更彈性的監聽
1.同樣先設立Event Controller,創建其script。















2.回到Unity把腳本拖到空物件上,發現可以接受到按鈕事件。

參考網站
http://k79k06k02k.pixnet.net/blog/post/112321943-unity-ngui-(3)-%E2%80%93-button-%E4%BA%8B%E4%BB%B6

Unity筆記整理:NGUI Button事件(一)

本節先敘述NGUI button的使用方式和注意事項。
下節將介紹各種監聽方式。

一、NGUI button 使用方式















如圖所示,可以對其做click 、 drag over 的觸控設定,colors是用來設置按鈕不同狀態的顏色,如果是自製按鈕這項功能可以不予理會。
其中 on click 只能接受滑鼠點擊事件,如果要監聽滑動、觸摸等事件,需要額外加上UIEventTrigger 組件。

最後實行的效果大致如下:
















二、注意事項
如果button是設置在NGUI內建的UI layer和UI camera底下,那麼關於UI camera的設置就要額外注意,如下圖:






























  • 功能
Event Type:用於區分UICamera處理UI事件的對象是UI控件還是三維物體。
Event Mask:可以過濾掉不需要接受UI事件的對象。
Event Sources:指需要處理的事件源,比如iPhone可能只需要Touch,PC平台可能還需要Mouse、Keyboard。
Threshplds:指事件誤差的範圍。
軸和鍵:是指方向鍵/搖桿,鍵盤綁定。

參考網站
http://blog.csdn.net/onerain88/article/details/18963539
http://www.cnblogs.com/qinghuaideren/p/3673493.html

2016年7月27日 星期三

Unity筆記整理:不同解析度的調整(四)

這次要來談以script調整內建GUI和camera的畫面縮放比。
整理自胡亂說‧隨便寫很有用的Blog。

三、Unity 內建 GUI class (OnGUI) 的數值調整


  • GUI.matrix 裡面的幾個元素值所代表的功用

m00: x 軸的縮放比例
m03: 實際畫面上,GUI的 x 軸起始點為從左邊算來第幾個像素(pixel)
m11: y 軸的縮放比例
m13: 實際畫面上,GUI的 y 軸起始點為從上方算來第幾個像素(pixel)
m33: x 軸及 y 軸等比縮放比例的反比,也就是說,數值變大為等比縮小,數值變小則等比放大。


  • 使 GUI 直接依照螢幕比例改變而跟著自動調整變形






















缺點:當設計的 GUI 有旋轉的行為時,看起來就會有點怪異,例如,GUI 上有個圓形的圖需要旋轉,將會變得像是個橢圓形如同橄欖球那樣的旋轉,甚至會破壞掉原本設計的畫面;所以我們除了需要 GUI 能夠依照顯示螢幕的不同而自動縮放之外,還需要使它能等比例縮放並維持以螢幕正中央為基準的位置上。

  • 使 GUI 等比縮放在螢幕顯示範圍內
targetAspect: 實際顯示畫面的長寬比
targetWidth: 實際顯示畫面的解析度寬度
targetHeight: 實際顯示畫面的解析度高度
baseAspect: 開發時定義的基礎解析度長寬比
baseWidth: 開發時定義的基礎解析度寬度
baseHeight: 開發時定義的基礎解析度高度


Unity筆記整理:不同解析度的調整(三)

這次要來談以script調整內建GUI和camera的畫面縮放比。
整理自胡亂說‧隨便寫很有用的Blog。

二、鏡頭 Camera 數值的換算調整

  • 使遊戲畫面直接佔滿整個螢幕畫面








缺點:遊戲畫面可能會被拉長或縮短而使得遊戲物件在螢幕上看起來有些變形

  • 使遊戲畫面維持原來比例進行縮放
說明:從官方文件 Camera.orthographicSize 得知 orthographicSize 是檢視空間(viewing volume)的垂直大小的一半,所以,以我們在開發遊戲時設定畫面解析度為 1024*768 這樣的長寬比為例,如果當時將 orthographicSize 設定為 5,那麼檢視空間的垂直大小就是 5 * 2 = 10


公式:
(height)
newOrthographicSize = viewVolumeVertical / 2
=> newOrthographicSize = (targetHeight / factor) / 2
=> newOrthographicSize = (targetHeight / (baseHeight / (baseOrthographicSize * 2))) / 2

viewVolumeVertical: 檢視空間的垂直大小
targetHeight: 目標畫面解析度的高度
baseHeight: 開發時定義的基礎解析度高度
baseOrthographicSize: 開發時定義的 orthographicSize

(weight)
newOrthographicSize = (targetHeight / (factor * (targetWidth / baseWidth))) / 2
=> newOrthographicSize = (targetHeight / (baseHeight / (baseOrthographicSize * 2) * (targetWidth / baseWidth))) / 2

targetWidth: 目標畫面解析度的寬度
baseWidth: 開發時定義的基礎解析度寬度

(simplify)
newOrthographicSize = targetHeight / targetWidth * baseWidth / baseHeight * baseOrthographicSize;



2016年7月21日 星期四

Unity筆記整理:不同解析度的調整(二)

這次要來談以script調整內建GUI和camera的畫面縮放比。
整理自胡亂說‧隨便寫很有用的Blog。

一、自動調整 GUI 縮放比例及位置

  • 利用Screen.width 及 Screen.height取得當前的畫面寬高以求出縮放比例倍數










缺點:有關 GUI 的程式將會變得更長,需對每個 GUI 的 x、y 座標及寬高乘上這個倍數,使程式可讀性降低。


  • 將GUI.matrix 及 GUIUtility.ScaleAroundPivot() 加在OnGUI()開頭處

※注意:如果是使用 GUI Text 或 GUI Texture ,上述方法是沒有用的,因為 GUI Text 與 GUI Texture是以 GameObject 的方式配置在場景中,並非在 OnGUI 中運行的。

參考網站 : http://godstamps.blogspot.tw/2011/04/unity-gui.html