Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从C#unity3D中的其他脚本调用函数_C# - Fatal编程技术网

从C#unity3D中的其他脚本调用函数

从C#unity3D中的其他脚本调用函数,c#,C#,我有一个带有公共函数的脚本,它设置了一个动画触发器,如下所示: public class AnimationManager : MonoBehaviour { public Animator menuAnim; void Start () { menuAnim = GetComponent<Animator>(); } public void Test() { menuAnim.SetTrigger("Fade")

我有一个带有公共函数的脚本,它设置了一个动画触发器,如下所示:

public class AnimationManager : MonoBehaviour {

    public Animator menuAnim;

    void Start () {
        menuAnim = GetComponent<Animator>();
    }

    public void Test() {
        menuAnim.SetTrigger("Fade");
    }
}
AnimationManager someName = new AnimationManager();
someName.Test();
但这导致了这个错误:

 An object reference is required to access non-static member `AnimationManager.Test()'
错误发生在
begin
函数的第一行

我是C#的新手,我最初学习Javascript,所以我有点困惑如何引用成员来调用此函数


希望您能提供帮助。

这不会真正起作用,因为您的
AnimationManager
类不是静态的,您需要先对其进行初始化,如下所示:

public class AnimationManager : MonoBehaviour {

    public Animator menuAnim;

    void Start () {
        menuAnim = GetComponent<Animator>();
    }

    public void Test() {
        menuAnim.SetTrigger("Fade");
    }
}
AnimationManager someName = new AnimationManager();
someName.Test();
请注意,它们必须具有相同的名称空间,如果没有,您仍然需要在using指令中添加名称空间

编辑:

public static class AnimationManager : MonoBehaviour {

    public Animator menuAnim;

    static void Start () {
        menuAnim = GetComponent<Animator>();
    }

    public static void Test() {
        menuAnim.SetTrigger("Fade");
    }
}

这不会真正起作用,因为您的
AnimationManager
类不是静态的,您需要先像这样初始化它:

public class AnimationManager : MonoBehaviour {

    public Animator menuAnim;

    void Start () {
        menuAnim = GetComponent<Animator>();
    }

    public void Test() {
        menuAnim.SetTrigger("Fade");
    }
}
AnimationManager someName = new AnimationManager();
someName.Test();
请注意,它们必须具有相同的名称空间,如果没有,您仍然需要在using指令中添加名称空间

编辑:

public static class AnimationManager : MonoBehaviour {

    public Animator menuAnim;

    static void Start () {
        menuAnim = GetComponent<Animator>();
    }

    public static void Test() {
        menuAnim.SetTrigger("Fade");
    }
}

基本上,您可以使用静态辅助对象类为动画师设置内容:

public class AnimationManager : MonoBehaviour {

    public Animator menuAnim;

    void Start () 
    {
            menuAnim = GetComponent<Animator>();
    }

    public void Test() 
    {
        AnimationHelper.Test(menuAnim);
    }
}

public class Testing : MonoBehaviour 
{
   void begin()
   {
    Animator menuAnim = GetComponent<Animator>();
    AnimationHelper.Test(menuAnim);
   }
}

public static AnimationHelper
{
    public static void Test(Anímation animation)
    {
        animation.SetTrigger("Fade");
    }
}
公共类AnimationManager:monobhavior{
公共动画师梅努阿尼姆;
无效开始()
{
menuAnim=GetComponent();
}
公开无效测试()
{
AnimationHelper.Test(menuAnim);
}
}
公共类测试:单一行为
{
void begin()
{
Animator menuAnim=GetComponent();
AnimationHelper.Test(menuAnim);
}
}
公共静态动画助手
{
公共静态无效测试(信息动画)
{
设置触发器(“淡入淡出”);
}
}

基本上,您可以使用静态助手类为动画师设置内容:

public class AnimationManager : MonoBehaviour {

    public Animator menuAnim;

    void Start () 
    {
            menuAnim = GetComponent<Animator>();
    }

    public void Test() 
    {
        AnimationHelper.Test(menuAnim);
    }
}

public class Testing : MonoBehaviour 
{
   void begin()
   {
    Animator menuAnim = GetComponent<Animator>();
    AnimationHelper.Test(menuAnim);
   }
}

public static AnimationHelper
{
    public static void Test(Anímation animation)
    {
        animation.SetTrigger("Fade");
    }
}
公共类AnimationManager:monobhavior{
公共动画师梅努阿尼姆;
无效开始()
{
menuAnim=GetComponent();
}
公开无效测试()
{
AnimationHelper.Test(menuAnim);
}
}
公共类测试:单一行为
{
void begin()
{
Animator menuAnim=GetComponent();
AnimationHelper.Test(menuAnim);
}
}
公共静态动画助手
{
公共静态无效测试(信息动画)
{
设置触发器(“淡入淡出”);
}
}

是否需要
新的
关键字?它似乎在没有警告的情况下工作,即使如此,我还是收到了这样的警告:
从未分配给,并且其默认值始终为空
我可以忽略该警告,但它向我建议有一种更好的方法来编写它以避免警告。你应该将新关键字。。。或者,如果您不喜欢每次调用该类时都进行初始化,只需在该类中添加“static”关键字,但也应该使该类中的所有方法/函数都是静态的。。示例:公共静态类animationmanager您还需要添加静态void begin()嗯,我看我不知道应该使用哪一个。何时和何时不使用静电。
new
是否删除
始终使用
new
将其默认值设为null的警告导致此错误
您试图使用“new”关键字创建单行为。这是不允许的
是否需要
新的
关键字?它似乎在没有警告的情况下工作,即使如此,我还是收到了这样的警告:
从未分配给,并且其默认值始终为空
我可以忽略该警告,但它向我建议有一种更好的方法来编写它以避免警告。你应该将新关键字。。。或者,如果您不喜欢每次调用该类时都进行初始化,只需在该类中添加“static”关键字,但也应该使该类中的所有方法/函数都是静态的。。示例:公共静态类animationmanager您还需要添加静态void begin()嗯,我看我不知道应该使用哪一个。何时和何时不使用静电。
new
是否删除
始终使用
new
将其默认值设为null的警告导致此错误
您试图使用“new”关键字创建单行为。这是不允许的这有点混乱,因为公共类测试在我的代码中是一个不同的脚本,或者这无关紧要?想知道使用helper类的好处吗?另外,您似乎将组件分配给假定接收字符串的SetTrigger。请参阅我的原始代码中的SetTrigger以查看差异。这有点令人困惑,因为公共类测试在我的代码中是一个不同的脚本,或者这无关紧要?想知道使用helper类的好处吗?另外,您似乎将组件分配给假定接收字符串的SetTrigger。请参阅我的SetTrigger原始代码以查看差异。