c# - 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!";
}
}
}
解决方案
创建一个新的公共变量
...
public float speed;
public Text countText;
public Text winText;
public int numberOfCoinsToWin;
...
记得在编辑器中为每个场景设置这个新值
在您的条件下使用变量。
if (count >= numberOfCoinstoWin)
{
winText.text = "You Win!";
}
听起来您对 C# 和一般编程缺乏非常基本的了解。您可以研究以下内容以使您的生活更轻松:
- 变量
- 控制流
- 访问修饰符
- 课程(计算机科学)
- 面向对象
使用 Unity 学习 C# 也不是很好。你会错过很多基础知识。我建议在没有统一的情况下学习 C# 一周或两周然后回来。
推荐阅读
- node.js - Node.js 服务器请求 /inform
- python - 使用正则表达式匹配不以某个字母开头的单词
- python-3.x - 从盈透证券的 API 获取多个最后报价
- java - 在运行时强制转换之前检查泛型类型
- windows - 最近更新到 Windows 10 后,VMWare 工作站无法在 Windows 10 上运行
- python-3.x - 为什么 Python 3.6.3 csv.read() 会乱序添加数据
- sql - 在sql中表示矩形集合的好方法
- c# - 从 LINQ SQLite 查询 C# 返回实际字符串值
- haskell - 解决单位矩阵的 Haskell 脚本
- java - 在 scala 中扩展 java 类并覆盖方法