Unity C#文本未更改

时间:2018-02-16 18:33:39

标签: c# user-interface animation unity3d text

我有一个淡入淡出的文本框,并根据动画改变颜色,这很好用,但是当我告诉它时文本不会改变。我尝试了其他一些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();
    }
}


}

1 个答案:

答案 0 :(得分:1)

您在所有脚本中将字符串分配给PlankText.text两次,一次在if (StonesFallen && IceFallen)内,一次在if (CompletedAnim1)内。

问题是你总是为它分配字符串"Drop All Ice",第一次使用字符串,第二次使用NewText,它包含相同的字符串。

并不是NewText在脚本之外更改其值,因为它是private,除非您在帖子中删除了部分类。