跳到主要內容

發表文章

Raspberry Pi 3 Install by mac

最近的文章

Arduino + Camera + SDCard use BLT send to Unity3D

這也真的很搞死我,先來說說硬體吧 Arduino 這一方主要有: Uno (這不用解釋了) Grove Camera Serail Kit  - 這個感覺是OV0706,在網路上找到很多攝影機,現在有電腦視覺辨識的攝影機了,在這之下的感覺都LOW掉,但我還是用這個,網路上有很多程式碼,我是用 這個 。 SD Card module - 上面那Arduino程式碼有包含把相片存入SDcard中。 Bluetooth (HC05) - 便宜好用,在用之前要記得初始化(主從設定、藍芽名稱、密碼,八八八,這裡有 指令 可以往後忘了來看) Serial.begin(9600) 傳出去的值才是對的,我也不知道為啥 Arduino 主要程式: 主要改編的是讀取SDcard中的圖片,很重要的是資料型態,再傳給Unity之前可以用Online軟體去看Arduino讀取的byte印出來是不是正確的,1. 轉碼網址 ,2. 解碼轉圖 。 File file = SD.open(Image_name,FILE_READ); if (file) { while (file.position() < file.size()) //用SD lib 去讀取資料長度與位置 { if(file.available()) { uint8_t test; //重點:不知道是否arduino傳送一次只能8byte 這可能要大家指教一下 但我用uint8_t印出來資料是正確的 test = file.read(); //把讀取的區塊資料塞到變數中 String stringOne = String(test, HEX); //這邊是把區塊資料做 HEX編碼 型態像這樣 0xff , BIN:011101010 , OTC,DEC等資料型態 就是十進位二進位十六進位八啦叭啦 //fill in "0" to Hex 這邊是做一個防止錯誤的判斷 arduino轉碼時候好像會把0 lost掉 就觀察下來會漏在第一個字碼 if(stringO...

Unity 近三個月的整理..Part2

1. 而我在用monobehaviour時 有用到了invoke,它的作用應該是去叫用Script中的某個function,例如Invoke("function name",2) 在兩秒之後去Call這個function。 或是A物件掛載了一個Script,例如我想Tween一個物件然後在物件下方新增一個Component叫EggTween,在EggTween 是一個MonoBehaviour 在Start時候會去設定起始時間,所以我就用Invoke("Start",在2秒後啟用)。 然而類似方法有(Invoke、CancelInvoke、InvokeRepeating )。 2. 在Unity中效能也是很重要的,所以盡量避免用GameObject.Find("場景物件"),他會掃過所有在場景中的gameobject來做比對,所以盡量可以不要用到就不要用這種方法。 在此引用別人寫的效能篇作為往後參考用。 http://unityin.tumblr.com/post/16915417774/%E6%95%88%E8%83%BD%E6%95%88%E8%83%BD%E6%95%88%E8%83%BD 3. 在Script裡面,我以前都不太用(事件),比較常去用其他的資料型態,例如GameObject、int、List等等的基本資料型態。但像 UnityEvent這型態就比較少用到。 這型態最常見的地方就是在UGUI裡面的Button或其他物件,他會有OnClick,這就是事件。所以我們現在可以自製事件然後再叫這事件去做一些事情,我們進而呼叫事件去做事。 using UnityEngine; using System.Collections; using UnityEngine.Events; public class TestLoader : MonoBehaviour { [SerializeField] protected UnityEvent onLoad = new UnityEvent(); //這邊就是自製事件 [SerializeField] protected UnityEvent unLoad = new UnityEven...

關於簡易跳出執行續用法

在Unity中  我們假如要持續判斷A值是否等於B值然而又不想改變判斷後的值 我們可以這樣寫 void update() {         if(A物件.位移 <= 50)        {              A物件.位移 = 50;              return;  //跳出執行  意思就是不會在這判斷式內跑了 (也是一種降低程式暫存記一體的辦法)         } }

Unity3D + Arduino

在三十歲的今年,人生的轉"類"點,希望可以換個自己喜歡,制度完善的工作環境,於是去了某家大公司面試,結果難免不如自己的意,不過路還是要繼續鋪下去,所以今天來寫一個 Unity3D + Arduino 傳值的簡單功能(不好意思閒話家常了)   好囉! 正題來了 Arduino感測器是運用 超音波 ,然而我設定超過150公分就會SerialWrite一個字母,我這傳"A"這個值給Unity,而下面簡易程式碼就是接收Arduino傳過來的值。 下圖Arduino端超音波感測器程式

類別之間的傳值(2)

最近真的是腦子卡住了,寫過又忘記,重新溫習一下並弄個進階範例: 我們來新增三個類別: 1.main(主舞台 流程控管) 2.image1(舞台一) 3.GetSet(應該說分配器吧,訊息集散地之類的) 目的是我們把物件新增在(舞台一)中,再把(舞台一)叫到(main主舞台)統一控管,當按下(舞台一按鈕)後,會傳送事件到(GetSet)。因為接收到按鈕事件的地方是(舞台一)(可以寫到很裡面裡面,透過GetSet也能讓主舞台知道事件已被傳送或啟動)。好處是可以讓主舞台看起來比較乾淨而且流程清楚,當然也不會讓你腦子卡住。 Main(主舞台) package { import flash.display.MovieClip; import flash.display.Sprite; import Stage1.image_1; import GS.GetSet; import flash.events.Event; /** * ... * @author EGG */ public class Main extends Sprite { private var game_stage1:image_1 = new image_1(); private var _GetSet:GetSet = GetSet.getInstance(); public function Main() { addChild(game_stage1); _GetSet.addEventListener(GetSet.MouseTouchBookID , testID); } private function testID(e:Event):void { trace("OK"); } } } image1(舞台一) package Stage1 { import flash.display.MovieClip; import flash.display.Sprite; import flash.display.Loader; import flash.net.URLRequest; import GS.GetSet; import ...