首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用unity c#的游戏中的分数问题

使用unity c#的游戏中的分数问题
EN

Stack Overflow用户
提问于 2021-01-08 19:43:57
回答 1查看 166关注 0票数 0

在我的游戏中,玩家必须收集一枚硬币。问题是,当玩家死亡并开始一个新的游戏时,硬币的数量不会被重置。例如:

开始新游戏并收集15枚硬币,然后死亡

开始新游戏,我将硬币数量设置为15,而不是0

我怎么解决这个问题呢??

用于在屏幕上显示分数的脚本:

代码语言:javascript
运行
复制
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class Score : MonoBehaviour
{
    Coin coin;
    void Update()
    {
        coin = FindObjectOfType<Coin>();
        GetComponent<Text>().text = coin.GetScore().ToString();
    }

用于将硬币添加到得分中的脚本:

代码语言:javascript
运行
复制
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Coin : MonoBehaviour
{
    float speed = 10f;
    public static int score = 0;
    void Update()
    {
        transform.position += Vector3.left * speed * Time.deltaTime;
    }
    private void OnTriggerEnter2D(Collider2D collision)
    {
        score += 1;
    }
    public int GetScore()
    {
        return score;
    }
}

我还需要说的是,我用这个分数和PlayerPrefs胡闹,以制造一些高分数的概念,但我删除了我做的每一个PlayerPrefs。非常感谢。

EN

回答 1

Stack Overflow用户

发布于 2021-01-08 19:48:08

这是一行有问题的代码:

代码语言:javascript
运行
复制
public static int score = 0;

声明为"static“的变量将和运行时一样持续很长时间,即使它所绑定的对象被销毁(它是在所有coin对象之间共享的值)。

理想情况下,您应该将其设置为非静态的(这正是Unity所期望的)。

代码语言:javascript
运行
复制
public int score = 0;

如果您在玩家死亡时重新创建Coin对象,unity将为您处理清理工作。

或者,您可以将"Reset“方法添加到Coin类中...

代码语言:javascript
运行
复制
public int GetScore()
{
    return score;
}

public void Reset()
{
    score = 0;
}

I answered a question,它更详细地介绍了静力学,可能会引起人们的兴趣。

通常当一个类有变量时,每次你创建一个新的类实例,它都会得到每个变量的副本。

(您可以创建两个Animal类,并为每个类提供不同的Name)

static变量是不同的。它们都共享同一个变量,而不是每个实例都有自己的变量副本。

所以如果你设置了animal1.StaticName,你也需要修改animal2.StaticName。更重要的是,您甚至不需要创建动物,只需直接设置Animal.StaticName即可。

所以..。静态变量可以读取/设置(并且可以执行静态方法),即使您还没有创建类的实例。

还有..。如果你决定保持分数不变,你不需要找到一个特定的对象来获得分数……

代码语言:javascript
运行
复制
void Update()
{
    GetComponent<Text>().text = Coin.score.ToString();
}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65628338

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档