首页 > 解决方案 > Unity 中针对特定项目的 C# 编码问题

问题描述

我正在使用 Unity 为学校项目制作一个简单的游戏。游戏的目的是控制一个球并捡起硬币。游戏有3个场景。我用 C# 编写了一些代码来计算我捡到的硬币,并设置一个条件来检查是否所有的硬币都被捡起,如果是这样,屏幕中央会出现一个 wintext。

它适用于第一个场景(lvl1)但不适用于其他 2 个。所有 3 个场景都有不同数量的硬币。C# 对我来说是新的,我尝试了各种组合,但没有奏效。

如何重新编写此代码,以便在每个场景/关卡中拾取正确数量的硬币后出现 wintext?

这是我的代码:

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

public class PlayerController : MonoBehaviour
{

    public float speed;
    public Text countText;
    public Text winText;

    private Rigidbody rb;
    private int count;

    void Start()
    {
        rb = GetComponent<Rigidbody>();
        count = 0;
        SetCountText();
        winText.text = "";
    
    }

    void FixedUpdate()
    {
        float moveHorizontal = Input.GetAxis("Horizontal");
        float moveVertical = Input.GetAxis("Vertical");

        Vector3 movement = new Vector3(moveHorizontal, 0.0f, moveVertical);

        rb.AddForce(movement * speed);
    }

    void OnTriggerEnter(Collider other)
    {
        if (other.gameObject.CompareTag("Pick Up"))
        {
            other.gameObject.SetActive(false);
            count = count + 1;
            SetCountText();
  
        }
    }

    void SetCountText()
    {
        countText.text = "Coins: " + count.ToString();
        if (count >= 2)
        {
            winText.text = "You Win!";
        }
       
    }

}

标签: c#unity3d

解决方案


创建一个新的公共变量

...
public float speed;
public Text countText;
public Text winText;
public int numberOfCoinsToWin;
... 

记得在编辑器中为每个场景设置这个新值

在您的条件下使用变量。

if (count >= numberOfCoinstoWin)
{
    winText.text = "You Win!";
}

听起来您对 C# 和一般编程缺乏非常基本的了解。您可以研究以下内容以使您的生活更轻松:

  • 变量
  • 控制流
  • 访问修饰符
  • 课程(计算机科学)
  • 面向对象

使用 Unity 学习 C# 也不是很好。你会错过很多基础知识。我建议在没有统一的情况下学习 C# 一周或两周然后回来。


推荐阅读