我一直在四处寻找并试图找到这个问题的答案但却一无所获。我正在尝试创建一个简单的点击游戏,但一开始就陷入困境......这不是很好。我想要做的是在触摸后给予玩家钱(目前只需加上+ 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);
}
}
}
}
}
我对Unity有点新意,所以我们将不胜感激!谢谢!
答案 0 :(得分:1)
要实例化对象使用功能:
GameObject go = Instantiate(tapText, fullPos, Quaternion.identity) as GameObject;
也不要在Update中创建动画,因为这会导致问题并影响性能。
您的 TapTextMovement 类可能存在问题,当您实例化对象时,它会复制所有脚本,因此您应该重置 frameCount ,< 开始上的em>修饰符,或完全更改您的脚本。
因为如果您复制场景中的现有对象,它应该保存其脚本值,尝试创建一个预制件并从中进行实例化。
现在它似乎在实例化之后删除了你的对象,因为 frameCount 已经超过60。
检查是否有效。