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

标签 c# unity3d

using UnityEngine; using System.Collections;

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

    public void PlayWoodCuttingAnim()   
    {       
        //Play Woodcutting Animation        
        gameObject.GetComponent<Animation>().CrossFade (Chopping);  
    }     
}

这是我的另一个脚本

using UnityEngine; 
using System.Collections;

public class WoodCuttingScript: MonoBehaviour  
{
    ClickToMoveScript ClickToMove;

    void Start()
    {
        ClickToMove.PlayWoodCuttingAnim();  
    }  
}

Unity Debugger

我已经在动画组件中添加了动画。

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

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

任何帮助将不胜感激

最佳答案

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

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

你可以这样做,

void Start()
{
    ClickToMove = FindObjectOfType<ClickToMoveScript>();
    ClickToMove.PlayWoodCuttingAnim();  
}  

关于c# - Unity C#,如何从另一个脚本调用一个函数来启动动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34436458/

相关文章:

c# - 可以订购动态类型吗?

c# - String.Substring() 似乎是这段代码的瓶颈

ios - Unity iOS 屏幕在启动时变黑几秒钟

c# - OnCollisionEnter 函数如何工作 "Fundamentally"?

c# - 新的 ASP.NET Web 应用程序的体系结构

c# - 卸载非安装程序创建的文件

c# - 如何使用 StructureMap 通过代码定义默认构造函数?

c# - 如何在 Unity 中运行外部应用程序并将其渲染为游戏中的游戏对象?

c# - 空闲动画不会在 keyup 上触发

c# - 在 GUI 标签统一中显示带有特殊字符的 python 输出