如何在所有场景中运行一个方法——Unity?

问题描述

有没有这样一种方法可以在所有场景中统一运行一个方法,而无需将数据从一个屏幕传递到另一个屏幕?我想要做的是假设我有一个像秒表一样计算时间的方法。当我打开游戏时,它开始在主屏幕上计数,例如 1,2,3...,当我转到另一个屏幕时,它应该继续运行该方法并继续计数 4,5,6...并且它应该像这样继续我切换到其他屏幕。

我认为可以在脚本中使用静态变量并在游戏对象的所有场景中使用相同的脚本来完成。但我想知道是否有我上面所说的更简单的方法,比如在游戏启动后在所有屏幕上运行一个全局方法

解决方法

这是一个类的例子,它每秒记录一次值。您可以将 ShowCurrentValue 函数更改为您需要的函数。无论场景如何变化,这都会起作用。您可以在项目的任何位置使用相应的功能启动和停止它。

using UnityEngine;
using System.Threading;

public class Counter
{
    public static ulong CurrentValue { get; set; } = 0;
    private static Thread cThread = null;
    public static void Start()
    {
        if (cThread == null)
            cThread = new Thread(ShowCurrentValue);
        cThread.Start();
    }

    public static void Pause()
    {
        if (cThread != null)
        {
            cThread.Abort();
            CurrentValue++;
        }
        cThread = null;
    }

    private static void ShowCurrentValue()
    {
        while (true)
        {
            Debug.Log(CurrentValue);
            Thread.Sleep(1000);
            CurrentValue++;
        }
    }
}
,

我相信您正在寻找 LoadAdditive。还要检查一次文档 LoadAdditive

  SceneManager.LoadScene("YourScene",LoadSceneMode.Additive);

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...