2017-06-08 28 views

回答

0

在場景中(在畫布下)添加Button,並在ClockAnimator腳本中添加以下代碼。然後,拖動&刪除腳本檢查器中的按鈕gameobject。

public UnityEngine.UI.Button button; 

private void Start() 
{ 
    // See https://docs.unity3d.com/ScriptReference/UI.Button-onClick.html 
    if(button != null) 
     button.onClick.AddListener(() => analog = !analog) ; 
} 

你可以使用Toggle,而不是一個按鈕實現相同的:

public UnityEngine.UI.Toggle toggle; 

private void Start() 
{ 
    // See https://docs.unity3d.com/ScriptReference/UI.Toggle-onValueChanged.html 
    if(toggle != null) 
     toggle.onValueChanged.AddListener((isOn) => analog = isOn) ; 
} 
+0

謝謝!奇蹟般有效。 認爲它會更容易一點。 – Exportforce

+0

使用按鈕的onclick屬性有利於在運行時更改其偵聽器,但我不會使用它來正常設置我的按鈕的偵聽器。如果你正在設計一個UI,你可能會有許多不同的按鈕,並且每個按鈕都有不止一個監聽器。通常聽衆會被安置在檢查員身上,正如我在答案中所描述的那樣。 –

+0

使用Inspector對於快速原型設計非常有用,但它不健壯,容易出錯(假設您的UI設計者選擇錯誤的函數來調用),並且在使用預製時非常糟糕。此外,當您檢查按鈕爲空而不是想知道爲什麼您的按鈕不起作用時,由於您尚未將檢查器中的onClick插入到腳本中,所以更容易引發錯誤。 – Hellium

1

添加一個方法來你的腳本來改變模擬的價值。

public void OnClick() 
{ 
    analog = !analog; 
} 

在場景中創建一個按鈕,並確保它位於畫布下,選擇該按鈕,然後將腳本拖入OnClick()部分。從下拉列表中選擇您的OnClick()方法。

enter image description here

你從這裏點擊事件附加多了,這種方法可以讓你輕鬆地看到方法附加什麼你的按鈕不看你的代碼,這可能會很複雜一段時間。

+0

比接受的更好的解決方案。使用Unity的潛力。 –

+0

@DávidFlorek:當你開始與幾個人一起工作更大的項目時,相信我,你會很快改變主意。 **插入但這不是我的商業形象** – Hellium

+0

別擔心,我已經做到了。讓代碼很少理解的設計師能夠完成他們的工作和設計,真是太高興了。 –