- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我尝试在 unity3d c# 中实现一个评分系统,但似乎什么也没发生我在对象上有对撞机元素并且处于事件状态但是当玩家碰撞时它会破坏物体但它不会增加分数金钱和水
这是触发代码
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class waterpicks : MonoBehaviour {
void OnTriggerEnter ( Collider other ){
if (other.tag == "water_bottle1") {
scoreManager.money += 10;
scoreManager.score += 10;
scoreManager.water += 1;
Destroy(other.gameObject);
}
}
}
这是我的评分系统
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
public class scoreManager : MonoBehaviour {
public static int score;
public static int money;
public static int level;
public static int water;
public static int drinks;
public Text ShowScore;
public Text Showmoney;
public Text Showlevel;
public Text Showwater;
//public static int frutoscoleta;
// Use this for initialization
void Start () {
score = 0;
money = 0;
level = 0;
water = 80;
//PlayerPrefs.GetInt ("scorePref");
//score = PlayerPrefs.GetInt ("scorePref");
//PlayerPrefs.GetInt ("moneyPref");
//money = PlayerPrefs.GetInt ("moneyPref");
//PlayerPrefs.GetInt ("levelPref");
//level = PlayerPrefs.GetInt ("levelPref");
ShowScore.text = "Score : " + score;
Showmoney.text = "Money : " + money;
Showlevel.text = "Level : " + level;
Showwater.text = "Drinks : " + drinks;
}
// Update is called once per frame
void Update () {
//PlayerPrefs.SetInt ("scorePref", score);
//PlayerPrefs.SetInt ("moneyPref", money);
//PlayerPrefs.SetInt ("level", level);
//scoreManager.score++;
//scoreManager.money++;
//scoreManager.level++;
}
}
最佳答案
代码在Start
函数中运行。 Start
函数只运行一次。 Update
函数在每一帧运行,您的增量代码应该在 Start 函数之外运行。
在 Update
函数中更新 Text
组件不是一个好主意,因为您执行的字符串连接很少。将所有增量代码(例如 scoreManager.money += 10
和 scoreManager.score += 10;
替换为一个函数,然后更新 Text
组件在每个函数中,Text
组件仅在相应变量更改时更新。
public class Waterpicks : MonoBehaviour
{
ScoreManager scoreManager;
void Start()
{
GameObject obj = GameObject.Find("ScoreMangerHolder");
scoreManager = obj.GetComponent<ScoreManager>();
}
void OnTriggerEnter(Collider other)
{
if (other.tag == "water_bottle1")
{
scoreManager.incrementMoney(10);
scoreManager.incrementScore(10);
scoreManager.incrementWater(1);
Destroy(other.gameObject);
}
}
}
评分系统
public class ScoreManager : MonoBehaviour
{
public static int score;
public static int money;
public static int level;
public static int water;
public static int drinks;
public Text ShowScore;
public Text Showmoney;
public Text Showlevel;
public Text Showwater;
//public static int frutoscoleta;
// Use this for initialization
void Start()
{
score = 0;
money = 0;
level = 0;
water = 80;
ShowScore.text = "Score : " + score;
Showmoney.text = "Money : " + money;
Showlevel.text = "Level : " + level;
Showwater.text = "Drinks : " + drinks;
}
public void incrementMoney(int amount)
{
money += amount;
Showmoney.text = "Money : " + money;
}
public void incrementScore(int amount)
{
score += amount;
ShowScore.text = "Score : " + score;
}
public void incrementWater(int amount)
{
water += amount;
Showwater.text = "Water : " + water;
}
}
这向您展示了您的代码应该是什么样子。注意类名的大写。我认为你应该这样做。您可以继续添加其他功能来更新我没有包含的文本。您还可以将 incrementXXX
函数设为 static
并直接调用它,但这不是必需的。
关于c# - 尝试添加分数钱或水时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45896943/
假设当加载一个字段时,它是空的。当用户键入 1 时,它表示 0.01,然后他在 1 (10) 之后键入另一个 0,它变为 0.10。当他输入另一个 1 时,它变成 1.10。 就像输入产品的价格一样。
介绍 选择编程语言来投入时间和精力时,有很多因素需要考虑,并且出现一些不确定性:"我可以被录用到某个工作岗位吗?","薪水足够吗?","语言会几个
我有 7.125(双),需要达到 7.15。什么可能是最简单的方法? 找到围捕,但我得到 7.13,请帮助。 谢谢 最佳答案 最简单的方法是乘以 20.0,舍入为整数,然后再次除以 20.0。可以这样
这是一道面试题: Given an amount, say $167.37 find all the possible ways of generating the change for this a
我是一名优秀的程序员,十分优秀!