2017-08-30 9 views
0

我一直在四处寻找,试图找到这个问题的答案,但什么也没找到。我正在尝试创建一个简单的答题器游戏,但是一开始就卡住了......这不太好。我想要做的是在触摸后给玩家钱(现在只是加1 +),并在文本对象中产生“+ 1 $”。似乎没有出现对象。我也做了一个“动画”,我不确定它是否做得很好。这两个类:触摸后没有实例化的对象

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); 
      } 
     } 
    } 
} 
} 

我是一个有点新的团结,帮助每一位将不胜感激!谢谢!

+0

只是一个建议,不要在**更新**中创建动画,因为它会影响性能,因为这些更改每帧渲染一次执行 –

+0

是否有替代方法?为什么不这样做?我想改变它的位置每帧一秒或两秒,然后删除它。每个框架的对象将上升一个#的不情愿,为什么我现在想这样? –

回答

1

实例化对象的使用功能:

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

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

有可能是你TapTextMovement类的问题,当你实例化对象时,它会将所有它的脚本,所以你应该在开始重置,帧数修改,或者完全改变你的脚本。

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

现在看来只是实例作为,帧数后删除您的对象已经超过60

检查其是否正常工作。

+0

我甚至没有想过我的剧本,现在我意识到了。我试图复制的文本对象早已消失,它自己也被删除了。实例化预制可能会解决我的问题。谢谢! –