使用参数进行变量动画

时间:2015-04-25 15:04:39

标签: animation unity3d

我希望动画我的Score-GUI文本可以计算到变量值,但我的方式有两件事:

1:如何设置变量而不是固定值?

2:为什么我不能在脚本中添加自己的属性(如int)并为其设置动画?

对于#2,我在脚本中创建了一个属性。然而编辑不会在AddProperty对话框中显示它(如下所示):

enter image description here

public int currentScore = 0;

public int score {
    get { return currentScore; }
    set { this.currentScore += value; }
}

编辑:动画师以最基本的方式设置:

enter image description here

1 个答案:

答案 0 :(得分:2)

因为你只有1个动画。 Animator与解决方案无关。这是经过测试和运作的。现在你需要使动画成为Legacy类型才能使它工作,因为我们不打算使用Animator。

单击项目上的动画 - >查看Inspector视图的右上角部分,那里有一个小按钮,可以下拉选择。 "调试和#34;然后检查遗产。

将动画设置为您想要的任何内容。我强制脚本中的WrapMode为包装模式一次。所以它只会播放一次。

现在在动画组件中,请确保您默认选择所需的动画,否则它将无效。因为我们只使用anim.Play();如果没有参数含义,请运行设置的默认动画。

我创建了一个文本用户界面,并添加了一个动画,从开始到终点,alpha为0,使它成为1.你必须自己做。

using UnityEngine;
using System.Collections;
using UnityEngine.UI;

public class MyScore : MonoBehaviour {

// Use this for initialization
public int currentScore = 0;
public GameObject Myscore; // Drag the GameObject that has the Animation for your score.
public Text myScoreText; //Drag in the Inspector the Text object to reference
public Animation anim;

public int score
{
    get { return currentScore; }
    set { this.currentScore += value; }
}
void Start()
{
    anim = Myscore.GetComponent<Animation>(); // Reference the Animation Component.

    anim.wrapMode = WrapMode.Once; // Legacy animation Set to play once
    AddScore();
}
public void AddScore()
{
    score += 10;
    myScoreText.text = score.ToString();
    anim.Play();
    Debug.Log("Current Score is "+ score);
    Invoke("AddScore", 2);
}




}
祝你好运。