Unity C#,如何从另一个脚本调用函数以启动动画?

Odd*_*una 1 c# unity-game-engine

using UnityEngine; using System.Collections;

public class ClickToMoveScript : MonoBehaviour  
{
    public string Chopping = "Chopping";

    public void PlayWoodCuttingAnim()   
    {       
        //Play Woodcutting Animation        
        gameObject.GetComponent<Animation>().CrossFade (Chopping);  
    }     
}
Run Code Online (Sandbox Code Playgroud)

这是我的其他剧本

using UnityEngine; 
using System.Collections;

public class WoodCuttingScript: MonoBehaviour  
{
    ClickToMoveScript ClickToMove;

    void Start()
    {
        ClickToMove.PlayWoodCuttingAnim();  
    }  
}
Run Code Online (Sandbox Code Playgroud)

http://i.stack.imgur.com/wt0mN.png

如您所见,上面的链接^我已经在动画组件中添加了动画。

我发现的另一件事是,如果我在ClickToMove脚本中调用PlayWoodCuttingAnim()函数,则可以正常工作,但在其他脚本中,它可以正常工作。

错误控制台> NullReferenceException:对象引用未设置为对象的实例。

任何帮助将不胜感激

Ham*_*san 5

好吧,很少有常用的方法可以做到这一点。

就像从另一个脚本调用方法一样,您将需要附加(附加到gameObject)脚本实例,而不是简单的脚本实例。

你可以做到的

void Start()
    {
        ClickToMove = FindObjectOfType<ClickToMoveScript>();
        ClickToMove.PlayWoodCuttingAnim();  
    }  
Run Code Online (Sandbox Code Playgroud)