是否可以在Unity Program Start上调用函数?

Wil*_*rty 9 c# unity-game-engine

我想知道在Unity中是否有一种方法,当我在场景上启动我的程序时它首先触发一个函数,我应该补充一点,我希望这个函数无论我在哪个场景都能工作.所以一个简单的启动函数不会削减它.不确定Unity中是否可以这样做?

public void ProgramBegins()
{
    //FIRES FIRST ON ANY SCENE
    //DO STUFF
}
Run Code Online (Sandbox Code Playgroud)

gre*_*lio 25

RuntimeInitializeOnLoadMethodAttribute可以帮到你:)

using UnityEngine;

class MyClass
{
    [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)]
    static void OnBeforeSceneLoadRuntimeMethod()
    {
        Debug.Log("Before scene loaded");
    }
}
Run Code Online (Sandbox Code Playgroud)


maZ*_*ZZu 3

在这里您可以找到unity中所有函数的执行顺序:http://docs.unity3d.com/Manual/ExecutionOrder.html

Awake是在独立应用程序中执行的第一个函数。要运行它,您需要有一个GameObject包含该Awake函数的附加脚本。如果您希望它无论场景如何都运行,则应将其添加到每个场景中。

您仍然需要决定游戏的启动场景是什么。GameObject因此,如果您实际上希望它仅在程序的开头运行,那么添加 就足够了。

  • 我不确定这是否是用户所要求的。执行顺序是每个脚本,而不是应用程序。 (2认同)