網頁

2018年5月31日 星期四

使用 HoloToolkit 的 button prefabs

HoloToolkit裏頭有一些按鈕UI可以使用,我覺得以下這兩個挺不錯的,就拿來試試。

HoloToolkit-Example → UX → prefabs → ButtonHolographic (這是一個prefab)
HoloToolkit-Example → UX → prefabs → ButtonPush (這是一個prefab)

特別是 ButtonHolographic,很容易修改圖示與文字,以下就特別介紹他的使用方式。

這個按鈕可以修改圖示




按鈕也可以修改文字


使用上算是輕鬆容易的。

但今天使用上遇到一件有點難懂的問題,琢磨了好久才想通處理掉。
問題是這樣的:照理說,紫色的cursor碰到按鈕時會變亮,代表按鈕受到關注。




但不知道為什麼,cursor滑過按鈕,卻無法讓按鈕變亮起來。




猜測應該是按鈕跟舞台在景深方向上重疊,所以cursor無法區分舞台與按鈕。




果不其然,把舞台以及按鈕之間的景深距離拉遠,cursor滑過按鈕,按鈕就可以變亮。




以上作個紀錄!

----------------------------------------------------
後記:
後來,比較熟悉Unity的架構之後,才知道原來是碰撞體(Collider)造成。
視線方向與碰撞體在空間中有交集後,游標(cursor)才能hug在碰撞體上面,並加以顯示出來。

碰撞體是附屬在遊戲物件的component,通常是透明的,
必須點擊後才能修改大小、形狀、位置。
Unity提供的碰撞體很多,有2D,也有3D,形狀上好像還有膠囊狀、矩形狀之類的。

這個場景中的遊戲物件有點多,包含:人物、舞台、按鈕。
人物,有人物的碰撞體;舞台,有舞台的碰撞體;按鈕有按鈕的碰撞體。
這裡所碰到到情況是,這多個遊戲物件彼此間的碰撞體太大,導致互相重疊。

把舞台等物與按鈕的距離拉遠,以致可以判斷視線與碰撞體的交集。
自然,游標就可以顯示出來了。

這個原理,也就是關於視線方向、碰撞、與顯示cursor之間的關係,
後來在寫手機的程式時,英文論壇上有人仔細討論一番,便知道原因了。

沒有留言:

張貼留言