所以我有一个包含我所有课程的文件:
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);
不构建课程。
答案 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 {
}