英文:
Is there a way to use different script functions without using gameObject in Unity?
问题
我创建了一个包含在CommonUtils类中的C#文件,其中包含了一些实用函数。我想从不同的C#文件中使用这些函数。是否有一种方法可以在不使用gameObject的情况下访问或导入它们?或者我只能创建一个空的游戏对象,将实用程序脚本添加到它上面,然后访问gameObject,然后访问CommonUtils脚本?
英文:
I made a c# file that containes utils functions in CommonUtils class. I want to use these functions from different c# files. Is there a way to access or import them without using gameObject? Or I just have to throw an empty game object, add util script to it and access gameObject and then CommonUtils script?
答案1
得分: 3
你需要的是一个实现公共静态函数的静态类,你可以在其他类中使用这些函数。
这是一个SceneLoader
类的示例,任何其他类都可以使用它来加载场景:
public static class SceneLoader
{
// 通过名称加载场景
public static void LoadScene(string sceneName)
{
...
}
// 通过构建索引加载场景
public static void LoadScene(int sceneBuildIndex)
{
...
}
}
然后,你可以在其他类中像这样使用该类中的函数:
SceneLoader.LoadScene("my scene");
同样的原则也适用于你的CommonUtils
类。
如果出于某种原因你需要让这个类继承自Monobehaviour
,考虑应用单例模式,以便在不需要每次引用游戏对象的情况下访问实例。
英文:
What you need is a static class that implements public static functions that you would use in your other classes.
Here is an example of SceneLoader
class that any other class can use to load scenes:
public static class SceneLoader
{
// Load scene by name
public static void LoadScene(string sceneName)
{
...
}
// Load scene by build index
public static void LoadScene(int sceneBuildIndex)
{
...
}
}
You would then use the functions within this class from other classes like so:
SceneLoader.LoadScene("my scene");
The same principle applies to your CommonUtils
class.
If for some reason you need this class to inherit from Monobehaviour
, consider applying the Singleton pattern to it in order to access the instance without the need of referencing the game object each time.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论