触摸后不实例化的对象

Objects not instantiating after touch

我一直在四处寻找并试图找到这个问题的答案,但一无所获。我正在尝试创建一个简单的唱首歌游戏,但一开始就卡住了……这不是很好。我想要做的是在触摸后给玩家钱(目前只是添加 +1$)并在一个文本对象中生成“+1$”。好像对象没有出现。我还做了一个 "animation" 不知道做的好不好。 类:

public class TapTextMovement : MonoBehaviour {

private int frameCount = 0;
private float temp;
public int modifier = 0;

// Use this for initialization
void Start () {

}

// Update is called once per frame
void Update () {
    if (frameCount < 40) {
        temp = this.transform.position.y + 1F * modifier;

        this.transform.position = new Vector3(this.transform.position.x, temp, this.transform.position.z);
    } else if (frameCount < 50) {
        temp = this.transform.position.y + 0.5F * modifier;

        this.transform.position = new Vector3(this.transform.position.x, temp, this.transform.position.z);
    } else if (frameCount < 55) {
        temp = this.transform.position.y + 0.3F * modifier;

        this.transform.position = new Vector3(this.transform.position.x, temp, this.transform.position.z);
    } else if (frameCount < 60) {
        temp = this.transform.position.y + 0.15F * modifier;

        this.transform.position = new Vector3(this.transform.position.x, temp, this.transform.position.z);
    } else {
        Object.Destroy (this);
    }
    frameCount++;
}
}

并且:

public class MoneyTap : MonoBehaviour {

public GameObject money;
private Text moneyText;
public long moneyAmount = 0;
public GameObject tapText;
private Vector2 tempPos;
private Vector3 fullPos;

void Start () {
    moneyText = money.GetComponent<Text> ();
}

// Update is called once per frame
void Update ()
{
    moneyText.text = moneyAmount + "$";

    if (Input.touchCount > 0) {
        if (Input.GetTouch (0).phase == TouchPhase.Began) {

            tempPos = Input.GetTouch(0).position;
            fullPos = new Vector3 (tempPos.x, tempPos.y, 0);


            RaycastHit2D hitInfo = Physics2D.Raycast (Camera.main.ScreenToWorldPoint (Input.GetTouch(0).position), Vector2.zero);
            if (hitInfo) {
                moneyAmount++;;
                Instantiate(tapText, fullPos, Quaternion.identity);
            }
        }
    }
}
}

我对 Unity 有点陌生,所以非常感谢您的帮助!谢谢!

实例化对象使用函数:

GameObject go = Instantiate(tapText, fullPos, Quaternion.identity) as GameObject; 

也不要在更新中创建动画,因为这会导致问题并影响性能。

您的 TapTextMovement class 可能有问题,当您实例化对象时,它会复制所有脚本,因此您应该重置 frameCountmodifier on Start,或完全更改您的脚本。

因为如果您复制场景中的现有对象,它应该保存其脚本值,请尝试创建预制件并从中实例化。

现在它似乎在实例化对象后删除您的对象,因为 frameCount 已经超过 60。

检查是否有效。