[英]Why can't I edit my values with my UI slider in Unity
我制作了一個UI滑塊,該滑塊根據腳本中的值(播放時間)移動,到目前為止,它運行得很順利。 這是我的滑塊代碼
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class testingtime : MonoBehaviour {
public int playtime =0;
public int seconds = 0;
private int minutes = 0;
private int hours = 0;
public int playtimemax = 0;
public Slider testslider;
public Texture playbutton;
public Texture Pausebutton;
Texture substitute;
bool ispaused = false;
// Use this for initialization
void Start () {
substitute = Pausebutton;
StartCoroutine ("playtimer");
}
private IEnumerator playtimer(){
while (true) {
yield return new WaitForSeconds(1);
playtime += 1;
seconds = (playtime % 60);
minutes = (playtime / 60) % 60;
hours = (playtime / 3600) % 24;
}
}
// Update is called once per frame
void Update () {
testslider.value = playtime;
if (ispaused) {
Time.timeScale = 0;
substitute = playbutton;
}
if (!ispaused) {
Time.timeScale = 1;
substitute = Pausebutton;
}
playtime = (int)testslider.value;
}
void OnGUI (){
if (GUI.Button (new Rect (685,710, 20, 20), substitute)) {
ispaused = !ispaused;
}
GUI.Label (new Rect (50, 50, 400, 50), "Playtime = " + hours.ToString () + " Hours " + minutes.ToString () + " Minutes " + seconds.ToString () + " Seconds");
}
}
因此,基本上,這使我的滑塊根據播放時間移動,就像計時器一樣,每秒增加1。 但是我嘗試通過代碼playtime = (int)testslider.value;
通過滑塊(我已啟用交互功能)來更改播放時間的值playtime = (int)testslider.value;
。 我知道我無法移動滑塊,因為它會不斷更新testtimer.value = playtime
。 是否有可用的功能,例如testtimer.onclicked,以便我可以將其放在if函數中並禁用更新?
Slider具有onValueChanged
回調,您可以將其用於此目的。
我知道了! :D最后,您需要的是這段代碼
public void adjusttimer(float newtime){
playtime = (int)newtime;
}
並像這樣分配方法
它應該工作完美。 :D非常感謝Max Yankov的想法!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.