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

时间:2015-09-22 02:24:57

标签: c# unity3d

我已经尝试了几个小时,并且正在摸索如何完成这项工作。

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

1 个答案:

答案 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)开头