在Unity中是否有一种使用不涉及gameObject的不同脚本函数的方法?

huangapple go评论72阅读模式
英文:

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.

huangapple
  • 本文由 发表于 2023年6月22日 03:32:10
  • 转载请务必保留本文链接:https://go.coder-hub.com/76526569.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定