2016-06-27 37 views
-1

註冊輸入字段的用戶應自動填寫當前存儲在用戶偏好設置中的電子郵件地址。我有這個工作正常。在統一輸入字段中設置文本

我的問題是輸出這個變量到主頁中的輸入字段。如果有人曾經管理過,任何幫助都會很棒。每次我嘗試獲取輸入字段的文本時,它都會返回空引用。

GameObject inputFieldGo = GameObject.Find("email"); 
    InputField inputFieldCo = inputFieldGo.GetComponent<InputField>(); 
    inputFieldCo.text = "hello"; 

的NullReferenceException:對象沒有設置爲一個對象 firstRun.Start()的一個實例(在資產/腳本/ INIT/firstRun.cs:31)

+0

那是'inputFieldCo.Text'而不是'inputFieldCo.text',當你使用調試器遍歷代碼時會發生什麼呢? – MethodMan

+0

這個錯誤基本上表明你的'GameObject.Find()'方法返回一個null,並且找不到你指定的元素[按照文檔](https://docs.unity3d.com/ScriptReference/GameObject.Find.html) 。您可能會考慮發佈代碼以瞭解您如何定義它。你嘗試過使用'GameObject.FindWithTag()'來代替嗎? –

+0

@methodman感謝您的回覆。除了.text部分以外,一切都可以工作 –

回答

2

檢查您的命名空間

你需要確保你明確地包括用於處理UI組件上適當的統一命名空間:

using Unity.UI; 

確保您的目標是正確的元素

之後,您需要確保您的GameObject.Find()方法正確定位您的InputField元素(即,仔細檢查以確保標識符正確)。

請確保沒有輸入錯誤(即「email_text」而不是「email」等),因爲這會導致您的方法返回null,因此當您嘗試設置它的屬性時會返回Null引用異常。調試器

如果你還在運行到問題的

使用,考慮記錄每個步驟,以確定返回的空是在哪裏,然後再考慮什麼可能是錯誤的。有沒有被正確實例化?是否有命名錯誤?

0

得到它的工作。下面有以下內容。

GameObject email_go = GameObject.Find("email_input"); 
    Debug.Log(email_go); 
    InputField email_in = email_go.GetComponent<InputField>(); 
    Debug.Log(email_in); 
    Debug.Log(email_in.text); 
    email_in.text = PlayerPrefs.GetString("email"); 
    Debug.Log(email_in.text); 

由於@RionWilliams

相關問題