2014-03-02 97 views
1

我已經成功連接的藍牙設備來統一和試圖用在數據讀出與該控制其它遊戲對象 作爲參考 http://answers.unity3d.com/questions/16484/how-to-import-neurosky-mindset-data-into-unity.html在unity3D中,如何從其他gameobject獲取變量?

我附着在連接腳本到一個空的遊戲對象,它可以讀取在一些變量。 我將所有的變量是公共int和包括連接腳本到另一個遊戲對象腳本

public s_ReadNeuro readNeuroScript; 

的問題是在這之後,我不知道如何從連接腳本的公共變量(例如,注意力和冥想的價值),這是不斷閱讀。 我怎樣才能讓他們和其他遊戲對象腳本中使用它嗎?謝謝

這裏是連接到一個空的遊戲對象

using UnityEngine; 
using System.Collections; 

public class s_ReadNeuro : MonoBehaviour { 


public int tgHandleId; 
public int tgConnectionStatus; 
public int tgPacketCount; 
public float attention; 
public float meditation; 
// Use this for initialization 
void Start() { 
    setupNeuro(); 
} 

// Update is called once per frame 
void Update() { 
    readNeuro(); 
} 


void setupNeuro() { 
    tgHandleId = ThinkGear.TG_GetNewConnectionId(); 

    tgConnectionStatus = ThinkGear.TG_Connect(tgHandleId, 
            "\\\\.\\COM4", 
            ThinkGear.BAUD_9600, 
            ThinkGear.STREAM_PACKETS); 

} 


void readNeuro() { 
    tgPacketCount = ThinkGear.TG_ReadPackets(tgHandleId, -1); 

    attention = ThinkGear.TG_GetValue(tgHandleId, ThinkGear.DATA_ATTENTION); 

    meditation = ThinkGear.TG_GetValue(tgHandleId, ThinkGear.DATA_MEDITATION); 

}} 
+0

不知道我明白你想要什麼,但你有沒有嘗試使變量靜態? – dudledok

回答

2

連接腳本基本上有這樣的兩種方式。在編輯器中將您的OtherGameObject與s_ReadNeuro遊戲對象連線,或使用Unity的查找函數在OtherGameObject中找到s_ReadNeuro遊戲對象。使用哪一個取決於你的用例,但總的來說,我更喜歡在編輯器中使用Find函數(少代碼,少麻煩)。在任何情況下,你的OtherGameObject會是這個樣子:

class OtherGameObject : MonoBehaviour { 

    public s_ReadNeuro readNeuroInstance; 


    void Update() { 
     var attention = readNeuroInstance.attention; 

     // do something with it. 
    } 

} 

然後在編輯器中,創建一個新的遊戲對象,請將OtherGameObject行爲,然後拖拽有它的s_ReadNeuro腳本的遊戲對象的實例OtherGameObject的檢查器中的「讀取實例」字段。

如果你要使用的查找方法,延長OtherGameObject的腳本如下:

class OtherGameObject : MonoBehaviour { 

    private s_ReadNeuro readNeuroInstance; 


    void Start() { 
      readNeuroInstance = GameObject.FindObjectOfType(typeof(s_ReadNeuro)); 
    } 

    void Update() { 
     var attention = readNeuroInstance.attention; 

     // do something with it. 
    } 

} 

在這種情況下,你不需要連線在編輯器中的對象。一定要在開始或喚醒中調用查找功能,因爲它不是一個便宜的函數。

+0

非常感謝,這是非常明確的理解和幫助我 – wuwuwu3