我正在Unity中编写塔防游戏,但在尝试找出放置塔的方法时遇到了麻烦。我的想法是,当玩家有一定数量的积分时,能够在游戏中单击某个美术资产,并用塔代替该美术资产。不幸的是,即使玩家拥有正确的分数,该对象也不会实例化。我已经确保将预制件链接到脚本,但是它不起作用。我很困惑,代码的逻辑看似正确,但也许有人可以帮我找出问题所在。
public class PointManager : MonoBehaviour
{
public int pointCount;
public Text pointDisplay;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
pointDisplay.text = "Points: " + pointCount;
}
}
public class PlaceTower: MonoBehaviour
{
public GameObject Tower;
private GameObject firstTower;
int placeCost = 25;
private PointManager pointsGained;
// Start is called before the first frame update
void Start()
{
pointsGained = GameObject.FindGameObjectWithTag("Point").GetComponent<PointManager>();
}
// Update is called once per frame
void Update()
{
}
private void OnMouseDown()
{
if (pointsGained.pointCount >= placeCost)
{
firstTower = Instantiate(Tower, transform.position, Quaternion.identity);
//Destroy(this.gameObject);
}
}
}
答案 0 :(得分:0)
我明白了。问题不在于我的代码,而是我的预制件。在文档中,我误解了OnMouseDown
适用于具有碰撞对象的对象。当我在要实例化的对象上设置了一个圆碰撞器时,我没有在要实例化的对象上放置一个对撞机。这样可以立即解决问题。如果没有第二种意见,我将完全忽略一个简单的错误。谢谢,Pac0!