我在Unity中制作了一个2d游戏,我正在使用此代码实例化敌人
void Update()
{
StartCoroutine("EnemyInstance");
}
IEnumerator EnemyInstance()
{
float positionRandoming = Random.Range(1f, 2f);
if (positionRandoming < 1.5f)
{
Instantiate(enemyPrefeb, new Vector3(-4.3f, -1.45f, 1f), position1.rotation, transform.parent);
enemyScript.pos = 1;
}
if (positionRandoming >= 1.5f)
{
Instantiate(enemyPrefeb, new Vector3(3.6f, -1.45f, 1f), position2.rotation, transform.parent);
enemyScript.pos = 2;
}
yield return new WaitForSeconds(2.4f);
}
在这段代码中,IENumator方法正在执行它们的工作,但没有产生返回新的WaitFor秒。意味着如果我在Unity中运行它,敌人会在每一帧中实例化。我该怎么解决呢?
你想每2.4秒繁殖一次你的敌人吗?
上面的代码返回新的WaitForSeconds(2.4f)
在每一帧立即运行,无需任何等待,下面的代码等待2.4秒,在您的情况下为空。把你的代码放在下面,你就可以开始了。
void Update()
{
StartCoroutine("EnemyInstance");
}
IEnumerator EnemyInstance()
{
yield return new WaitForSeconds(2.4f);
float positionRandoming = Random.Range(1f, 2f);
if (positionRandoming < 1.5f)
{
Instantiate(enemyPrefeb, new Vector3(-4.3f, -1.45f, 1f), position1.rotation, transform.parent);
enemyScript.pos = 1;
}
if (positionRandoming >= 1.5f)
{
Instantiate(enemyPrefeb, new Vector3(3.6f, -1.45f, 1f), position2.rotation, transform.parent);
enemyScript.pos = 2;
}
}
每次调用update函数都会启动一个新的协同程序。
您可以添加bool值来检查协同程序当前是否正在运行。
private bool spawningEnemy = false;
void Update()
{
if(!spawningEnemy) {
spawningEnemy = true;
StartCoroutine("EnemyInstance");
}
}
IEnumerator EnemyInstance()
{
float positionRandoming = Random.Range(1f, 2f);
if (positionRandoming < 1.5f)
{
Instantiate(enemyPrefeb, new Vector3(-4.3f, -1.45f, 1f), position1.rotation, transform.parent);
enemyScript.pos = 1;
}
if (positionRandoming >= 1.5f)
{
Instantiate(enemyPrefeb, new Vector3(3.6f, -1.45f, 1f), position2.rotation, transform.parent);
enemyScript.pos = 2;
}
yield return new WaitForSeconds(2.4f);
spawningEnemy = false;
}
我不是Unity开发者,但我相信有两个问题:
Update
调用它-所以每次,您都再次启动协程我怀疑您想从Start
而不是Update
调用它,并在方法中加入一个循环:
IEnumerator EnemyInstance()
{
while (true)
{
float positionRandoming = Random.Range(1f, 2f);
if (positionRandoming < 1.5f)
{
Instantiate(enemyPrefeb, new Vector3(-4.3f, -1.45f, 1f), position1.rotation, transform.parent);
enemyScript.pos = 1;
}
if (positionRandoming >= 1.5f)
{
Instantiate(enemyPrefeb, new Vector3(3.6f, -1.45f, 1f), position2.rotation, transform.parent);
enemyScript.pos = 2;
}
yield return new WaitForSeconds(2.4f);
}
}
我有一个工作簿,宏不起作用,基本上只是从单元格A3上下复制每个工作表中的值,然后连续将每个值粘贴到新的摘要工作表中。 当我真的创建了一个新工作簿,并将我所有的工作表复制粘贴到新工作簿中时,一切都很好。但如果我继续写旧的工作手册,就会出现错误 选择工作表类的方法失败 在我使用与我复制的完全相同的工作表创建的其他2个工作簿中,它没有失败...为什么是这个特定的工作簿? 我关闭所有其他工作簿以避免Act
首先,让我们来理解一个概念:什么是前端?与客户做交互的那部分就是前端,也因此,它可以称为客户端。而前端不仅仅局限于浏览器前的用户,还可以是桌面应用,混合应用。也因此,你会发现前端是一个特别大的领域。
我最近升级到了优胜美地,我的maven停止了工作。我想这是因为我的环境变量没有设置,所以我按照这篇文章创建了一个environment.plist文件。 通过launchd.conf设置环境变量在OS X Yosemite/El Capitan/MacOS Sierra中不再有效? 但是我仍然在for Maven中找不到命令,并且由于某种原因没有设置$PATH,其他的则设置了 mac-r4498:
正在更新属性文件:/home/mehmet/works/netbeansprojects/hsm_java/build/built-clean.属性删除目录/home/mehmet/works/netbeansprojects/hsm_java/build 清洁: 初始化: 已创建目录:/home///netbeansprojects/hsm_java/build/empty 已创建目录:/hom
当我运行此命令时,java--version仍然在cmd终端中工作,但它们显示我添加您的路径java_home。我不确定为什么给我这个错误。我正在使用vs代码
我正在看freeCodeCamp的一个关于flappy bird游戏的教程https://www.youtube.com/watch?v=pufko5eg8nc 但我正在使用一个类来学习更多关于它的知识。 问题是,图像没有加载到draw()函数的循环中。如果我将drawImage()放在循环之外(像其他图像一样),那么它们就可以工作。 控制台中没有错误,for循环中的两个图像没有出现,我只是不明白