【发布时间】:2020-07-22 17:04:57
【问题描述】:
我正在尝试构建一个类似飞鸟的游戏,并且我正在尝试生成敌方鸟类和金币,因此我编写了 C# 代码并制作了预制件,但是当我运行鸟时,硬币并没有重生。
这是重生代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SpawnPlayer : MonoBehaviour
{
public GameObject GameObjectToSpawn;
private GameObject Clone;
public float timeToSpawn = 4f;
public float FirstSpawn = 10f;
// Update is called once per frame
void Update()
{
FirstSpawn -= Time.deltaTime;
if (FirstSpawn <= 0f)
{
Clone = Instantiate(GameObjectToSpawn, gameObject.transform.localPosition, Quaternion.identity) as GameObject;
FirstSpawn = timeToSpawn;
}
}
}
这是我重生第一只敌鸟的地方:
【问题讨论】:
-
从你的代码中我看不出它为什么不应该......你在 PlayMode 中运行它对吗? ^^ 您在控制台中是否遇到任何错误?顺便说一句,您可以摆脱
as GameObject..Instantiate无论如何都会返回给定预制件的类型。另请注意,这将始终覆盖Clone字段..如果您需要它们,请使用例如List<GameObject>... 是否可以在运行时销毁GameObjectToSpawn中引用的对象? -
它可能正在克隆,但是您是否将新对象的位置设置为原始对象位置,仅此而已?您希望这个新对象出现在哪里?
-
@derHugo,我在控制台中没有任何错误。在给定时间后,它也不会重生鸟类或硬币
-
你能看到 Inspector 中的 FirstSpawn 值在减少吗?
-
@jai 来自您的新屏幕截图:它似乎是生成的,但离屏幕很远......你可以从字面上看到左下角的小微岛......它真的应该是那里?您是否尝试将其放置在实际应该生成的位置并使用
transform.position代替Instantiate?