C# 如何在Unity3D c中声明/使用getcomponent变量#

C# 如何在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

我已经试了几个小时了,现在正在琢磨如何完成这个任务

我需要从脚本中获取一个变量,并将其更改为+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;
    }
}

你的剧本里没有错。您正确地获取了组件,并且正确地增加了值。您可能看不到更新值的原因是,您在
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;
    }
}