我按照本教程中創建一個簡單的時鐘:http://catlikecoding.com/unity/tutorials/clock/團結 - 按鈕事件來切換值
一切工作完全正常,但教程有數字和模擬顯示內部開關。現在我想添加一個簡單的按鈕「ingame」來將該布爾切換爲true/false。
我該如何做到這一點? 謝謝!
我按照本教程中創建一個簡單的時鐘:http://catlikecoding.com/unity/tutorials/clock/團結 - 按鈕事件來切換值
一切工作完全正常,但教程有數字和模擬顯示內部開關。現在我想添加一個簡單的按鈕「ingame」來將該布爾切換爲true/false。
我該如何做到這一點? 謝謝!
在場景中(在畫布下)添加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) ;
}
添加一個方法來你的腳本來改變模擬的價值。
public void OnClick()
{
analog = !analog;
}
在場景中創建一個按鈕,並確保它位於畫布下,選擇該按鈕,然後將腳本拖入OnClick()部分。從下拉列表中選擇您的OnClick()方法。
你從這裏點擊事件附加多了,這種方法可以讓你輕鬆地看到方法附加什麼你的按鈕不看你的代碼,這可能會很複雜一段時間。
比接受的更好的解決方案。使用Unity的潛力。 –
@DávidFlorek:當你開始與幾個人一起工作更大的項目時,相信我,你會很快改變主意。 **插入但這不是我的商業形象** – Hellium
別擔心,我已經做到了。讓代碼很少理解的設計師能夠完成他們的工作和設計,真是太高興了。 –
謝謝!奇蹟般有效。 認爲它會更容易一點。 – Exportforce
使用按鈕的onclick屬性有利於在運行時更改其偵聽器,但我不會使用它來正常設置我的按鈕的偵聽器。如果你正在設計一個UI,你可能會有許多不同的按鈕,並且每個按鈕都有不止一個監聽器。通常聽衆會被安置在檢查員身上,正如我在答案中所描述的那樣。 –
使用Inspector對於快速原型設計非常有用,但它不健壯,容易出錯(假設您的UI設計者選擇錯誤的函數來調用),並且在使用預製時非常糟糕。此外,當您檢查按鈕爲空而不是想知道爲什麼您的按鈕不起作用時,由於您尚未將檢查器中的onClick插入到腳本中,所以更容易引發錯誤。 – Hellium