Unity3D调用我自己的类

时间:2015-08-22 18:32:23

标签: unity3d static

所以我有一个包含我所有课程的文件:

using UnityEngine;
using System.Collections;

public class Touch {
    public int DoSomthing(int _test) {
        int bla = _test + 1;
        return bla;
    }
}

public class Swipe {

}

public class Zoom {

}

我怎样才能这样做,以便我可以像转换类一样在所有其他脚本中访问它们?

所以我想在任何其他脚本中访问这样的触摸:

int blabla = Toch.DoSomthing(5);

不构建课程。

3 个答案:

答案 0 :(得分:1)

每当你想要访问类时(如果它不是静态的)你需要指定你想要访问的那个类的实例,如果你将脚本附加到主摄像机,你可以像这样访问它:

Toch someNameOfVar = Camera.main.gameObject.GetComponent<Toch>();
int blabla = someNameOfVar.DoSomething(5);

您创建一个新变量,该变量具有您正在访问的类的类型,然后通过指定该类的游戏对象来获取对该类的特定实例的引用。

但是,有一种叫做静态类和静态方法的东西。您可以将脚本更改为:

public class Touch : MonoBehaviour {

   public static int DoSomthing(int _test){
      int bla = _test + 1;
      return bla;
   }

}

这样您就可以访问它而无需指定所需的实例。 您可以在此处了解有关静态的更多信息:https://unity3d.com/learn/tutorials/modules/intermediate/scripting/statics

答案 1 :(得分:0)

你将这些方法设为静态,然后只需调用它们。

  public static int DoSomthing(int _test)
  {
    int bla = _test + 1;
    return bla;
  }

然后给他们打电话Touch.DoSomthing(1)。如果你将它们放在另一个命名空间中,它可能需要using

答案 2 :(得分:0)

首先让DoSomthing像这样静态,因为你想按类而不是按实例访问DoSomthing。

public static int DoSomthing(int _test)
  {
    int bla = _test + 1;
    return bla;
  }

如果你想在gameobject上应用任何一个类作为组件,那么它就是从MonoBehaviour派生出来的。就像你想将Touch脚本附加到游戏对象一样,然后执行此操作

public class Touch : MonoBehaviour {
}