2016年2月16日星期二

[Unity3D] Unity觸控指令問題:我在移動呀~不是按下了呀~

Unity有一個Touch的類別是用來控制手機或是平板電腦的觸控指令,裏頭有一個TouchPhase.Moved 和 TouchPhase.Stationary的狀態,顧名思義Moved是指觸控點在移動,Stationary是在按下不動,但是......

我明明在移動呀!你把我當成按下了!

本來的代碼跟效果圖如下:
代碼部份:這是在Updates裏,我有一個Boolean _clicking, 如果是按下了才會出現紅點


_touches = Input.touches;
  
if(_touches.Length == 1)
{
 if(_touches[0].phase == TouchPhase.Stationary)
 {
  Debug.Log("Clicked, 紅點出現");
  _clicking = true;
 }
 else
 {
  Debug.Log("Moving,  沒有紅點");
  _clicking = false;
 }
}

看代碼我想不會有問題吧?於是我就運行試試看:


結論是:我在移動呀~不是按下了呀~雖然我就乖乖找 Google跟 Facebook的大大求救,然後試驗到其中一個可行的方法!

2016年2月5日星期五

[Unity3D] 手動更新uFrame到最新的Unity版本

因為uFrame對相應Unity的版本更新比較慢,所以uFrame用家有時不得不手動更新uFrame到最新的Unity版本

之前試過從Unity 5.0更新到Unity 5.1遇上一個小問題,最後發覺原來是Unity的命名改變了:

不過在uFrame,有個比較萭用的方法,因為uFrame有兩個腳本(Script)會檢查Unity的版本,只要加上新得版就可以了!

這兩個腳本分別是:
UIBinding.cs
JSON.cs (這個要修改的地方在line 665, 比較難找~)

本來是這樣:
#if UNITY_4_6 || UNITY_5_0 || UNITY_5_1 

加上新版本:
#if UNITY_4_6 || UNITY_5_0 || UNITY_5_1 || UNITY_5_2 || UNITY_5_3

完成!uFrame可以用在新的Unity版本了~

題外話:
下面有網友提及Header 3 會出面error的問題,小弟之前在Unity 5.1版本也遇過這個問題,好像是uFrame自身的Header 3有點怪,我暫時的設定是這樣,暫時也沒有問題

[Unity3D]學習UniRx前對它的認識

(這篇是念念碎文章還沒有學習的心得,不過讀者有興趣先了解一下也可以看看喔)

認識UniRx(Reactive Extensions for Unity)是因為小弟在uFrame,而uFrame這插件在版本1.5之後也加入了UniRx這個插件,其實小弟剛開始以為UniRx的功能是屬於uFrame的,然後才發現原來Asset Store有一個叫UniRx的插件,而且是免費的!最近發覺得UniRx好像很強大,所以想研究起來,我們先看一點UniRx在Asset Store的簡介,文末也有一些相關傳送門,大家對小弟的文字沒興趣可以直接滑下去喔XD

//Reactive Extensions for Unity that allows LINQ to asynchronous and LINQ to multithreading and LINQ to events and more. Welcome to the reactive game architecture! //

//Ordinary, Unity network operation use WWW and coroutine but coroutine is not good practice for asynchronous operation.//

//Unity is single thread but UniRx helps multithreading for join, cancel, access GameObject etc.//