如何在一个级别中仅收集一次金币

问题描述 投票:-1回答:1

我的游戏中有一些关卡。其中一些关卡包含金币。我需要玩家只能收集一次。如果用户再次玩同一级别的硬币,则不应再次出现。 (我正在使用unity和c#)

这里是附在硬币上的脚本:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Goldcoin : MonoBehaviour
{
    void OnTriggerEnter(Collider other)
    {
        if (other.CompareTag("Player"))
         {
           SaveManager.Instance.state.goldcoin++;
           SaveManager.Instance.Save();
           Destroy(gameObject);
         }
    }
}
c# unity3d
1个回答
0
投票

您想要的是场景之间的数据持久性。

[Data persistence表示即使关闭应用程序或更改场景,此数据也将保留,不会被删除。

如果只希望在同一程序执行中具有持久性,则可以使用DontDestroyOnLoad来创建一个不会在每次场景加载时都被销毁的对象。

但是,如果要在多次执行应用程序之间保留此信息,则需要其他内容,例如文件。您可以通过多种方式存储当前场景(甚至整个游戏)的状态,最简单的一种是:

  1. 创建一个将保留场景/级别信息的Serializable类。
  2. 当您要保存更改时,将该类序列化为文件(例如JSON)。
  3. 重新启动游戏时反序列化该文件,再次将文件上的信息转换为虚拟类。

如果您不熟悉JSON,可以检查我的JsonManager存储库。

© www.soinside.com 2019 - 2024. All rights reserved.