我已经尝试了几个小时,并且正在摸索如何完成这项工作。
我需要从脚本中获取变量并将其更改为+3
using UnityEngine;
using System.Collections;
public class SwordKillScript : MonoBehaviour {
public GameObject moneyAmount;
private Component MoneyText;
void Awake () {
moneyAmount = GameObject.FindGameObjectWithTag ("Money");
MoneyText = moneyAmount.GetComponent<moneyText> ();
}
void OnCollisionEnter2D (Collision2D collisonInfo){
Debug.Log ("Killed");
if (collisonInfo.collider.tag != "Player") {
MoneyText.money += 3;
Destroy (collisonInfo.collider.gameObject);
}
transform.position = transform.position;
}
}
这是一把剑的代码,当它击中一个物体时它会摧毁它然后应该为这个脚本增加+3:
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class moneyText : MonoBehaviour {
Text txt;
public int money = 20;
void Start () {
txt = gameObject.GetComponent<Text>();
txt.text= "$: " + money;
}
}
任何帮助都很棒,我希望这个问题易于阅读和回答。
请尽可能简单地回答,并说明原因,我最终会多次做这类事情并且很想知道。
三江源!
BTW:期待错误,我需要知道我能做些什么来完成这项工作 - 再次感谢。编辑:这是我遇到更多麻烦的代码,我已经摆弄了从字符串到getcomponent,HALP的所有内容!
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class MoneyText : MonoBehaviour {
public GUIText txt;
public int money = 20;
public void ModifyMoney () {
money += 3;
txt.text = "$: " + money;
}
}
答案 0 :(得分:0)
你的剧本没有错。您正确获取组件,并正确递增值。您可能没有看到更新值的原因是因为您只在Start()
函数中设置了一次文本的值。
即。 txt.text= "$: " + money;
有很多方法可以更新文字。您可以执行以下任何操作
A)在txt
公开中制作moneyText
变量。然后在SwordKillScript
中,您可以添加以下行
MoneyText.money += 3; //You have this already
moneyAmount.txt.text = "$: "+MoneyText.money; //Add this line
B)在moneyText
类中编写一个修改money
值的方法。
public void ModifyMoney (int howMuch) {
money += howMuch;
txt.text = "$: "+money;
}
从SwordKillScript
C)您可以将money
作为财产。
private int money = 20;
public int Money {
get { return money; }
set {
money = value;
txt.text = "$ : "+money;
}
}
然后,在SwordKillScript
中,您只需要增加Money
P.S。您的命名约定有点偏差。我建议你看一下吗?例如,类名以大写字母(MoneyText而不是moneyText)开头