C# 如何在Unity3D c中声明/使用getcomponent变量#
我已经试了几个小时了,现在正在琢磨如何完成这个任务 我需要从脚本中获取一个变量,并将其更改为+3C# 如何在Unity3D c中声明/使用getcomponent变量#,c#,unity3d,C#,Unity3d,我已经试了几个小时了,现在正在琢磨如何完成这个任务 我需要从脚本中获取一个变量,并将其更改为+3 using UnityEngine; using System.Collections; public class SwordKillScript : MonoBehaviour { public GameObject moneyAmount; private Component MoneyText; void Awake () { money
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;
}
}
你的剧本里没有错。您正确地获取了组件,并且正确地增加了值。您可能看不到更新值的原因是,您在
Start()
函数中只设置了一次文本值
i、 e.txt.text=“$:”+货币代码>
有很多方法可以更新文本。您可以执行以下任一操作
A) 将moneyText
中的txt
变量公开。然后在SwordKillScript
中,可以添加以下行
MoneyText.money+=3//你已经有这个了
moneyAmount.txt.text=“$:”+MoneyText.money//添加此行
B) 在moneyText
类中编写一个方法,修改money
的值
public void ModifyMoney (int howMuch) {
money += howMuch;
txt.text = "$: "+money;
}
从SwordKillScript
C) 你可以把钱
变成一种财产
private int money = 20;
public int Money {
get { return money; }
set {
money = value;
txt.text = "$ : "+money;
}
}
然后,在SwordKillScript
中,您只需增加Money
另外,你的命名规则有点不一致。我可以建议你看一下吗?例如,类名以大写字母开头(MoneyText而不是MoneyText)谢谢,我很高兴它只是一个小东西。再一次,我是一个新手,所以我将继续我的命名约定,谢谢!UnassignedReferenceException:尚未分配MoneyText的变量txt。您可能需要在inspector中指定MoneyText脚本的txt变量。MoneyText.ModifyMoney()(位于Assets/MoneyText.cs:16)UnityEngine.GameObject:SendMessage(字符串)SwordKillScript:OnCollisionInter2D(Collision2D)(位于Assets/SwordKillScript.cs:17)这是我得到的错误,如果你需要我的代码,我会编辑到我原来的帖子。
public void ModifyMoney (int howMuch) {
money += howMuch;
txt.text = "$: "+money;
}
private int money = 20;
public int Money {
get { return money; }
set {
money = value;
txt.text = "$ : "+money;
}
}