我有一个淡入淡出的文本框,并根据动画改变颜色,这很好用,但是当我告诉它时文本不会改变。我尝试了其他一些Stack答案,但他们没有工作。下面是包含应该更改文本的代码的脚本。我已经这么多年了,我的大脑很疼,主要是因为动画(主要是参数和过渡)。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Objectives : MonoBehaviour {
#region Variables
public bool CompletedAnim1;
public bool StonesFallen;
public bool IceFallen;
public Objective ObjectiveRef;
public Text PlankText;
public AnimController AnimContRef;
public TextController TextContRef;
string NewText;
#endregion Variables
// Use this for initialization
void Start () {
CompletedAnim1 = false;
NewText = "Drop All Ice";
PlankText.SetAllDirty();
}
// Update is called once per frame
void Update () {
if (StonesFallen)
ObjectiveRef.ObjectiveCompleted = true;
if (StonesFallen && IceFallen)
{
PlankText.text = "Drop All Ice";
ObjectiveRef.ObjectiveCompleted = false;
AnimContRef.SetTriggerParameter("FadeIn");
Debug.Log("Ice and Stones Fallen");
}
if (CompletedAnim1)
{
PlankText.text = NewText;
Debug.Log("CompletedAnim1");
Debug.Log(PlankText.text);
PlankText.SetAllDirty();
}
}
}
答案 0 :(得分:1)
您在所有脚本中将字符串分配给PlankText.text
两次,一次在if (StonesFallen && IceFallen)
内,一次在if (CompletedAnim1)
内。
问题是你总是为它分配字符串"Drop All Ice"
,第一次使用字符串,第二次使用NewText
,它包含相同的字符串。
并不是NewText
在脚本之外更改其值,因为它是private
,除非您在帖子中删除了部分类。