在Unity项目中,我有一个缩小按钮和一个球。当我单击缩小按钮时,球应该播放缩小的动画。
我正在尝试更改“收缩”变量,以便动画可以播放。
缩小按钮代码:
private ShrinkBall referenceScript;
void Start()
{
referenceScript = ball.GetComponent<ShrinkBall>();
}
void OnMouseDown()
{
if (referenceScript.shrink == true)
{
referenceScript.shrink = true;
} else
{
referenceScript.shrink = false;
}
}
球脚本:
public bool shrink = false;
private Animator shrinkAnim;
void Start()
{
shrinkAnim = GetComponent<Animator>();
}
void Update()
{
if (shrink == false)
{
shrinkAnim.SetBool("shrink", false);
} else
{
shrinkAnim.SetBool("shrink", true);
}
}
当我单击缩小按钮时,“缩小”变量保持为false。我知道它正在访问它,因为它最初告诉我它不在范围内,因此我将其设置为公共变量。
所以动画永远不会播放,因为收缩不会改变。有什么想法吗?
答案 0 :(得分:1)
您永远不会更改shrink
的值,但要使其保持与原来相同的值...
您可能想做
void OnMouseDown()
{
referenceScript.shrink = !referenceScript.shrink;
}
那么,您不应该一直在SetBool
中使用Update
,而应该只在更改后使用它。
您可以例如使用类似
的方法public void ToggleShrink()
{
shrink = !shrink;
shrinkAnim.SetBool("shrink", shrink);
}
然后您可以简单地从第一个脚本中调用它,例如
private void OnMouseDown()
{
referenceScript.ToggleShrink();
}