微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如何在所有场景中运行一个方法——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);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?